aboutsummaryrefslogtreecommitdiff
path: root/4.5.0
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2011-04-10 16:27:59 +0000
committerMike Frysinger <vapier@gentoo.org>2011-04-10 16:27:59 +0000
commitbca2fc317e6b58a72265306de7a4557ee51602ac (patch)
treec41b09fa1546da0bd1473a6a599d467536a47036 /4.5.0
parentUnbreak -U_FORTIFY_SOURCE (bug #361783). (diff)
downloadgcc-patches-bca2fc317e6b58a72265306de7a4557ee51602ac.tar.gz
gcc-patches-bca2fc317e6b58a72265306de7a4557ee51602ac.tar.bz2
gcc-patches-bca2fc317e6b58a72265306de7a4557ee51602ac.zip
backport -msingle-pic-base for PPC support from gcc-4.6 #347281
Diffstat (limited to '4.5.0')
-rw-r--r--4.5.0/gentoo/30_all_gcc-4.5-ppc-msingle-pic-base.patch89
-rw-r--r--4.5.0/gentoo/README.history1
2 files changed, 90 insertions, 0 deletions
diff --git a/4.5.0/gentoo/30_all_gcc-4.5-ppc-msingle-pic-base.patch b/4.5.0/gentoo/30_all_gcc-4.5-ppc-msingle-pic-base.patch
new file mode 100644
index 0000000..217f4f4
--- /dev/null
+++ b/4.5.0/gentoo/30_all_gcc-4.5-ppc-msingle-pic-base.patch
@@ -0,0 +1,89 @@
+https://bugs.gentoo.org/347281
+
+backported from gcc-4.6
+
+From aaf90e018802d80e9cd6ba86c6d03aee1456d737 Mon Sep 17 00:00:00 2001
+From: Joakim Tjernlund <Joakim.Tjernlund@transmode.se>
+Date: Sat, 9 Oct 2010 12:45:39 +0200
+Subject: [PATCH] PowerPC: Add msingle-pic-base option, gcc 4.5.
+
+Do not generate fPIC/fpic prologue nor save
+and restore PIC register.
+
+Signed-off-by: Joakim Tjernlund <Joakim.Tjernlund@transmode.se>
+---
+ gcc/config/rs6000/rs6000.c | 5 +++++
+ gcc/config/rs6000/rs6000.opt | 4 ++++
+ gcc/doc/invoke.texi | 9 ++++++++-
+ 3 files changed, 17 insertions(+), 1 deletions(-)
+
+diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
+index 01e6d71..1552ec1 100644
+--- a/gcc/config/rs6000/rs6000.c
++++ b/gcc/config/rs6000/rs6000.c
+@@ -18553,8 +18553,10 @@ rs6000_reg_live_or_pic_offset_p (int reg)
+ return ((df_regs_ever_live_p (reg)
+ && (!call_used_regs[reg]
+ || (reg == RS6000_PIC_OFFSET_TABLE_REGNUM
++ && !TARGET_SINGLE_PIC_BASE
+ && TARGET_TOC && TARGET_MINIMAL_TOC)))
+ || (reg == RS6000_PIC_OFFSET_TABLE_REGNUM
++ && !TARGET_SINGLE_PIC_BASE
+ && ((DEFAULT_ABI == ABI_V4 && flag_pic != 0)
+ || (DEFAULT_ABI == ABI_DARWIN && flag_pic))));
+ }
+@@ -19305,6 +19307,9 @@ rs6000_emit_prologue (void)
+ insn = emit_insn (generate_set_vrsave (reg, info, 0));
+ }
+
++ if (TARGET_SINGLE_PIC_BASE)
++ return; /* Do not set PIC register */
++
+ /* If we are using RS6000_PIC_OFFSET_TABLE_REGNUM, we need to set it up. */
+ if ((TARGET_TOC && TARGET_MINIMAL_TOC && get_pool_size () != 0)
+ || (DEFAULT_ABI == ABI_V4
+diff --git a/gcc/config/rs6000/rs6000.opt b/gcc/config/rs6000/rs6000.opt
+index 63f0f8c..1c97c94 100644
+--- a/gcc/config/rs6000/rs6000.opt
++++ b/gcc/config/rs6000/rs6000.opt
+@@ -163,6 +163,10 @@ mupdate
+ Target Report RejectNegative InverseMask(NO_UPDATE, UPDATE)
+ Generate load/store with update instructions
+
++msingle-pic-base
++Target Report Var(TARGET_SINGLE_PIC_BASE) Init(0)
++Do not load the PIC register in function prologues
++
+ mavoid-indexed-addresses
+ Target Report Var(TARGET_AVOID_XFORM) Init(-1)
+ Avoid generation of indexed load/store instructions when possible
+diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
+index a1846dc..32e17b6 100644
+--- a/gcc/doc/invoke.texi
++++ b/gcc/doc/invoke.texi
+@@ -765,7 +765,7 @@ See RS/6000 and PowerPC Options.
+ -mstrict-align -mno-strict-align -mrelocatable @gol
+ -mno-relocatable -mrelocatable-lib -mno-relocatable-lib @gol
+ -mtoc -mno-toc -mlittle -mlittle-endian -mbig -mbig-endian @gol
+--mdynamic-no-pic -maltivec -mswdiv @gol
++-mdynamic-no-pic -maltivec -mswdiv -msingle-pic-base @gol
+ -mprioritize-restricted-insns=@var{priority} @gol
+ -msched-costly-dep=@var{dependence_type} @gol
+ -minsert-sched-nops=@var{scheme} @gol
+@@ -15221,6 +15221,13 @@ relocatable, but that its external references are relocatable. The
+ resulting code is suitable for applications, but not shared
+ libraries.
+
++@item -msingle-pic-base
++@opindex msingle-pic-base
++Treat the register used for PIC addressing as read-only, rather than
++loading it in the prologue for each function. The run-time system is
++responsible for initializing this register with an appropriate value
++before execution begins.
++
+ @item -mprioritize-restricted-insns=@var{priority}
+ @opindex mprioritize-restricted-insns
+ This option controls the priority that is assigned to
+--
+1.7.2.2
+
diff --git a/4.5.0/gentoo/README.history b/4.5.0/gentoo/README.history
index 8752c6c..706b36c 100644
--- a/4.5.0/gentoo/README.history
+++ b/4.5.0/gentoo/README.history
@@ -1,4 +1,5 @@
1.5 [pending]
+ + 30_all_gcc-4.5-ppc-msingle-pic-base.patch
U 53_all_gcc4-superh-default-multilib.patch
- 94_all_gcc-4.3.3-pch-nostdinc-tr1.patch
+ 94_all_gcc-4.5-pch-nostdinc.patch