OSDN Git Service

2008-04-04 Richard Guenther <rguenther@suse.de>
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 4 Apr 2008 11:29:11 +0000 (11:29 +0000)
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 4 Apr 2008 11:29:11 +0000 (11:29 +0000)
PR middle-end/35823
* fold-const.c (optimize_minmax_comparison): Use the correct
type for the constant in the simplified comparison.

* gnat.dg/pr35823.adb: New testcase.

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

gcc/ChangeLog
gcc/fold-const.c
gcc/testsuite/ChangeLog
gcc/testsuite/gnat.dg/pr35823.adb [new file with mode: 0644]

index edda265..8e8c215 100644 (file)
@@ -1,3 +1,9 @@
+2008-04-04  Richard Guenther  <rguenther@suse.de>
+
+       PR middle-end/35823
+       * fold-const.c (optimize_minmax_comparison): Use the correct
+       type for the constant in the simplified comparison.
+
 2008-04-04  Zuxy Meng <zuxy.meng@gmail.com>
 
        * config/i386/driver-i386.c (describe_cache): Add l2_sizekb argument.
 2008-04-04  Zuxy Meng <zuxy.meng@gmail.com>
 
        * config/i386/driver-i386.c (describe_cache): Add l2_sizekb argument.
index 14470c5..ef95ae3 100644 (file)
@@ -5547,7 +5547,7 @@ optimize_minmax_comparison (enum tree_code code, tree type, tree op0, tree op1)
 {
   tree arg0 = op0;
   enum tree_code op_code;
 {
   tree arg0 = op0;
   enum tree_code op_code;
-  tree comp_const = op1;
+  tree comp_const;
   tree minmax_const;
   int consts_equal, consts_lt;
   tree inner;
   tree minmax_const;
   int consts_equal, consts_lt;
   tree inner;
@@ -5556,6 +5556,7 @@ optimize_minmax_comparison (enum tree_code code, tree type, tree op0, tree op1)
 
   op_code = TREE_CODE (arg0);
   minmax_const = TREE_OPERAND (arg0, 1);
 
   op_code = TREE_CODE (arg0);
   minmax_const = TREE_OPERAND (arg0, 1);
+  comp_const = fold_convert (TREE_TYPE (arg0), op1);
   consts_equal = tree_int_cst_equal (minmax_const, comp_const);
   consts_lt = tree_int_cst_lt (minmax_const, comp_const);
   inner = TREE_OPERAND (arg0, 0);
   consts_equal = tree_int_cst_equal (minmax_const, comp_const);
   consts_lt = tree_int_cst_lt (minmax_const, comp_const);
   inner = TREE_OPERAND (arg0, 0);
index f3b7b6f..1812cd2 100644 (file)
@@ -1,3 +1,8 @@
+2008-04-04  Richard Guenther  <rguenther@suse.de>
+
+       PR middle-end/35823
+       * gnat.dg/pr35823.adb: New testcase.
+
 2008-04-03  Janis Johnson  <janis187@us.ibm.com>
 
        PR c/35712
 2008-04-03  Janis Johnson  <janis187@us.ibm.com>
 
        PR c/35712
diff --git a/gcc/testsuite/gnat.dg/pr35823.adb b/gcc/testsuite/gnat.dg/pr35823.adb
new file mode 100644 (file)
index 0000000..e882aa3
--- /dev/null
@@ -0,0 +1,6 @@
+procedure pr35823 (Arg : in String) is
+   Size : constant Natural := Arg'Size;
+begin
+   null;
+end pr35823;
+