Commit 84ea73e1 by Segher Boessenkool Committed by Segher Boessenkool

Fix recent bug in canonicalize_comparison (PR87026)

The new code testing which way a comparison is best expressed creates
a pseudoregister (by hand) and creates some insns with that.  Such
insns will no longer recog() when pseudo-registers are no longer
aloowed (after reload).  But we have an ifcvt pass after reload (ce3).

This patch simply returns if we cannot create pseudos.


	PR rtl-optimization/87026
	* expmed.c (canonicalize_comparison): If we can no longer create
	pseudoregisters, don't.

From-SVN: r263810
parent 21bf6b2a
2018-08-23 Segher Boessenkool <segher@kernel.crashing.org>
PR rtl-optimization/87026
* expmed.c (canonicalize_comparison): If we can no longer create
pseudoregisters, don't.
2018-08-23 Richard Earnshaw <rearnsha@arm.com> 2018-08-23 Richard Earnshaw <rearnsha@arm.com>
PR target/86951 PR target/86951
......
...@@ -6243,6 +6243,10 @@ canonicalize_comparison (machine_mode mode, enum rtx_code *code, rtx *imm) ...@@ -6243,6 +6243,10 @@ canonicalize_comparison (machine_mode mode, enum rtx_code *code, rtx *imm)
if (overflow) if (overflow)
return; return;
/* The following creates a pseudo; if we cannot do that, bail out. */
if (!can_create_pseudo_p ())
return;
rtx reg = gen_rtx_REG (mode, LAST_VIRTUAL_REGISTER + 1); rtx reg = gen_rtx_REG (mode, LAST_VIRTUAL_REGISTER + 1);
rtx new_imm = immed_wide_int_const (imm_modif, mode); rtx new_imm = immed_wide_int_const (imm_modif, mode);
......
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