re PR middle-end/32628 (bogus integer overflow warning)
2008-01-16 Richard Guenther <rguenther@suse.de> PR middle-end/32628 * fold-const.c (fold_convert_const_int_from_int): Do not set overflow if that occured only because of a sign extension change when converting from/to a sizetype with the same precision and signedness. * gcc.dg/overflow-warn-7.c: New testcase. From-SVN: r131579
This commit is contained in:
parent
2e2c7ce237
commit
bdb55eae5e
|
@ -1,3 +1,11 @@
|
|||
2008-01-16 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR middle-end/32628
|
||||
* fold-const.c (fold_convert_const_int_from_int): Do not
|
||||
set overflow if that occured only because of a sign extension
|
||||
change when converting from/to a sizetype with the same
|
||||
precision and signedness.
|
||||
|
||||
2008-01-16 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
PR debug/34249
|
||||
|
|
|
@ -2122,8 +2122,22 @@ fold_convert_const_int_from_int (tree type, const_tree arg1)
|
|||
t = force_fit_type_double (type, TREE_INT_CST_LOW (arg1),
|
||||
TREE_INT_CST_HIGH (arg1),
|
||||
/* Don't set the overflow when
|
||||
converting a pointer */
|
||||
!POINTER_TYPE_P (TREE_TYPE (arg1)),
|
||||
converting from a pointer, */
|
||||
!POINTER_TYPE_P (TREE_TYPE (arg1))
|
||||
/* or to a sizetype with same signedness
|
||||
and the precision is unchanged.
|
||||
??? sizetype is always sign-extended,
|
||||
but its signedness depends on the
|
||||
frontend. Thus we see spurious overflows
|
||||
here if we do not check this. */
|
||||
&& !((TYPE_PRECISION (TREE_TYPE (arg1))
|
||||
== TYPE_PRECISION (type))
|
||||
&& (TYPE_UNSIGNED (TREE_TYPE (arg1))
|
||||
== TYPE_UNSIGNED (type))
|
||||
&& ((TREE_CODE (TREE_TYPE (arg1)) == INTEGER_TYPE
|
||||
&& TYPE_IS_SIZETYPE (TREE_TYPE (arg1)))
|
||||
|| (TREE_CODE (type) == INTEGER_TYPE
|
||||
&& TYPE_IS_SIZETYPE (type)))),
|
||||
(TREE_INT_CST_HIGH (arg1) < 0
|
||||
&& (TYPE_UNSIGNED (type)
|
||||
< TYPE_UNSIGNED (TREE_TYPE (arg1))))
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2008-01-16 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR middle-end/32628
|
||||
* gcc.dg/overflow-warn-7.c: New testcase.
|
||||
|
||||
2008-01-16 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
|
||||
|
||||
* gcc.dg/tree-ssa/loop-19.c: Require nonpic.
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-Wall" } */
|
||||
|
||||
int f(char *device)
|
||||
{
|
||||
return device == ((char *)0 + ~0UL); /* { dg-bogus "overflow" } */
|
||||
}
|
||||
|
Loading…
Reference in New Issue