aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2011-07-13 10:32:55 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2011-07-13 10:32:55 +0000
commit9111c715537d8ea0829d6ab7511017ed8658f303 (patch)
tree5ce50b90bee65df51185b106745f02dba5497941 /gcc
parenta19af9c4e401e168f46180adab9210a6fdb1757e (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.dg/torture/20110713-1.c8
-rw-r--r--gcc/tree-vrp.c2
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)