aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2017-06-12 19:30:45 +0000
committerDavid S. Miller <davem@gcc.gnu.org>2017-06-12 12:30:45 -0700
commit6d1ea02a6c3423a000c0d894b2ff673757042398 (patch)
treebef8cf067829fb3f544923af035849ade9907bd5
parent20d5c8731f4bc1aa72ced6cf61016407b74109d5 (diff)
downloadgcc-6d1ea02a6c3423a000c0d894b2ff673757042398.zip
gcc-6d1ea02a6c3423a000c0d894b2ff673757042398.tar.gz
gcc-6d1ea02a6c3423a000c0d894b2ff673757042398.tar.bz2
More refinements to fixing sparc's PR target/80968.
gcc/ PR target/80968 * config/sparc/sparc.md (return expander): Emit frame blockage if function uses alloca. From-SVN: r249134
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/sparc/sparc.md5
2 files changed, 10 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index cc5435d..9be291e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2017-06-12 David S. Miller <davem@davemloft.net>
+
+ PR target/80968
+ * config/sparc/sparc.md (return expander): Emit frame blockage if
+ function uses alloca.
+
2017-06-12 Richard Sandiford <richard.sandiford@linaro.org>
* combine.c (make_field_assignment): Check len rather than the mode
diff --git a/gcc/config/sparc/sparc.md b/gcc/config/sparc/sparc.md
index 737bdb3..5c5096b 100644
--- a/gcc/config/sparc/sparc.md
+++ b/gcc/config/sparc/sparc.md
@@ -7098,7 +7098,10 @@
(define_expand "return"
[(return)]
"sparc_can_use_return_insn_p ()"
- "")
+{
+ if (cfun->calls_alloca)
+ emit_insn (gen_frame_blockage ());
+})
(define_insn "*return_internal"
[(return)]