#error Cannot use simple address calculation for stack probing
#endif
-/* The pair of scratch registers used for stack probing. */
-#define PROBE_STACK_FIRST_REG R9_REGNUM
-#define PROBE_STACK_SECOND_REG R10_REGNUM
-
/* Emit code to probe a range of stack addresses from FIRST to FIRST+POLY_SIZE,
inclusive. These are offsets from the current stack pointer. */
return;
}
- rtx reg1 = gen_rtx_REG (Pmode, PROBE_STACK_FIRST_REG);
+ rtx reg1 = gen_rtx_REG (Pmode, PROBE_STACK_FIRST_REGNUM);
/* See the same assertion on PROBE_INTERVAL above. */
gcc_assert ((first % ARITH_FACTOR) == 0);
equality test for the loop condition. */
else
{
- rtx reg2 = gen_rtx_REG (Pmode, PROBE_STACK_SECOND_REG);
+ rtx reg2 = gen_rtx_REG (Pmode, PROBE_STACK_SECOND_REGNUM);
/* Step 1: round SIZE to the previous multiple of the interval. */
;; "FFR token": a fake register used for representing the scheduling
;; restrictions on FFR-related operations.
(FFRT_REGNUM 85)
+ ;; The pair of scratch registers used for stack probing with -fstack-check.
+ ;; Leave R9 alone as a possible choice for the static chain.
+ ;; Note that the use of these registers is mutually exclusive with the use
+ ;; of STACK_CLASH_SVE_CFA_REGNUM, which is for -fstack-clash-protection
+ ;; rather than -fstack-check.
+ (PROBE_STACK_FIRST_REGNUM 10)
+ (PROBE_STACK_SECOND_REGNUM 11)
;; Scratch register used by stack clash protection to calculate
;; SVE CFA offsets during probing.
(STACK_CLASH_SVE_CFA_REGNUM 11)