------- 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. -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]