combine.c (make_extraction): Handle TRUNCATEd INNERs.
authorRichard Sandiford <rdsandiford@googlemail.com>
Sun, 18 Nov 2012 17:32:04 +0000 (17:32 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Sun, 18 Nov 2012 17:32:04 +0000 (17:32 +0000)
gcc/
* combine.c (make_extraction): Handle TRUNCATEd INNERs.

From-SVN: r193600

gcc/ChangeLog
gcc/combine.c

index b9d7a75..a64c25f 100644 (file)
@@ -1,5 +1,9 @@
 2012-11-18  Richard Sandiford  <rdsandiford@googlemail.com>
 
+       * combine.c (make_extraction): Handle TRUNCATEd INNERs.
+
+2012-11-18  Richard Sandiford  <rdsandiford@googlemail.com>
+
        * expr.c (expand_assignment): Don't set MEM_KEEP_ALIAS_SET_P here.
        * emit-rtl.c (set_mem_attributes_minus_bitpos): Handle DECL_BIT_FIELDs,
        using their size instead of the COMPONENT_REF's.
index 5bf08ff..a3583e2 100644 (file)
@@ -7022,6 +7022,8 @@ make_extraction (enum machine_mode mode, rtx inner, HOST_WIDE_INT pos,
       if (new_rtx != 0)
        return gen_rtx_ASHIFT (mode, new_rtx, XEXP (inner, 1));
     }
+  else if (GET_CODE (inner) == TRUNCATE)
+    inner = XEXP (inner, 0);
 
   inner_mode = GET_MODE (inner);