This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

SUBREG problems

 I am working for a new gcc port.I have a small
 with subregs. I am still to confirm whether this
problem is addressed by some body or not.

  On my machine the UNITS_PER_WORD is 2 and I made
longs as 32 bits. So, when they are in registers they 
 need two consecutive registers. I am doing this.

  ALl the opeartions on the machine are 16bit. So, I
splitting the long operations in to two 16 bit

   The problem is with the compare and branch

 I have a test program ......

   int main ()
     register long x = 10;

     if (x == 10)
       return 0;
       return 1;

  Here the problem is when  I access the low part and
 high parts of op for my cmp/branch operations 
  the look like

insn 10 8 11 (set (cc0)
        (compare (subreg:HI (reg/v:SI 53) 0)
            (const_int 0 [0x0]))) 15 {cmphi_1} (nil)

(insn 12 11 13 (set (cc0)
        (compare (subreg:HI (reg/v:SI 53) 1)
            (const_int 10 [0xa]))) 15 {cmphi_1} (nil)

. When they end up in memory both subregs refer to the

 low parts only. if x is at (ix -4), both refer to (ix
-4) to (ix -2) only. I do n't know where it is going

  Do I need to add some thing in the gen_lowpart and
gen_highpart ??

 Could some body point me at the right place where to
look for this problem.......

 Thanks and regards,


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]