forked from OSchip/llvm-project
37561ba89b
`clang -fpic -fno-semantic-interposition` may set dso_local on variables for -fpic. GCC folks consider there are 'address interposition' and 'semantic interposition', and 'disabling semantic interposition' can optimize function calls but cannot change variable references to use local aliases (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100483). This patch removes dso_local for variables in `clang -fpic -fno-semantic-interposition` mode so that the built shared objects can work with copy relocations. Building llvm-project tiself with -fno-semantic-interposition (D102453) should now be safe with trunk Clang. Example: ``` // a.c int var; int *addr() { return var; } // old: cannot be interposed movslq .Lvar$local(%rip), %rax // new: can be interposed movq var@GOTPCREL(%rip), %rax movslq (%rax), %rax ``` The local alias lowering for `GlobalVariable`s is kept in case there is a future option allowing local aliases. Reviewed By: rnk Differential Revision: https://reviews.llvm.org/D102583 |
||
---|---|---|
.. | ||
align-systemz.c | ||
builtins-systemz-error.c | ||
builtins-systemz-error2.c | ||
builtins-systemz-vector-constrained.c | ||
builtins-systemz-vector-error.c | ||
builtins-systemz-vector.c | ||
builtins-systemz-vector2-constrained.c | ||
builtins-systemz-vector2-error.c | ||
builtins-systemz-vector2.c | ||
builtins-systemz-vector3-error.c | ||
builtins-systemz-vector3.c | ||
builtins-systemz-zvector-constrained.c | ||
builtins-systemz-zvector-error.c | ||
builtins-systemz-zvector.c | ||
builtins-systemz-zvector2-constrained.c | ||
builtins-systemz-zvector2-error.c | ||
builtins-systemz-zvector2.c | ||
builtins-systemz-zvector3-constrained.c | ||
builtins-systemz-zvector3-error.c | ||
builtins-systemz-zvector3.c | ||
builtins-systemz.c | ||
mbackchain-2.c | ||
mbackchain-3.c | ||
mbackchain.c | ||
s390x-packed-struct-func-arg.c | ||
strictfp_builtins.c | ||
systemz-abi-vector.c | ||
systemz-abi.c | ||
systemz-abi.cpp | ||
systemz-inline-asm-02.c | ||
systemz-inline-asm.c | ||
zos-alignment.c | ||
zvector.c | ||
zvector2.c |