aboutsummaryrefslogtreecommitdiff
path: root/test/CodeGen/constructor-attribute.c
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2009-02-13 21:18:01 +0000
committerDaniel Dunbar <daniel@zuster.org>2009-02-13 21:18:01 +0000
commit73241dfeb5c498255b662984cca369fd28ec3147 (patch)
treeff7b7b38d435c9c964beb6d28f84d7d468925575 /test/CodeGen/constructor-attribute.c
parent0269871c9cba493f76237175ab60313406f3bafa (diff)
Pull MayDeferGeneration out of EmitGlobal.
- Fix emission of static functions with constructor attribute while I was here. <rdar://problem/6140899> [codegen] "static" and attribute-constructor interact poorly git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64488 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/constructor-attribute.c')
-rw-r--r--test/CodeGen/constructor-attribute.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/test/CodeGen/constructor-attribute.c b/test/CodeGen/constructor-attribute.c
index 0ecc47babf..f75fa4f7fa 100644
--- a/test/CodeGen/constructor-attribute.c
+++ b/test/CodeGen/constructor-attribute.c
@@ -1,6 +1,8 @@
// RUN: clang -emit-llvm -o %t %s &&
// RUN: grep -e "global_ctors.*@A" %t &&
-// RUN: grep -e "global_dtors.*@B" %t
+// RUN: grep -e "global_dtors.*@B" %t &&
+// RUN: grep -e "global_ctors.*@C" %t &&
+// RUN: grep -e "global_dtors.*@D" %t
#include <stdio.h>
@@ -15,6 +17,22 @@ void B() {
printf("B\n");
}
+static void C() __attribute__((constructor));
+
+static void D() __attribute__((destructor));
+
+static int foo() {
+ return 10;
+}
+
+static void C() {
+ printf("A: %d\n", foo());
+}
+
+static void D() {
+ printf("B\n");
+}
+
int main() {
return 0;
}