[Bug tree-optimization/31169] Bootstrap comparison error at revision 122821
------- Comment #34 from rth at gcc dot gnu dot org 2007-03-29 18:13 -------
Actually, on second thought, I don't think the sign_bit_p change is legit:
Value ranges after VRP:
-mask_lo_1: [0, +INF] EQUIVALENCES: { } (0 elements)
+mask_lo_1: [0x0ffffffffffffffff, +INF] EQUIVALENCES: { } (0 elements)
lo_2: [0, +INF] EQUIVALENCES: { } (0 elements)
mask_hi_3: VARYING
hi_4: VARYING
@@ -8971,7 +8971,7 @@ mask_hi_38: VARYING
D.30338_41: [-1, 63] EQUIVALENCES: { } (0 elements)
lo_42: [0, +INF] EQUIVALENCES: { } (0 elements)
D.30339_44: [0, 64] EQUIVALENCES: { } (0 elements)
-mask_lo_45: [0, +INF] EQUIVALENCES: { } (0 elements)
+mask_lo_45: [0x0ffffffffffffffff, +INF] EQUIVALENCES: { } (0 elements)
D.30340_47: [22, 22] EQUIVALENCES: { D.30324_17 D.30324_96 } (2 elements)
D.30341_49: VARYING
D.30342_50: VARYING
@@ -9211,7 +9211,7 @@ sign_bit_p (exp, val)
# hi_4 = PHI <hi_34(13), 0(14)>
# mask_hi_3 = PHI <mask_hi_38(13), 0(14)>
# lo_2 = PHI <0(13), lo_42(14)>
- # mask_lo_1 = PHI <0x0ffffffffffffffff(13), mask_lo_45(14)>
+ # mask_lo_1 = PHI <0x0ffffffffffffffff(13), 0x0ffffffffffffffff(14)>
<L13>:;
D.30340_47 = 22;
D.30341_49 = val_102(D)->int_cst.int_cst.high;
@@ -9221,7 +9221,7 @@ sign_bit_p (exp, val)
<L16>:;
D.30343_52 = 22;
D.30344_54 = val_102(D)->int_cst.int_cst.low;
- D.30345_55 = D.30344_54 & mask_lo_1;
+ D.30345_55 = D.30344_54;
if (D.30345_55 == lo_2) goto <L42>; else goto <L20>;
<L20>:;
The VRP change for mask_lo_1 is correct; the two values that the variable
can obtain are 0xffff...ffff and 0x0fff...ffff. But removing the BIT_AND
is incorrect, afaics.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31169
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.
Reply to: