re PR rtl-optimization/21299 (internal error on invalid asm statement)

PR rtl-optimization/21299
        * reload1.c (reload): Purge invalid ASMs in the final pass.

From-SVN: r117061
This commit is contained in:
Steven Bosscher 2006-09-19 21:22:31 +00:00
parent 9f0b9edcd7
commit d63e138968
2 changed files with 19 additions and 0 deletions

View 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

View 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));