http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48267



Richard Guenther <rguenth at gcc dot gnu.org> changed:



           What    |Removed                     |Added

----------------------------------------------------------------------------

           Keywords|                            |diagnostic

             Status|UNCONFIRMED                 |NEW

   Last reconfirmed|                            |2011.03.24 12:14:46

          Component|c                           |middle-end

     Ever Confirmed|0                           |1

      Known to fail|                            |4.5.2, 4.7.0



--- Comment #1 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-03-24 
12:14:46 UTC ---

Confirmed.  Happens from



#1  0x00000000007307e7 in fold_undefer_overflow_warnings (issue=1 '\001', 

    stmt=0x7ffff5b373c0, code=2)

    at /space/rguenther/src/svn/trunk/gcc/fold-const.c:281

281       warning_at (locus, OPT_Wstrict_overflow, "%s", warnmsg);

(gdb) 

#2  0x0000000000afdfdf in evaluate_stmt (stmt=0x7ffff5b373c0)

    at /space/rguenther/src/svn/trunk/gcc/tree-ssa-ccp.c:2117

2117          fold_undefer_overflow_warnings (is_constant, stmt, 0);

(gdb)

#3  0x0000000000aff7c5 in visit_cond_stmt (stmt=0x7ffff5b373c0, 

    taken_edge_p=0x7fffffffda48)

    at /space/rguenther/src/svn/trunk/gcc/tree-ssa-ccp.c:2443

2443      val = evaluate_stmt (stmt);

(gdb) 

#4  0x0000000000aff8f8 in ccp_visit_stmt (stmt=0x7ffff5b373c0, 

    taken_edge_p=0x7fffffffda48, output_p=0x7fffffffda40)

    at /space/rguenther/src/svn/trunk/gcc/tree-ssa-ccp.c:2501

2501            return visit_cond_stmt (stmt, taken_edge_p);



(gdb) call debug_gimple_stmt (stmt)

if (p_1 < &head_table[1])



which calls fold_binary with &head_table < &head_table[1] and in the end warns

here:



8688                  if (code != EQ_EXPR

8689                      && code != NE_EXPR

8690                      && bitpos0 != bitpos1

8691                      && (pointer_may_wrap_p (base0, offset0, bitpos0)

8692                          || pointer_may_wrap_p (base1, offset1, bitpos1)))

8693                    fold_overflow_warning (("assuming pointer wraparound

does not "

8694                                            "occur when comparing P +- C1

with "

8695                                            "P +- C2"),

8696                                          

WARN_STRICT_OVERFLOW_CONDITIONAL)



because we call pointer_may_wrap_p with base0 which isn't an address

but an object which is bogus.  It's argument has to depend on

indirect_base in which case we stripped an ADDR_EXPR.

Reply via email to