diff options
author | Jakub Jelinek <jakub@gcc.gnu.org> | 2013-12-03 08:29:20 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2013-12-03 08:29:20 +0100 |
commit | 7f2f0a01cab6028542bdd57904a4147d17292d74 (patch) | |
tree | 4a5227f73abdd560a3d6b712c6c89fc4768357e7 /gcc/expmed.c | |
parent | 4dd0ef2765ed87adce1dadc3187d6f7bd7ff29bb (diff) | |
download | gcc-7f2f0a01cab6028542bdd57904a4147d17292d74.zip gcc-7f2f0a01cab6028542bdd57904a4147d17292d74.tar.gz gcc-7f2f0a01cab6028542bdd57904a4147d17292d74.tar.bz2 |
re PR target/58864 (ICE in connect_traces, at dwarf2cfi.c:NNNN)
PR target/58864
* dojump.c (save_pending_stack_adjust, restore_pending_stack_adjust):
New functions.
* expr.h (struct saved_pending_stack_adjust): New type.
(save_pending_stack_adjust, restore_pending_stack_adjust): New
prototypes.
* optabs.c (emit_conditional_move): Call save_pending_stack_adjust
and get_last_insn before do_pending_stack_adjust, call
restore_pending_stack_adjust after delete_insns_since.
* expr.c (expand_expr_real_2): Don't call do_pending_stack_adjust
before calling emit_conditional_move.
* expmed.c (expand_sdiv_pow2): Likewise.
* calls.c (expand_call): Use {save,restore}_pending_stack_adjust.
* g++.dg/opt/pr58864.C: New test.
From-SVN: r205618
Diffstat (limited to 'gcc/expmed.c')
-rw-r--r-- | gcc/expmed.c | 5 |
1 files changed, 0 insertions, 5 deletions
diff --git a/gcc/expmed.c b/gcc/expmed.c index c5123cb..8e63cd5 100644 --- a/gcc/expmed.c +++ b/gcc/expmed.c @@ -3736,11 +3736,6 @@ expand_sdiv_pow2 (enum machine_mode mode, rtx op0, HOST_WIDE_INT d) { rtx temp2; - /* ??? emit_conditional_move forces a stack adjustment via - compare_from_rtx so, if the sequence is discarded, it will - be lost. Do it now instead. */ - do_pending_stack_adjust (); - start_sequence (); temp2 = copy_to_mode_reg (mode, op0); temp = expand_binop (mode, add_optab, temp2, gen_int_mode (d - 1, mode), |