diff options
author | uros <uros@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-06-30 19:30:52 +0000 |
---|---|---|
committer | uros <uros@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-06-30 19:30:52 +0000 |
commit | ca03cf1b133d66eb978c68f6dbc345e9aabcba88 (patch) | |
tree | cf5d008b99533b789a9ab08b5f2b935cabf526b3 /gcc/jump.c | |
parent | 792c77aa219dfb75d05cee6412e40b504ddb4c03 (diff) | |
download | linaro-gcc-ca03cf1b133d66eb978c68f6dbc345e9aabcba88.tar.gz linaro-gcc-ca03cf1b133d66eb978c68f6dbc345e9aabcba88.tar.bz2 linaro-gcc-ca03cf1b133d66eb978c68f6dbc345e9aabcba88.zip |
* except.c (emit_note_eh_region_end): New helper function.
(convert_to_eh_region_ranges): Use emit_note_eh_region_end to
emit EH_REGION_END note.
* jump.c (cleanup_barriers): Do not split a call and its
corresponding CALL_ARG_LOCATION note.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@212171 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/jump.c')
-rw-r--r-- | gcc/jump.c | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/gcc/jump.c b/gcc/jump.c index 9418f6529fa..a5e5f528e75 100644 --- a/gcc/jump.c +++ b/gcc/jump.c @@ -121,15 +121,26 @@ rebuild_jump_labels_chain (rtx chain) static unsigned int cleanup_barriers (void) { - rtx insn, next, prev; - for (insn = get_insns (); insn; insn = next) + rtx insn; + for (insn = get_insns (); insn; insn = NEXT_INSN (insn)) { - next = NEXT_INSN (insn); if (BARRIER_P (insn)) { - prev = prev_nonnote_insn (insn); + rtx prev = prev_nonnote_insn (insn); if (!prev) continue; + + if (CALL_P (prev)) + { + /* Make sure we do not split a call and its corresponding + CALL_ARG_LOCATION note. */ + rtx next = NEXT_INSN (prev); + + if (NOTE_P (next) + && NOTE_KIND (next) == NOTE_INSN_CALL_ARG_LOCATION) + prev = next; + } + if (BARRIER_P (prev)) delete_insn (insn); else if (prev != PREV_INSN (insn)) |