convert.c (convert_to_integer): Don't do unsigned unless result or both inputs are unsigned.
* convert.c (convert_to_integer): Don't do unsigned unless result or both inputs are unsigned. From-SVN: r40014
This commit is contained in:
parent
ac50176d22
commit
3cc247a81a
@ -1,5 +1,8 @@
|
||||
Fri Feb 23 15:28:39 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
|
||||
|
||||
* convert.c (convert_to_integer): Don't do unsigned unless result or
|
||||
both inputs are unsigned.
|
||||
|
||||
* fold-const.c (fold_convert): Don't call size_int_type_wide if
|
||||
input overflows.
|
||||
|
||||
|
@ -310,13 +310,13 @@ convert_to_integer (type, expr)
|
||||
{
|
||||
/* Don't do unsigned arithmetic where signed was wanted,
|
||||
or vice versa.
|
||||
Exception: if either of the original operands were
|
||||
Exception: if both of the original operands were
|
||||
unsigned then can safely do the work as unsigned.
|
||||
And we may need to do it as unsigned
|
||||
if we truncate to the original size. */
|
||||
typex = ((TREE_UNSIGNED (TREE_TYPE (expr))
|
||||
|| TREE_UNSIGNED (TREE_TYPE (arg0))
|
||||
|| TREE_UNSIGNED (TREE_TYPE (arg1)))
|
||||
|| (TREE_UNSIGNED (TREE_TYPE (arg0))
|
||||
&& TREE_UNSIGNED (TREE_TYPE (arg1))))
|
||||
? unsigned_type (typex) : signed_type (typex));
|
||||
return convert (type,
|
||||
fold (build (ex_form, typex,
|
||||
|
Loading…
Reference in New Issue
Block a user