From d22b97c30ba2f2fbff8eddd6a041fab2a4f57f2f Mon Sep 17 00:00:00 2001 From: "Duncan P. N. Exon Smith" Date: Tue, 20 May 2014 19:04:31 +0000 Subject: [PATCH] GlobalValue: Testcase for hidden visibility and local linkage This is a testcase for r209227, a change in LLVM that automatically sets visibility to default when the linkage is changed to local (rather than asserting). What this testcase triggers is hard to reproduce otherwise: the `GlobalValue` is created (with non-local linkage), the visibility is set to hidden, and then the linkage is set to local. PR19760 llvm-svn: 209228 --- clang/test/CodeGen/hidden-alias-to-internal-function.c | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 clang/test/CodeGen/hidden-alias-to-internal-function.c diff --git a/clang/test/CodeGen/hidden-alias-to-internal-function.c b/clang/test/CodeGen/hidden-alias-to-internal-function.c new file mode 100644 index 000000000000..37e37659d70c --- /dev/null +++ b/clang/test/CodeGen/hidden-alias-to-internal-function.c @@ -0,0 +1,8 @@ +// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -emit-obj -o - -x c %s +// Reproduce the crash in PR19760. +static void foo(void) {} +void bar(void) __attribute__((alias("foo"))) +__attribute__((visibility("hidden"))); + +// CHECK: @bar = hidden alias void ()* @foo +// CHECK: define internal void @foo()