From 8d351787bfcd1db7a5661dd9fccd0a1fa0fa04fc Mon Sep 17 00:00:00 2001 From: Jonathan Yong <10walls@gmail.com> Date: Sat, 28 Jun 2014 09:52:21 +0800 Subject: [PATCH 12/21] handle dllimport properly in medium model --- gcc/config/i386/predicates.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/gcc/config/i386/predicates.md b/gcc/config/i386/predicates.md index bc76a5b..e886af2 100644 --- a/gcc/config/i386/predicates.md +++ b/gcc/config/i386/predicates.md @@ -168,6 +168,7 @@ switch (XINT (XEXP (op, 0), 1)) { case UNSPEC_GOTPCREL: + if (TARGET_PECOFF) break; case UNSPEC_DTPOFF: case UNSPEC_GOTNTPOFF: case UNSPEC_NTPOFF: @@ -263,6 +264,10 @@ /* TLS symbols are not constant. */ if (SYMBOL_REF_TLS_MODEL (op)) return false; + /* Dll-imported symbols are always external. */ + if (TARGET_DLLIMPORT_DECL_ATTRIBUTES && SYMBOL_REF_DLLIMPORT_P (op)) + return false; + return (ix86_cmodel == CM_SMALL || (ix86_cmodel == CM_MEDIUM && !SYMBOL_REF_FAR_ADDR_P (op))); -- 2.4.5