re PR tree-optimization/48022 (-Wstrict-overflow warning on code that doesn't have overflows)
PR tree-optimization/48022 * fold-const.c (fold_comparison): Don't call fold_overflow_warning for EQ/NE_EXPR. * gcc.dg/pr48022-1.c: New test. * gcc.dg/pr48022-2.c: New test. From-SVN: r170772
This commit is contained in:
parent
93dd46fb79
commit
32bd240907
@ -1,3 +1,9 @@
|
||||
2011-03-08 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR tree-optimization/48022
|
||||
* fold-const.c (fold_comparison): Don't call fold_overflow_warning
|
||||
for EQ/NE_EXPR.
|
||||
|
||||
2011-03-07 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR debug/47991
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* Fold a constant sub-tree into a single node for C-compiler
|
||||
Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
||||
2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
|
||||
2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GCC.
|
||||
@ -8572,10 +8572,11 @@ fold_comparison (location_t loc, enum tree_code code, tree type,
|
||||
&& (TREE_CODE (lhs) != INTEGER_CST
|
||||
|| !TREE_OVERFLOW (lhs)))
|
||||
{
|
||||
fold_overflow_warning ("assuming signed overflow does not occur "
|
||||
"when changing X +- C1 cmp C2 to "
|
||||
"X cmp C1 +- C2",
|
||||
WARN_STRICT_OVERFLOW_COMPARISON);
|
||||
if (code != EQ_EXPR && code != NE_EXPR)
|
||||
fold_overflow_warning ("assuming signed overflow does not occur "
|
||||
"when changing X +- C1 cmp C2 to "
|
||||
"X cmp C1 +- C2",
|
||||
WARN_STRICT_OVERFLOW_COMPARISON);
|
||||
return fold_build2_loc (loc, code, type, variable, lhs);
|
||||
}
|
||||
}
|
||||
|
@ -1,3 +1,9 @@
|
||||
2011-03-08 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR tree-optimization/48022
|
||||
* gcc.dg/pr48022-1.c: New test.
|
||||
* gcc.dg/pr48022-2.c: New test.
|
||||
|
||||
2011-03-07 Jason Merrill <jason@redhat.com>
|
||||
|
||||
* g++.dg/template/nontype20.C: New.
|
||||
|
14
gcc/testsuite/gcc.dg/pr48022-1.c
Normal file
14
gcc/testsuite/gcc.dg/pr48022-1.c
Normal file
@ -0,0 +1,14 @@
|
||||
/* PR tree-optimization/48022 */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -Wstrict-overflow" } */
|
||||
|
||||
int
|
||||
foo (const char *x)
|
||||
{
|
||||
unsigned long l = 1;
|
||||
const unsigned char *s = (const unsigned char *) (const char *) (x);
|
||||
int r = s[0] - ((const unsigned char *) (const char *) ("/"))[0];
|
||||
if (l > 0 && r == 0)
|
||||
r = (s[1] - ((const unsigned char *) (const char *) ("/"))[1]);
|
||||
return r;
|
||||
}
|
11
gcc/testsuite/gcc.dg/pr48022-2.c
Normal file
11
gcc/testsuite/gcc.dg/pr48022-2.c
Normal file
@ -0,0 +1,11 @@
|
||||
/* PR tree-optimization/48022 */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -Wstrict-overflow" } */
|
||||
|
||||
#include <string.h>
|
||||
|
||||
int
|
||||
foo (const char *x)
|
||||
{
|
||||
return strcmp (x, "/");
|
||||
}
|
Loading…
Reference in New Issue
Block a user