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

Reply via email to