Make -fno-pic respect -fno-direct-access-external-data
authorFangrui Song <i@maskray.me>
Sat, 9 Jan 2021 08:32:02 +0000 (00:32 -0800)
committerFangrui Song <i@maskray.me>
Sat, 9 Jan 2021 08:32:02 +0000 (00:32 -0800)
commit38a716c30f095c7d7148482070ea4a3352b926d5
tree17e547ccc1a64857fff055f3d618786218edcd72
parent1d3ebbf537832f80be97739abc4f6962caad1dab
Make -fno-pic respect -fno-direct-access-external-data

D92633 added -f[no-]direct-access-external-data to supersede -m[no-]pie-copy-relocations.
(The option works for -fpie but is a no-op for -fno-pic and -fpic.)

This patch makes -fno-pic -fno-direct-access-external-data drop dso_local from
global variable declarations. This usually causes the backend to emit a GOT
indirection for external data access. With a GOT relocation, the subsequent
-no-pie link will not have copy relocation even if the data symbol turns out to
be defined by a shared object.

Differential Revision: https://reviews.llvm.org/D92714
clang/lib/CodeGen/CodeGenModule.cpp
clang/test/CodeGen/dso-local-executable.c