[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[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: