diff options
author | David Majnemer <david.majnemer@gmail.com> | 2014-10-15 22:38:23 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2014-10-15 22:38:23 +0000 |
commit | bb525f7c200aab0ba2ebff88031a636510e89b59 (patch) | |
tree | f1bcd6420ccdfdb5e2c1d19107f2abba1e504512 /clang/test/CodeGen/alias.c | |
parent | 0b15e34bd15e24d6f52bfc259a44e0d149cbf54b (diff) | |
download | bcm5719-llvm-bb525f7c200aab0ba2ebff88031a636510e89b59.tar.gz bcm5719-llvm-bb525f7c200aab0ba2ebff88031a636510e89b59.zip |
CodeGen: Don't drop thread_local when emitting __thread aliases
CodeGen wouldn't mark the aliasee as thread_local if the aliasee was a
tentative definition.
Even if the definition was already emitted, it would never mark the
alias as thread_local.
This fixes PR21288.
llvm-svn: 219859
Diffstat (limited to 'clang/test/CodeGen/alias.c')
-rw-r--r-- | clang/test/CodeGen/alias.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/clang/test/CodeGen/alias.c b/clang/test/CodeGen/alias.c index faed487a404..b773cc8de93 100644 --- a/clang/test/CodeGen/alias.c +++ b/clang/test/CodeGen/alias.c @@ -3,6 +3,8 @@ int g0; // CHECKBASIC: @g0 = common global i32 0 +__thread int TL_WITH_ALIAS; +// CHECKBASIC-DAG: @TL_WITH_ALIAS = thread_local global i32 0, align 4 static int bar1 = 42; // CHECKBASIC: @bar1 = internal global i32 42 @@ -10,6 +12,9 @@ extern int g1; extern int g1 __attribute((alias("g0"))); // CHECKBASIC-DAG: @g1 = alias i32* @g0 +extern __thread int __libc_errno __attribute__ ((alias ("TL_WITH_ALIAS"))); +// CHECKBASIC-DAG: @__libc_errno = thread_local alias i32* @TL_WITH_ALIAS + void f0(void) { } extern void f1(void); extern void f1(void) __attribute((alias("f0"))); |