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> 2011-03-07 Jakub Jelinek <jakub@redhat.com>
PR debug/47991 PR debug/47991
......
/* Fold a constant sub-tree into a single node for C-compiler /* Fold a constant sub-tree into a single node for C-compiler
Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 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. Free Software Foundation, Inc.
This file is part of GCC. This file is part of GCC.
...@@ -8572,6 +8572,7 @@ fold_comparison (location_t loc, enum tree_code code, tree type, ...@@ -8572,6 +8572,7 @@ fold_comparison (location_t loc, enum tree_code code, tree type,
&& (TREE_CODE (lhs) != INTEGER_CST && (TREE_CODE (lhs) != INTEGER_CST
|| !TREE_OVERFLOW (lhs))) || !TREE_OVERFLOW (lhs)))
{ {
if (code != EQ_EXPR && code != NE_EXPR)
fold_overflow_warning ("assuming signed overflow does not occur " fold_overflow_warning ("assuming signed overflow does not occur "
"when changing X +- C1 cmp C2 to " "when changing X +- C1 cmp C2 to "
"X cmp C1 +- C2", "X cmp C1 +- C2",
......
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> 2011-03-07 Jason Merrill <jason@redhat.com>
* g++.dg/template/nontype20.C: New. * 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