diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2016-03-23 21:16:33 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2016-03-23 21:16:33 +0000 |
commit | f2e71244c6274984c33df9a58a78fcf71218ee21 (patch) | |
tree | a2dbe36cac4b3a6134c50acd38d58a629d4153c3 /llvm/test/Linker/constructor-comdat.ll | |
parent | 3c0bc9697a97cb4d1e50423b28419eb3fa80b7de (diff) | |
download | bcm5719-llvm-f2e71244c6274984c33df9a58a78fcf71218ee21.tar.gz bcm5719-llvm-f2e71244c6274984c33df9a58a78fcf71218ee21.zip |
Fix logic for which symbols to keep with comdats.
If a comdat is dropped, all symbols in it are dropped.
If a comdat is kept, the symbols survive to pass regular symbol
resolution.
With this patch we do that for all global symbols.
The added test is a copy of test/tools/gold/X86/comdat.ll that we now
pass.
llvm-svn: 264192
Diffstat (limited to 'llvm/test/Linker/constructor-comdat.ll')
-rw-r--r-- | llvm/test/Linker/constructor-comdat.ll | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/llvm/test/Linker/constructor-comdat.ll b/llvm/test/Linker/constructor-comdat.ll index e62990157a9..0e8fc440f20 100644 --- a/llvm/test/Linker/constructor-comdat.ll +++ b/llvm/test/Linker/constructor-comdat.ll @@ -1,13 +1,16 @@ ; RUN: llvm-link %s %p/Inputs/constructor-comdat.ll -S -o - 2>&1 | FileCheck %s -; RUN: llvm-link %p/Inputs/constructor-comdat.ll %s -S -o - 2>&1 | FileCheck %s +; RUN: llvm-link %p/Inputs/constructor-comdat.ll %s -S -o - 2>&1 | FileCheck --check-prefix=NOCOMDAT %s $_ZN3fooIiEC5Ev = comdat any ; CHECK: $_ZN3fooIiEC5Ev = comdat any +; NOCOMDAT-NOT: comdat @_ZN3fooIiEC1Ev = weak_odr alias void (), void ()* @_ZN3fooIiEC2Ev ; CHECK: @_ZN3fooIiEC1Ev = weak_odr alias void (), void ()* @_ZN3fooIiEC2Ev +; NOCOMDAT-DAG: define weak_odr void @_ZN3fooIiEC1Ev() { ; CHECK: define weak_odr void @_ZN3fooIiEC2Ev() comdat($_ZN3fooIiEC5Ev) { +; NOCOMDAT-DAG: define weak_odr void @_ZN3fooIiEC2Ev() { define weak_odr void @_ZN3fooIiEC2Ev() comdat($_ZN3fooIiEC5Ev) { ret void } |