diff options
author | Richard Guenther <rguenther@suse.de> | 2011-07-13 10:32:55 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2011-07-13 10:32:55 +0000 |
commit | 9111c715537d8ea0829d6ab7511017ed8658f303 (patch) | |
tree | 5ce50b90bee65df51185b106745f02dba5497941 /gcc | |
parent | a19af9c4e401e168f46180adab9210a6fdb1757e (diff) | |
download | gcc-9111c715537d8ea0829d6ab7511017ed8658f303.zip gcc-9111c715537d8ea0829d6ab7511017ed8658f303.tar.gz gcc-9111c715537d8ea0829d6ab7511017ed8658f303.tar.bz2 |
tree-vrp.c (simplify_conversion_using_ranges): Make sure the final type is integral.
2011-07-13 Richard Guenther <rguenther@suse.de>
* tree-vrp.c (simplify_conversion_using_ranges): Make sure
the final type is integral.
* gcc.dg/torture/20110713-1.c: New testcase.
From-SVN: r176227
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/torture/20110713-1.c | 8 | ||||
-rw-r--r-- | gcc/tree-vrp.c | 2 |
4 files changed, 19 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3e604c4..0ece8d2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2011-07-13 Richard Guenther <rguenther@suse.de> + + * tree-vrp.c (simplify_conversion_using_ranges): Make sure + the final type is integral. + 2011-07-13 Bernd Schmidt <bernds@codesourcery.com> * sched-int.h (struct _dep): Add member cost. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 5d1cab6..58b5931 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2011-07-13 Richard Guenther <rguenther@suse.de> + + * gcc.dg/torture/20110713-1.c: New testcase. + 2011-07-12 Andrew Pinski <pinskia@gmail.com> PR rtl-opt/49474 diff --git a/gcc/testsuite/gcc.dg/torture/20110713-1.c b/gcc/testsuite/gcc.dg/torture/20110713-1.c new file mode 100644 index 0000000..aa446af --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/20110713-1.c @@ -0,0 +1,8 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target ilp32 } */ + +void * +test (unsigned long long x, unsigned long long y) +{ + return (void *) (unsigned int) (x / y); +} diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c index c975a5d..89b1533 100644 --- a/gcc/tree-vrp.c +++ b/gcc/tree-vrp.c @@ -7353,6 +7353,8 @@ simplify_conversion_using_ranges (gimple stmt) double_int innermin, innermax, middlemin, middlemax; finaltype = TREE_TYPE (gimple_assign_lhs (stmt)); + if (!INTEGRAL_TYPE_P (finaltype)) + return false; middleop = gimple_assign_rhs1 (stmt); def_stmt = SSA_NAME_DEF_STMT (middleop); if (!is_gimple_assign (def_stmt) |