diff options
author | John Wehle <john@feith.com> | 2000-01-15 20:46:21 +0000 |
---|---|---|
committer | John Wehle <wehle@gcc.gnu.org> | 2000-01-15 20:46:21 +0000 |
commit | b5229628250fef5b776444daf949c14fbc3d3bbe (patch) | |
tree | 8726e2d74e9443fd18e291026f6e44ac6f9fc436 | |
parent | 8430ac57f2728299c0c9b3fc8bba78548815c8dd (diff) | |
download | gcc-b5229628250fef5b776444daf949c14fbc3d3bbe.zip gcc-b5229628250fef5b776444daf949c14fbc3d3bbe.tar.gz gcc-b5229628250fef5b776444daf949c14fbc3d3bbe.tar.bz2 |
gcse.c (insert_insn_end_bb): Use emit_block_insn_before instead of emit_insn_before.
* gcse.c (insert_insn_end_bb): Use emit_block_insn_before
instead of emit_insn_before. Also handle NOTE_INSN_BASIC_BLOCK
when walking backwards to find all the parameter loads when
the basic block ends in a call.
From-SVN: r31437
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/gcse.c | 24 |
2 files changed, 15 insertions, 16 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5bce0b7..3041ab0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +Sat Jan 15 15:41:14 EST 2000 John Wehle (john@feith.com) + + * gcse.c (insert_insn_end_bb): Use emit_block_insn_before + instead of emit_insn_before. Also handle NOTE_INSN_BASIC_BLOCK + when walking backwards to find all the parameter loads when + the basic block ends in a call. + 2000-01-15 Michael Hayes <m.hayes@elec.canterbury.ac.nz> * loop.c (this_loop_info): Delete. @@ -4416,9 +4416,7 @@ insert_insn_end_bb (expr, bb, pre) } #endif /* FIXME: What if something in cc0/jump uses value set in new insn? */ - new_insn = emit_insn_before (pat, insn); - if (BLOCK_HEAD (bb) == insn) - BLOCK_HEAD (bb) = new_insn; + new_insn = emit_block_insn_before (pat, insn, BASIC_BLOCK (bb)); } /* Likewise if the last insn is a call, as will happen in the presence of exception handling. */ @@ -4478,19 +4476,13 @@ insert_insn_end_bb (expr, bb, pre) stopped on the head of the block, which could be a CODE_LABEL. If we inserted before the CODE_LABEL, then we would be putting the insn in the wrong basic block. In that case, put the insn - after the CODE_LABEL. - - ?!? Do we need to account for NOTE_INSN_BASIC_BLOCK here? */ - if (GET_CODE (insn) != CODE_LABEL) - { - new_insn = emit_insn_before (pat, insn); - if (BLOCK_HEAD (bb) == insn) - BLOCK_HEAD (bb) = new_insn; - } - else - { - new_insn = emit_insn_after (pat, insn); - } + after the CODE_LABEL. Also, respect NOTE_INSN_BASIC_BLOCK. */ + if (GET_CODE (insn) == CODE_LABEL) + insn = NEXT_INSN (insn); + if (GET_CODE (insn) == NOTE + && NOTE_LINE_NUMBER (insn) == NOTE_INSN_BASIC_BLOCK) + insn = NEXT_INSN (insn); + new_insn = emit_block_insn_before (pat, insn, BASIC_BLOCK (bb)); } else { |