OSDN Git Service

2008-12-07 Richard Guenther <rguenther@suse.de>
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 7 Dec 2008 20:33:07 +0000 (20:33 +0000)
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 7 Dec 2008 20:33:07 +0000 (20:33 +0000)
PR tree-optimization/38405
* tree-vrp.c (simplify_truth_ops_using_ranges): Make sure to
not sign-extend truth values.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@142539 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/tree-vrp.c

index 85cd145..19d56b0 100644 (file)
@@ -1,3 +1,9 @@
+2008-12-07  Richard Guenther  <rguenther@suse.de>
+
+       PR tree-optimization/38405
+       * tree-vrp.c (simplify_truth_ops_using_ranges): Make sure to
+       not sign-extend truth values.
+
 2008-12-07  Eric Botcazou  <ebotcazou@adacore.com>
 
        * tree-sra.c (scalarize_use): Create another temporary with the proper
index 1289c49..a69b216 100644 (file)
@@ -6512,6 +6512,12 @@ simplify_truth_ops_using_ranges (gimple_stmt_iterator *gsi, gimple stmt)
     !useless_type_conversion_p (TREE_TYPE (gimple_assign_lhs (stmt)),
                                TREE_TYPE (op0));
 
+  /* Make sure to not sign-extend -1 as a boolean value.  */
+  if (need_conversion
+      && !TYPE_UNSIGNED (TREE_TYPE (op0))
+      && TYPE_PRECISION (TREE_TYPE (op0)) == 1)
+    return false;
+
   switch (rhs_code)
     {
     case TRUTH_AND_EXPR: