aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEvgeny Karpov <evgeny.karpov@microsoft.com>2024-08-08 19:54:13 +0200
committerEvgeny Karpov <eukarpov@gmail.com>2024-11-19 14:27:33 +0100
commitfef211ff733f711f540634189c47ce6902386f10 (patch)
tree255c74aec5bd04e29afd03ab9b2b77a9e8be1bd5 /gcc
parente39e523c84436308eb25fdcf40c605880e817067 (diff)
downloadgcc-fef211ff733f711f540634189c47ce6902386f10.zip
gcc-fef211ff733f711f540634189c47ce6902386f10.tar.gz
gcc-fef211ff733f711f540634189c47ce6902386f10.tar.bz2
aarch64: Exclude symbols using GOT from code models
Symbols using GOT are not supported by the aarch64-w64-mingw32 target and should be excluded from the code models. gcc/ChangeLog: * config/aarch64/aarch64.cc (aarch64_classify_symbol): Disable GOT for PECOFF target.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/aarch64/aarch64.cc6
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc
index d901340..e5e993d 100644
--- a/gcc/config/aarch64/aarch64.cc
+++ b/gcc/config/aarch64/aarch64.cc
@@ -21241,7 +21241,8 @@ aarch64_classify_symbol (rtx x, HOST_WIDE_INT offset)
case AARCH64_CMODEL_TINY:
/* With -fPIC non-local symbols use the GOT. For orthogonality
always use the GOT for extern weak symbols. */
- if ((flag_pic || SYMBOL_REF_WEAK (x))
+ if (!TARGET_PECOFF
+ && (flag_pic || SYMBOL_REF_WEAK (x))
&& !aarch64_symbol_binds_local_p (x))
return SYMBOL_TINY_GOT;
@@ -21263,7 +21264,8 @@ aarch64_classify_symbol (rtx x, HOST_WIDE_INT offset)
case AARCH64_CMODEL_SMALL_SPIC:
case AARCH64_CMODEL_SMALL_PIC:
case AARCH64_CMODEL_SMALL:
- if ((flag_pic || SYMBOL_REF_WEAK (x))
+ if (!TARGET_PECOFF
+ && (flag_pic || SYMBOL_REF_WEAK (x))
&& !aarch64_symbol_binds_local_p (x))
return aarch64_cmodel == AARCH64_CMODEL_SMALL_SPIC
? SYMBOL_SMALL_GOT_28K : SYMBOL_SMALL_GOT_4G;