OSDN Git Service

Daily bump.
[pf3gnuchains/gcc-fork.git] / gcc / convert.c
index e3cfaf0..1a6159e 100644 (file)
@@ -769,6 +769,7 @@ convert_to_integer (tree type, tree expr)
                   (Otherwise would recurse infinitely in convert.  */
                if (TYPE_PRECISION (typex) != inprec)
                  {
+                   tree otypex = typex;
                    /* Don't do unsigned arithmetic where signed was wanted,
                       or vice versa.
                       Exception: if both of the original operands were
@@ -806,10 +807,12 @@ convert_to_integer (tree type, tree expr)
                      typex = unsigned_type_for (typex);
                    else
                      typex = signed_type_for (typex);
-                   return convert (type,
-                                   fold_build2 (ex_form, typex,
-                                                convert (typex, arg0),
-                                                convert (typex, arg1)));
+
+                   if (TYPE_PRECISION (otypex) == TYPE_PRECISION (typex))
+                     return convert (type,
+                                     fold_build2 (ex_form, typex,
+                                                  convert (typex, arg0),
+                                                  convert (typex, arg1)));
                  }
              }
          }