Commit 71156bcc by Jan Hubicka Committed by Jan Hubicka

re PR rtl-optimization/26655 (ICE in ix86_secondary_memory_needed, at config/i386/i386.c:16446)

	PR target/26655
	PR target/28270
	* reload.c (push_reload): Patch out the mismathcing instruction; return early.
	(find_reload): Bail out if the instruction was patched out.

From-SVN: r115928
parent 9659ce8b
2006-08-04 Jan Hubicka <jh@suse.cz>
PR target/26655
PR target/28270
* reload.c (push_reload): Patch out the mismathcing instruction; return early.
(find_reload): Bail out if the instruction was patched out.
2006-08-04 Jan Hubicka <jh@suse.cz>
PR tree-optimization/24888
* tree-inline.c (expand_call_inline): Do not re-record variables.
(declare_inline_vars): Add variable to unexpanded_var_list.
......
......@@ -1254,7 +1254,19 @@ push_reload (rtx in, rtx out, rtx *inloc, rtx *outloc,
{
error_for_asm (this_insn, "impossible register constraint "
"in %<asm%>");
class = ALL_REGS;
/* Avoid further trouble with this insn. */
PATTERN (this_insn) = gen_rtx_USE (VOIDmode, const0_rtx);
/* We used to continue here setting class to ALL_REGS, but it triggers
sanity check on i386 for:
void foo(long double d)
{
asm("" :: "a" (d));
}
Returning zero here ought to be safe as we take care in
find_reloads to not process the reloads when instruction was
replaced by USE. */
return 0;
}
}
......@@ -4133,6 +4145,12 @@ find_reloads (rtx insn, int replace, int ind_levels, int live_known,
}
#endif
/* If we detected error and replaced asm instruction by USE, forget about the
reloads. */
if (GET_CODE (PATTERN (insn)) == USE
&& GET_CODE (XEXP (PATTERN (insn), 0)) == CONST_INT)
n_reloads = 0;
/* Perhaps an output reload can be combined with another
to reduce needs by one. */
if (!goal_earlyclobber)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment