summaryrefslogtreecommitdiff
path: root/gcc/config/sparc/sparc.md
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/config/sparc/sparc.md')
-rw-r--r--gcc/config/sparc/sparc.md8
1 files changed, 6 insertions, 2 deletions
diff --git a/gcc/config/sparc/sparc.md b/gcc/config/sparc/sparc.md
index 7c8ea8c7d5f..cae6547bab7 100644
--- a/gcc/config/sparc/sparc.md
+++ b/gcc/config/sparc/sparc.md
@@ -331,7 +331,8 @@
(const_int 2)
(const_int 1))
(eq_attr "type" "sibcall")
- (if_then_else (eq_attr "leaf_function" "true")
+ (if_then_else (ior (eq_attr "leaf_function" "true")
+ (eq_attr "flat" "true"))
(if_then_else (eq_attr "empty_delay_slot" "true")
(const_int 3)
(const_int 2))
@@ -6427,7 +6428,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)]