(emit_reload_insns): Error instead of abort
authorRichard Stallman <rms@gnu.org>
Wed, 30 Dec 1992 07:29:06 +0000 (07:29 +0000)
committerRichard Stallman <rms@gnu.org>
Wed, 30 Dec 1992 07:29:06 +0000 (07:29 +0000)
if an asm has a VOIDmode output operand.

From-SVN: r2990

gcc/reload1.c

index 75738ef98bfe1b9097b546517e42ec7680c5a0dd..6d66504f04a922c9b65f9c15c6aaa021468054c1 100644 (file)
@@ -5339,7 +5339,16 @@ emit_reload_insns (insn)
 
          mode = GET_MODE (old);
          if (mode == VOIDmode)
-           abort ();           /* Should never happen for an output.  */
+           {
+             /* VOIDmode should never happen for an output.  */
+             if (asm_noperands (PATTERN (insn)) < 0)
+               /* It's the compiler's fault.  */
+               abort ();
+             error_for_asm (insn, "output operand is constant in `asm'");
+             /* Prevent crash--use something we know is valid.  */
+             mode = word_mode;
+             old = gen_rtx (REG, mode, REGNO (reloadreg));
+           }
 
          /* A strict-low-part output operand needs to be reloaded
             in the mode of the entire value.  */