This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/55142] [4.8 Regression] internal compiler error: in plus_constant, at explow.c:88
- From: "hjl.tools at gmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Wed, 31 Oct 2012 09:13:46 +0000
- Subject: [Bug middle-end/55142] [4.8 Regression] internal compiler error: in plus_constant, at explow.c:88
- Auto-submitted: auto-generated
- References: <bug-55142-4@http.gcc.gnu.org/bugzilla/>
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;
}