OSDN Git Service

Fix for ia64-linux misoptimization.
authorwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 3 May 2000 20:04:31 +0000 (20:04 +0000)
committerwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 3 May 2000 20:04:31 +0000 (20:04 +0000)
* fold-const.c (extract_muldiv, case MAX_EXPR): Don't allow signedness
change.

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

gcc/ChangeLog
gcc/fold-const.c

index 96da99a..d891f18 100644 (file)
@@ -1,3 +1,8 @@
+Wed May  3 12:55:46 2000  Jim Wilson  <wilson@cygnus.com>
+
+       * fold-const.c (extract_muldiv, case MAX_EXPR): Don't allow signedness
+       change.
+
 2000-05-03  Greg McGary  <gkm@gnu.org>
 
        * tree.h (tree_common): Add bounded_flag member.  Remove
index e0d0f00..9568287 100644 (file)
@@ -4402,6 +4402,11 @@ extract_muldiv (t, c, code, wide_type)
       break;
 
     case MIN_EXPR:  case MAX_EXPR:
+      /* If widening the type changes the signedness, then we can't perform
+        this optimization as that changes the result.  */
+      if (ctype != type && TREE_UNSIGNED (ctype) != TREE_UNSIGNED (type))
+       break;
+
       /* MIN (a, b) / 5 -> MIN (a / 5, b / 5)  */
       if ((t1 = extract_muldiv (op0, c, code, wide_type)) != 0
          && (t2 = extract_muldiv (op1, c, code, wide_type)) != 0)