multiply across plus for non-sizetype unsigned types.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@33151
138bc75d-0d04-0410-961f-
82ee72b054a4
2000-04-14 Richard Henderson <rth@cygnus.com>
+ * fold-const.c (extract_muldiv): Don't distribute and widen
+ multiply across plus for non-sizetype unsigned types.
+
+2000-04-14 Richard Henderson <rth@cygnus.com>
+
* flow.c (find_auto_inc): Don't autoinc eliminable registers.
If the original source is dead in the incr insn, it's dead now.
if (op1 == 0 || TREE_OVERFLOW (op1))
break;
+ /* If we have an unsigned type is not a sizetype, we cannot widen
+ the operation since it will change the result if the original
+ computation overflowed. */
+ if (TREE_UNSIGNED (ctype)
+ && ! TYPE_IS_SIZETYPE (ctype)
+ && ctype != type)
+ break;
+
/* If we were able to eliminate our operation from the first side,
apply our operation to the second side and reform the PLUS. */
if (t1 != 0 && (TREE_CODE (t1) != code || code == MULT_EXPR))