From 7dc396e20f0efa59cad65d95d53ff1541d9ae807 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Thu, 1 Oct 2015 07:49:18 +0930 Subject: [PATCH] [RS6000] Make -msingle-pic-base remove the ELFv2 global entry code For other ABIs, -msingle-pic-base makes gcc omit loading of the PIC register in function prologues. This patch makes the option affect ELFv2 too. * config/rs6000/rs6000.c (rs6000_emit_prologue): Don't set r2_setup_needed when TARGET_SINGLE_PIC_BASE. (rs6000_output_mi_thunk): Likewise. From-SVN: r228309 --- gcc/ChangeLog | 6 ++++++ gcc/config/rs6000/rs6000.c | 9 +++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6b530481970..7ecb443ed87 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2015-10-01 Alan Modra + + * config/rs6000/rs6000.c (rs6000_emit_prologue): Don't set + r2_setup_needed when TARGET_SINGLE_PIC_BASE. + (rs6000_output_mi_thunk): Likewise. + 2015-09-30 Nathan Sidwell * config/nvptx/mkoffload.c (process): Change offload data format. diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index ae456ff3199..023f6223582 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -24118,13 +24118,13 @@ rs6000_emit_prologue (void) #define NOT_INUSE(R) do {} while (0) #endif - if (DEFAULT_ABI == ABI_ELFv2) + if (DEFAULT_ABI == ABI_ELFv2 + && !TARGET_SINGLE_PIC_BASE) { cfun->machine->r2_setup_needed = df_regs_ever_live_p (TOC_REGNUM); /* With -mminimal-toc we may generate an extra use of r2 below. */ - if (!TARGET_SINGLE_PIC_BASE - && TARGET_TOC && TARGET_MINIMAL_TOC && get_pool_size () != 0) + if (TARGET_TOC && TARGET_MINIMAL_TOC && get_pool_size () != 0) cfun->machine->r2_setup_needed = true; } @@ -26800,7 +26800,8 @@ rs6000_output_mi_thunk (FILE *file, tree thunk_fndecl ATTRIBUTE_UNUSED, /* Ensure we have a global entry point for the thunk. ??? We could avoid that if the target routine doesn't need a global entry point, but we do not know whether this is the case at this point. */ - if (DEFAULT_ABI == ABI_ELFv2) + if (DEFAULT_ABI == ABI_ELFv2 + && !TARGET_SINGLE_PIC_BASE) cfun->machine->r2_setup_needed = true; /* Run just enough of rest_of_compilation to get the insns emitted. -- 2.30.2