summaryrefslogtreecommitdiffstats
path: root/test/CodeGenCXX/init-priority-attr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/CodeGenCXX/init-priority-attr.cpp')
-rw-r--r--test/CodeGenCXX/init-priority-attr.cpp46
1 files changed, 46 insertions, 0 deletions
diff --git a/test/CodeGenCXX/init-priority-attr.cpp b/test/CodeGenCXX/init-priority-attr.cpp
new file mode 100644
index 0000000..ef9343c
--- /dev/null
+++ b/test/CodeGenCXX/init-priority-attr.cpp
@@ -0,0 +1,46 @@
+// RUN: %clang_cc1 %s -triple x86_64-apple-darwin10 -emit-llvm -o - | FileCheck %s
+// PR
+
+void foo(int);
+
+class A {
+public:
+ A() { foo(1); }
+};
+
+class A1 {
+public:
+ A1() { foo(2); }
+};
+
+class B {
+public:
+ B() { foo(3); }
+};
+
+class C {
+public:
+ static A a;
+ C() { foo(4); }
+};
+
+
+A C::a = A();
+
+// CHECK: @llvm.global_ctors = appending global [3 x { i32, void ()* }] [{ i32, void ()* } { i32 200, void ()* @_GLOBAL__I_000200 }, { i32, void ()* } { i32 300, void ()* @_GLOBAL__I_000300 }, { i32, void ()* } { i32 65535, void ()* @_GLOBAL__I_a }]
+
+// CHECK: _GLOBAL__I_000200()
+// CHECK_NEXT: _Z3fooi(i32 3)
+
+// CHECK: _GLOBAL__I_000300()
+// CHECK_NEXT: _Z3fooi(i32 2)
+// CHECK_NEXT: _Z3fooi(i32 1)
+
+// CHECK: _GLOBAL__I_a()
+// CHECK_NEXT: _Z3fooi(i32 1)
+// CHECK_NEXT: _Z3fooi(i32 4)
+
+C c;
+A1 a1 __attribute__((init_priority (300)));
+A a __attribute__((init_priority (300)));
+B b __attribute__((init_priority (200)));
OpenPOWER on IntegriCloud