From 43f7e3fec5c7bb5f00e257061c06b9e974a44259 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Sat, 30 May 2015 09:45:30 +0930 Subject: [PATCH] rs6000.c (split_stack_arg_pointer_used_p): Scan correct block for use of r12. * config/rs6000/rs6000.c (split_stack_arg_pointer_used_p): Scan correct block for use of r12. (rs6000_expand_split_stack_prologue): Error on r29 asm global reg. From-SVN: r223878 --- gcc/ChangeLog | 6 ++++++ gcc/config/rs6000/rs6000.c | 9 ++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1d5989831a3..063362d24d1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2015-05-30 Alan Modra + + * config/rs6000/rs6000.c (split_stack_arg_pointer_used_p): Scan + correct block for use of r12. + (rs6000_expand_split_stack_prologue): Error on r29 asm global reg. + 2015-05-29 Dominik Vogt PR target/66215 diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index a590ef4dae4..1201c8672ae 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -23450,7 +23450,7 @@ split_stack_arg_pointer_used_p (void) /* Unfortunately we also need to do some code scanning, since r12 may have been substituted for the pseudo. */ rtx_insn *insn; - basic_block bb = ENTRY_BLOCK_PTR_FOR_FN (cfun); + basic_block bb = ENTRY_BLOCK_PTR_FOR_FN (cfun)->next_bb; FOR_BB_INSNS (bb, insn) if (NONDEBUG_INSN_P (insn)) { @@ -25942,6 +25942,13 @@ rs6000_expand_split_stack_prologue (void) if (!info->push_p) return; + if (global_regs[29]) + { + error ("-fsplit-stack uses register r29"); + inform (DECL_SOURCE_LOCATION (global_regs_decl[29]), + "conflicts with %qD", global_regs_decl[29]); + } + allocate = info->total_size; if (allocate > (unsigned HOST_WIDE_INT) 1 << 31) { -- 2.30.2