From cb275d32f7a80e46acd02ff1b1be6678e42dd292 Mon Sep 17 00:00:00 2001 From: Roger Sayle Date: Sun, 29 May 2005 18:56:42 +0000 Subject: [PATCH] ifcvt.c (noce_emit_move_insn): Construct a SET pattern directly if the RHS isn't suitable for calling... * ifcvt.c (noce_emit_move_insn): Construct a SET pattern directly if the RHS isn't suitable for calling emit_move_insn. Co-Authored-By: Richard Henderson From-SVN: r100329 --- gcc/ChangeLog | 6 ++++++ gcc/ifcvt.c | 6 +++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bb4a382cf5a..33df7c513db 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2005-05-29 Roger Sayle + Richard Henderson + + * ifcvt.c (noce_emit_move_insn): Construct a SET pattern directly + if the RHS isn't suitable for calling emit_move_insn. + 2005-05-29 Kazu Hirata * tree-ssa-ccp.c (ccp_fold): Return immediately after calling diff --git a/gcc/ifcvt.c b/gcc/ifcvt.c index 9575e62b2f1..5c822b64d95 100644 --- a/gcc/ifcvt.c +++ b/gcc/ifcvt.c @@ -691,7 +691,11 @@ noce_emit_move_insn (rtx x, rtx y) optab ot; start_sequence (); - insn = emit_move_insn (x, y); + /* Check that the SET_SRC is reasonable before calling emit_move_insn, + otherwise construct a suitable SET pattern ourselves. */ + insn = (OBJECT_P (y) || CONSTANT_P (y) || GET_CODE (y) == SUBREG) + ? emit_move_insn (x, y) + : emit_insn (gen_rtx_SET (VOIDmode, x, y)); seq = get_insns (); end_sequence(); -- 2.30.2