diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/arm/arm.c | 10 |
2 files changed, 16 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 87fb033..53820c1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2011-03-20 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org> + + PR debug/48023 + * config/arm/arm.c (create_fix_barrier): Do not emit a minipool + between a call and its CALL_ARG_LOCATION note. + 2011-03-19 Kaz Kojima <kkojima@gcc.gnu.org> PR debug/48178 diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index c6ba3fb..4784939 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -12022,6 +12022,16 @@ create_fix_barrier (Mfix *fix, HOST_WIDE_INT max_address) /* Make sure that we found a place to insert the jump. */ gcc_assert (selected); + /* Make sure we do not split a call and its corresponding + CALL_ARG_LOCATION note. */ + if (CALL_P (selected)) + { + rtx next = NEXT_INSN (selected); + if (next && NOTE_P (next) + && NOTE_KIND (next) == NOTE_INSN_CALL_ARG_LOCATION) + selected = next; + } + /* Create a new JUMP_INSN that branches around a barrier. */ from = emit_jump_insn_after (gen_jump (label), selected); JUMP_LABEL (from) = label; |