re PR target/55876 (internal compiler error: in gen_rtx_SUBREG, at emit-rtl.c:776)
authorTom de Vries <tom@codesourcery.com>
Tue, 15 Jan 2013 17:24:55 +0000 (17:24 +0000)
committerTom de Vries <vries@gcc.gnu.org>
Tue, 15 Jan 2013 17:24:55 +0000 (17:24 +0000)
2013-01-15  Tom de Vries  <tom@codesourcery.com>

PR target/55876
* optabs.c (widen_operand): Use gen_lowpart instead of gen_rtx_SUBREG.
Update comment.

From-SVN: r195212

gcc/ChangeLog
gcc/optabs.c

index 75efa7a216df3d7aba02ce5b4cd8eb49318e45cd..d0efc8a0cae7228c9b21445c1676408559baa874 100644 (file)
@@ -1,3 +1,9 @@
+2013-01-15  Tom de Vries  <tom@codesourcery.com>
+
+       PR target/55876
+       * optabs.c (widen_operand): Use gen_lowpart instead of gen_rtx_SUBREG.
+       Update comment.
+
 2013-01-15  Vladimir Makarov  <vmakarov@redhat.com>
 
        PR rtl-optimization/pr55153
index 35b61c1ff001d4acc656e99d6fd1513cf7f62f60..e637a1e9cafa5340b54508258bd361acc1a1f8d6 100644 (file)
@@ -325,10 +325,10 @@ widen_operand (rtx op, enum machine_mode mode, enum machine_mode oldmode,
          && SUBREG_PROMOTED_UNSIGNED_P (op) == unsignedp))
     return convert_modes (mode, oldmode, op, unsignedp);
 
-  /* If MODE is no wider than a single word, we return a paradoxical
+  /* If MODE is no wider than a single word, we return a lowpart or paradoxical
      SUBREG.  */
   if (GET_MODE_SIZE (mode) <= UNITS_PER_WORD)
-    return gen_rtx_SUBREG (mode, force_reg (GET_MODE (op), op), 0);
+    return gen_lowpart (mode, force_reg (GET_MODE (op), op));
 
   /* Otherwise, get an object of MODE, clobber it, and set the low-order
      part to OP.  */