This fixes 3 FAILs. The generic emit_stack_probe (that is used for probe_stack patterns) uses word_mode, which won't fly for -m32 -mpowerpc64. Use probe_stack_address instead, and create the MEM by hand.
2015-01-16 Segher Boessenkool <seg...@kernel.crashing.org> gcc/ * config/rs6000/rs6000.md (probe_stack): Delete. (probe_stack_address): New. --- gcc/config/rs6000/rs6000.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index a97cc1d..570d28f 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -11691,11 +11691,13 @@ (define_insn "blockage" "" "") -(define_expand "probe_stack" - [(set (match_operand 0 "memory_operand" "=m") - (unspec [(const_int 0)] UNSPEC_PROBE_STACK))] +(define_expand "probe_stack_address" + [(use (match_operand 0 "address_operand"))] "" { + operands[0] = gen_rtx_MEM (Pmode, operands[0]); + MEM_VOLATILE_P (operands[0]) = 1; + if (TARGET_64BIT) emit_insn (gen_probe_stack_di (operands[0])); else -- 1.8.1.4 --- gcc/config/rs6000/rs6000.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index a97cc1d..570d28f 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -11691,11 +11691,12 @@ (define_insn "blockage" "" "") -(define_expand "probe_stack" - [(set (match_operand 0 "memory_operand" "=m") - (unspec [(const_int 0)] UNSPEC_PROBE_STACK))] +(define_expand "probe_stack_address" + [(use (match_operand 0 "address_operand"))] "" { + operands[0] = gen_rtx_MEM (Pmode, operands[0]); + if (TARGET_64BIT) emit_insn (gen_probe_stack_di (operands[0])); else -- 1.8.1.4