PR rtl-optimization/21299
authorsteven <steven@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 19 Sep 2006 21:22:31 +0000 (21:22 +0000)
committersteven <steven@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 19 Sep 2006 21:22:31 +0000 (21:22 +0000)
        * reload1.c (reload): Purge invalid ASMs in the final pass.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@117061 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/reload1.c

index 5d8aeff..835c93d 100644 (file)
@@ -1,3 +1,8 @@
+2006-09-19  Steven Bosscher  <steven@gcc.gnu.org>
+
+       PR rtl-optimization/21299
+       * reload1.c (reload): Purge invalid ASMs in the final pass.
+
 2006-09-19  Steve Ellcey  <sje@cup.hp.com>
 
        PR  28490
index 04f6448..58f77cb 100644 (file)
@@ -1167,6 +1167,20 @@ reload (rtx first, int global)
       {
        rtx *pnote;
 
+       /* Clean up invalid ASMs so that they don't confuse later passes.
+          See PR 21299.  */
+       if (asm_noperands (PATTERN (insn)) >= 0)
+         {
+           extract_insn (insn);
+           if (!constrain_operands (1))
+             {
+               error_for_asm (insn,
+                              "%<asm%> operand has impossible constraints");
+               delete_insn (insn);
+               continue;
+             }
+         }
+
        if (CALL_P (insn))
          replace_pseudos_in (& CALL_INSN_FUNCTION_USAGE (insn),
                              VOIDmode, CALL_INSN_FUNCTION_USAGE (insn));