diff options
Diffstat (limited to 'gcc/config/sparc/sparc.md')
-rw-r--r-- | gcc/config/sparc/sparc.md | 8 |
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)] |