[Bug target/49423] [4.6/4.7/4.8/4.9 Regression] [arm] internal compiler error: in push_minipool_fix
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Mar 26 10:04:00 GMT 2013
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49423
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jakub at gcc dot gnu.org
--- Comment #17 from Jakub Jelinek <jakub at gcc dot gnu.org> 2013-03-26 10:03:51 UTC ---
Another testcase for -march=armv7-a -O2, ICEs with both trunk and 4.8 branch
(reduced from https://bugzilla.redhat.com/show_bug.cgi?id=927565 ):
const int a, b[4][256], c[4][256];
int
foo (unsigned *x)
{
unsigned d[9];
x[55] = c[0][d[7] & 0xff] ^ c[3][d[7] & 0xff];
d[0] = (b[0][d[7] & 0xff] ^ b[1][(d[7] >> 16) & 0xff] ^ b[2][d[7] & 0xff] ^
b[3][d[7] & 0xff]) ^ a;
x[48] = c[0][d[0] & 0xff] ^ c[1][(d[0] >> 8) & 0xff] ^ c[2][(d[0] >> 16) &
0xff] ^ c[3][d[0] >> 24];
x[49] = c[0][d[1] & 0xff] ^ c[1][(d[1] >> 8) & 0xff] ^ c[2][d[1] & 0xff] ^
c[3][d[1]];
d[4] = b[0][0xff] ^ b[1][8] ^ b[3][d[3] >> 24];
x[44] = c[0][d[4] & 0xff] ^ c[1][(d[4] >> 8) & 0xff] ^ c[2][(d[4] >> 16) &
0xff] ^ c[3][d[4] >> 24];
d[5] ^= d[4];
x[45] = c[0][d[5] & 0xff] ^ c[1][d[5]] ^ c[2][(d[5] >> 16) & 0xff] ^
c[3][(d[5] >> 24) & 0xff];
d[6] ^= d[5];
x[46] = c[0][d[6] & 0xff] ^ c[3][d[6] & 0xff];
d[7] ^= d[6];
x[47] = c[0][d[7]] ^ c[3][(d[7] >> 24) & 0xff];
}
p debug_rtx (fix->insn)
(insn:TI 6 155 156 (set (reg:SI 5 r5 [orig:110 D.4236 ] [110])
(zero_extend:SI (mem/u/c:QI (symbol_ref/u:SI ("*.LC0") [flags 0x2]) [0
S1 A8]))) rh927565.i:6 171 {*arm_zero_extendqisi2_v6}
(nil))
If the PR43137 changes removed the pool_range/neg_pool_range attributes from
the instructions incorrectly, can those be added? I mean, for ICE on valid
code with so many dups it is ridiculous to keep it unsolved for almost 3 years
now, out of which the bug is known for almost 2 years.
More information about the Gcc-bugs
mailing list