]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR rtl-optimization/61215 (ICE in gen_add2_insn, at optabs.c:4718 when building...
authorVladimir Makarov <vmakarov@redhat.com>
Fri, 23 May 2014 01:52:01 +0000 (01:52 +0000)
committerVladimir Makarov <vmakarov@gcc.gnu.org>
Fri, 23 May 2014 01:52:01 +0000 (01:52 +0000)
2014-05-22  Vladimir Makarov  <vmakarov@redhat.com>

PR rtl-optimization/61215
* lra-elelimination.c (lra_eliminate_regs_1): Don't use
simplify_gen_subreg until final substitution.

From-SVN: r210838

gcc/ChangeLog
gcc/lra-eliminations.c

index 5676c0313df8ab599a66360694fc35f33fd6e8d6..8acc942bfbe95af61694f96c0be6a11eb03c3af7 100644 (file)
@@ -1,3 +1,9 @@
+2014-05-22  Vladimir Makarov  <vmakarov@redhat.com>
+
+       PR rtl-optimization/61215
+       * lra-elelimination.c (lra_eliminate_regs_1): Don't use
+       simplify_gen_subreg until final substitution.
+
 2014-05-23  Alan Modra  <amodra@gmail.com>
 
        PR target/61231
index abdf69733103d6c3957cd16c63d9475cf5602c5e..27878203555dd955d267d23699fa93437c678e31 100644 (file)
@@ -565,6 +565,16 @@ lra_eliminate_regs_1 (rtx insn, rtx x, enum machine_mode mem_mode,
              alter_subreg (&x, false);
              return x;
            }
+         else if (! subst_p)
+           {
+             /* LRA can transform subregs itself.  So don't call
+                simplify_gen_subreg until LRA transformations are
+                finished.  Function simplify_gen_subreg can do
+                non-trivial transformations (like truncation) which
+                might make LRA work to fail.  */
+             SUBREG_REG (x) = new_rtx;
+             return x;
+           }
          else
            return simplify_gen_subreg (GET_MODE (x), new_rtx,
                                        GET_MODE (new_rtx), SUBREG_BYTE (x));