aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2011-06-05 23:19:58 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2011-06-05 23:19:58 +0000
commit679e70dfea4208e65fdc2cec6af2181b5a167bb3 (patch)
tree85a98d21f5d7b3f48d2211e886b9e715d4cb8c4c
parent4d3d7f155a16a02d872ba2252e3a8ec03ba32e65 (diff)
downloadgcc-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
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/sparc/sparc.c22
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)
{