[ob] Fix an RTL sharing bug in the ARM backend

Daniel Jacobowitz drow@false.org
Thu Apr 23 15:18:00 GMT 2009


This patch fixes several ICEs when running the testsuite with -mthumb
and -funroll-loops.

I read through the insv pattern several times looking for other
potential sharing problems.  I didn't spot any, but I don't have total
confidence in that either; I don't think this pattern was expecting to
be called after expansion.  But it is (via emit_move_insn for a
complex mode).

Tested on arm-none-eabi, committed as obvious.

-- 
Daniel Jacobowitz
CodeSourcery

2009-04-23  Daniel Jacobowitz  <dan@codesourcery.com>

	* config/arm/arm.md (insv): Do not share operands[0].

Index: config/arm/arm.md
===================================================================
--- config/arm/arm.md	(revision 145603)
+++ config/arm/arm.md	(working copy)
@@ -2280,7 +2280,7 @@
 	  }
       }
 
-    target = operands[0];
+    target = copy_rtx (operands[0]);
     /* Avoid using a subreg as a subtarget, and avoid writing a paradoxical 
        subreg as the final target.  */
     if (GET_CODE (target) == SUBREG)



More information about the Gcc-patches mailing list