summaryrefslogtreecommitdiff
path: root/gcc/jump.c
diff options
context:
space:
mode:
authoruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>2014-06-30 19:30:52 +0000
committeruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>2014-06-30 19:30:52 +0000
commitca03cf1b133d66eb978c68f6dbc345e9aabcba88 (patch)
treecf5d008b99533b789a9ab08b5f2b935cabf526b3 /gcc/jump.c
parent792c77aa219dfb75d05cee6412e40b504ddb4c03 (diff)
downloadlinaro-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.c19
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))