mirror of
https://github.com/gcc-mirror/gcc.git
synced 2026-05-06 14:59:39 +02:00
ifcvt: Reject inner floating modes of a subreg for noce_try_cond_zero_arith [PR123491]
Like the check that was added in r16-6374-g2680785a6d14d7d78550edb8361f3b47eb5c4cb6, except this is for the new code that was added with r16-6436-g92f2a86794ad88d773b102. Basically the code only expects to work with scalar integer modes but forgot to check that. Pushed as obvious after bootstrap/test on x86_64-linux-gnu. PR rtl-optimization/123491 gcc/ChangeLog: * ifcvt.cc (noce_try_cond_zero_arith): Reject non-scalar integer modes for the inner mode of the subreg. Signed-off-by: Andrew Pinski <andrew.pinski@oss.qualcomm.com>
This commit is contained in:
@@ -3213,9 +3213,13 @@ noce_try_cond_zero_arith (struct noce_if_info *if_info)
|
||||
afterwards. */
|
||||
if (GET_CODE (tmp) != SUBREG || !subreg_lowpart_p (tmp))
|
||||
return false;
|
||||
start_sequence ();
|
||||
|
||||
tmp = SUBREG_REG (tmp);
|
||||
/* Only handle integer scalar modes for the inner mode of
|
||||
the subreg. */
|
||||
if (!SCALAR_INT_MODE_P (GET_MODE (tmp)))
|
||||
return false;
|
||||
|
||||
start_sequence ();
|
||||
target = gen_reg_rtx (GET_MODE (tmp));
|
||||
target = noce_emit_cmove (if_info, target, code,
|
||||
XEXP (cond, 0), XEXP (cond, 1),
|
||||
|
||||
Reference in New Issue
Block a user