This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

PATCH: PR target/63833: REAL_PIC_OFFSET_TABLE_REGNUM is wrong for x86-64


We have been using the wrong register to hold GOT in 64-bit large model,
which is used by the large model PLT.  The only reason we haven't run into
any problem is linker doesn't support the large model PLT. I am looking
into linker issue.  This patch corrects REAL_PIC_OFFSET_TABLE_REGNUM for
64-bit large model.  OK to install?

Thanks.

H.J.
---
2014-11-12  H.J. Lu  <hongjiu.lu@intel.com>

	 PR target/63833
	 * config/i386/i386.h (REAL_PIC_OFFSET_TABLE_REGNUM): Use
	 R15_REG for 64-bit.
	 * config/i386/rdos64.h (REAL_PIC_OFFSET_TABLE_REGNUM): Removed.

diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
index 53dfd22..0ccfb21 100644
--- a/gcc/config/i386/i386.h
+++ b/gcc/config/i386/i386.h
@@ -1244,7 +1244,7 @@ extern const char *host_detect_local_cpu (int argc, const char **argv);
    the pic register when possible.  The change is visible after the
    prologue has been emitted.  */
 
-#define REAL_PIC_OFFSET_TABLE_REGNUM  BX_REG
+#define REAL_PIC_OFFSET_TABLE_REGNUM  (TARGET_64BIT ? R15_REG : BX_REG)
 
 #define PIC_OFFSET_TABLE_REGNUM						\
   ((TARGET_64BIT && (ix86_cmodel == CM_SMALL_PIC			\
diff --git a/gcc/config/i386/rdos64.h b/gcc/config/i386/rdos64.h
index e6f089a..f902651 100644
--- a/gcc/config/i386/rdos64.h
+++ b/gcc/config/i386/rdos64.h
@@ -17,8 +17,5 @@ You should have received a copy of the GNU General Public License
 along with GCC; see the file COPYING3.  If not see
 <http://www.gnu.org/licenses/>.  */
 
-#undef REAL_PIC_OFFSET_TABLE_REGNUM
-#define REAL_PIC_OFFSET_TABLE_REGNUM  R15_REG
-
 #undef DEFAULT_LARGE_SECTION_THRESHOLD
 #define DEFAULT_LARGE_SECTION_THRESHOLD 16


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]