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