This is the mail archive of the gcc-bugs@gcc.gnu.org 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]
Other format: [Raw text]

[Bug middle-end/55142] [4.8 Regression] internal compiler error: in plus_constant, at explow.c:88


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55142

--- Comment #3 from H.J. Lu <hjl.tools at gmail dot com> 2012-10-31 09:13:46 UTC ---
The code looks like:

  while (dyn->d_tag != 0) 
    {
      if ((d_tag_utype) dyn->d_tag < 34) 
 info[dyn->d_tag] = dyn;
      else if (dyn->d_tag >= 0x70000000 &&
        dyn->d_tag < 0x70000000 + 0)
 info[dyn->d_tag - 0x70000000 + 34] = dyn;
      else if ((d_tag_utype) (0x6fffffff - (dyn->d_tag)) < 16) 
 info[(34 + 0 + (0x6fffffff - (dyn->d_tag)))] = dyn;
      else if ((d_tag_utype) ((Elf32_Word)-((Elf32_Sword) (dyn->d_tag)
<<1>>1)-1) < 3)
 info[((Elf32_Word)-((Elf32_Sword) (dyn->d_tag) <<1>>1)-1) + 34 + 0
      + 16] = dyn;
      else if ((d_tag_utype) (0x6ffffdff - (dyn->d_tag)) < 12)
 info[(0x6ffffdff - (dyn->d_tag)) + 34 + 0
      + 16 + 3] = dyn;
      else if ((d_tag_utype) (0x6ffffeff - (dyn->d_tag)) < 11)
 info[(0x6ffffeff - (dyn->d_tag)) + 34 + 0
      + 16 + 3 + 12] = dyn;
      ++dyn;
    }


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