diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2011-06-05 23:19:58 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2011-06-05 23:19:58 +0000 |
commit | 679e70dfea4208e65fdc2cec6af2181b5a167bb3 (patch) | |
tree | 85a98d21f5d7b3f48d2211e886b9e715d4cb8c4c /gcc | |
parent | 4d3d7f155a16a02d872ba2252e3a8ec03ba32e65 (diff) | |
download | gcc-679e70dfea4208e65fdc2cec6af2181b5a167bb3.zip gcc-679e70dfea4208e65fdc2cec6af2181b5a167bb3.tar.gz gcc-679e70dfea4208e65fdc2cec6af2181b5a167bb3.tar.bz2 |
sparc.c (output_return): Fix thinko in the output of an EH return when delayed branches are disabled.
* config/sparc/sparc.c (output_return): Fix thinko in the output of an
EH return when delayed branches are disabled.
From-SVN: r174670
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/sparc/sparc.c | 22 |
2 files changed, 17 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c1f2a35..98e1c08 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2011-06-05 Eric Botcazou <ebotcazou@adacore.com> + + * config/sparc/sparc.c (output_return): Fix thinko in the output of an + EH return when delayed branches are disabled. + 2011-06-05 Uros Bizjak <ubizjak@gmail.com> * config/i386/i386.md (*movdf_internal_rex64) <case 8,9,10>: diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c index d5d043d..59738af 100644 --- a/gcc/config/sparc/sparc.c +++ b/gcc/config/sparc/sparc.c @@ -4752,18 +4752,20 @@ output_return (rtx insn) machinery occupies the delay slot. */ gcc_assert (! final_sequence); - if (! flag_delayed_branch) - fputs ("\tadd\t%fp, %g1, %fp\n", asm_out_file); - - if (TARGET_V9) - fputs ("\treturn\t%i7+8\n", asm_out_file); - else - fputs ("\trestore\n\tjmp\t%o7+8\n", asm_out_file); + if (flag_delayed_branch) + { + if (TARGET_V9) + fputs ("\treturn\t%i7+8\n", asm_out_file); + else + fputs ("\trestore\n\tjmp\t%o7+8\n", asm_out_file); - if (flag_delayed_branch) - fputs ("\t add\t%sp, %g1, %sp\n", asm_out_file); + fputs ("\t add\t%sp, %g1, %sp\n", asm_out_file); + } else - fputs ("\t nop\n", asm_out_file); + { + fputs ("\trestore\n\tadd\t%sp, %g1, %sp\n", asm_out_file); + fputs ("\tjmp\t%o7+8\n\t nop\n", asm_out_file); + } } else if (final_sequence) { |