aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/sparc/sparc.md
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@gcc.gnu.org>2010-07-02 21:25:28 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2010-07-02 21:25:28 +0000
commit260c8ba389c4a31a7a4d7cfe0fc55492b2f1b74f (patch)
tree07029562f5d29447aaea45407baa8ff6842f7694 /gcc/config/sparc/sparc.md
parent8c54dc55ef8e29da0f1cd3836dbbe705239c415e (diff)
downloadgcc-260c8ba389c4a31a7a4d7cfe0fc55492b2f1b74f.zip
gcc-260c8ba389c4a31a7a4d7cfe0fc55492b2f1b74f.tar.gz
gcc-260c8ba389c4a31a7a4d7cfe0fc55492b2f1b74f.tar.bz2
expr.h (emit_stack_probe): Declare.
* expr.h (emit_stack_probe): Declare. * explow.c (emit_stack_probe): Make global. (anti_adjust_stack_and_probe): Fix comments. * config/sparc/linux.h (STACK_CHECK_STATIC_BUILTIN): Define to 1. * config/sparc/linux64.h (STACK_CHECK_STATIC_BUILTIN): Likewise. * config/sparc/sol2.h (STACK_CHECK_STATIC_BUILTIN): Likewise. * config/sparc/sparc.c: Include except.h. (sparc_emit_probe_stack_range): New function. (output_probe_stack_range): Likewise. (sparc_expand_prologue): Invoke sparc_emit_probe_stack_range if static built-in stack checking is enabled. * config/sparc/sparc-protos.h (output_probe_stack_range): Declare. * config/sparc/sparc.md (UNSPECV_PROBE_STACK_RANGE): New constant. (probe_stack_range): New insn. From-SVN: r161749
Diffstat (limited to 'gcc/config/sparc/sparc.md')
-rw-r--r--gcc/config/sparc/sparc.md10
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/config/sparc/sparc.md b/gcc/config/sparc/sparc.md
index 7eb8ece..301a63c 100644
--- a/gcc/config/sparc/sparc.md
+++ b/gcc/config/sparc/sparc.md
@@ -75,6 +75,7 @@
(UNSPECV_CAS 8)
(UNSPECV_SWAP 9)
(UNSPECV_LDSTUB 10)
+ (UNSPECV_PROBE_STACK_RANGE 11)
])
@@ -6340,6 +6341,15 @@
= adjust_address (operands[0], GET_MODE (operands[0]), SPARC_STACK_BIAS);
})
+(define_insn "probe_stack_range<P:mode>"
+ [(set (match_operand:P 0 "register_operand" "=r")
+ (unspec_volatile:P [(match_operand:P 1 "register_operand" "0")
+ (match_operand:P 2 "register_operand" "r")]
+ UNSPECV_PROBE_STACK_RANGE))]
+ ""
+ "* return output_probe_stack_range (operands[0], operands[2]);"
+ [(set_attr "type" "multi")])
+
;; Prepare to return any type including a structure value.
(define_expand "untyped_return"