Hi all I am porting GCC compiler to new 16 bit target. I am using GCC-4.0.x
For one of the target specific options, I am using PSI mode for representing pointers. If I compile the following test code with this target specific option along with any of the optimization options I am getting an ICE. Command line is >>> target-elf-gcc -mlarge -O2 ICE.c -c ============================================================= volatile double gd[32]; int main () { int i; int j; for (i = 0; i < 32; i++) if (gd[i] != i * 4 ) /* In this statement If I use loop invariant instead of 'i' in LHS or RHS of comparison program is getting compiled */ abort (); exit (0); } ============================================================= ICE I am getting is : internal compiler error: in emit_move_insn, at expr.c:3079 I tried to debug the code and I observed that it occurs in the function emit move instruction Emit_move_instruction(rtx X,rtx Y). Modes of X an Y are PSI and SI respectively and because of that it is failing. I have also provided RTL's for "extendpsisi" and "truncsipsi" (for converting between PSI and SI modes). I also tried to take RTL dump , but didn't get any dump , it is failing before generating RTL's. Any pointers/help/direction in regard would be nice. Is there any target specific stuff I will have to look into? Thanking in advance Regards, Shrirang P Khisti KPIT Cummins Infosystems Ltd