From: wilson Date: Wed, 3 May 2000 20:04:31 +0000 (+0000) Subject: Fix for ia64-linux misoptimization. X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=commitdiff_plain;h=6269027b068ccbaa98d5dd3e24d54ce65eac8960 Fix for ia64-linux misoptimization. * 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 96da99a3a13..d891f18dfad 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Wed May 3 12:55:46 2000 Jim Wilson + + * fold-const.c (extract_muldiv, case MAX_EXPR): Don't allow signedness + change. + 2000-05-03 Greg McGary * tree.h (tree_common): Add bounded_flag member. Remove diff --git a/gcc/fold-const.c b/gcc/fold-const.c index e0d0f00cb4e..95682876252 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -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)