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/expr.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/expr.c')
-rw-r--r-- | gcc/expr.c | 6 |
1 files changed, 0 insertions, 6 deletions
@@ -8801,12 +8801,6 @@ expand_expr_real_2 (sepops ops, rtx target, enum machine_mode tmode, { rtx insn; - /* ??? Same problem as in expmed.c: emit_conditional_move - forces a stack adjustment via compare_from_rtx, and we - lose the stack adjustment if the sequence we are about - to create is discarded. */ - do_pending_stack_adjust (); - start_sequence (); /* Try to emit the conditional move. */ |