Commit 32bd2409 by Jakub Jelinek Committed by Jakub Jelinek

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
parent 93dd46fb
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
......
/* 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);
}
}
......
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.
......
/* 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;
}
/* PR tree-optimization/48022 */
/* { dg-do compile } */
/* { dg-options "-O2 -Wstrict-overflow" } */
#include <string.h>
int
foo (const char *x)
{
return strcmp (x, "/");
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment