[cfe-commits] r125119 - /cfe/trunk/test/SemaCXX/linkage.cpp

John McCall rjmccall at apple.com
Tue Feb 8 14:28:39 PST 2011


Author: rjmccall
Date: Tue Feb  8 16:28:39 2011
New Revision: 125119

URL: http://llvm.org/viewvc/llvm-project?rev=125119&view=rev
Log:
Test case accidentally left out of my last commit.


Added:
    cfe/trunk/test/SemaCXX/linkage.cpp

Added: cfe/trunk/test/SemaCXX/linkage.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/linkage.cpp?rev=125119&view=auto
==============================================================================
--- cfe/trunk/test/SemaCXX/linkage.cpp (added)
+++ cfe/trunk/test/SemaCXX/linkage.cpp Tue Feb  8 16:28:39 2011
@@ -0,0 +1,57 @@
+// This is an IR generation test because the calculation of visibility
+// during IR gen will cause linkage to be implicitly recomputed and
+// compared against the earlier cached value.  If we had a way of
+// testing linkage directly in Sema, that would be better.
+
+// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm %s -o - | FileCheck %s
+
+// PR8926
+namespace test0 {
+  typedef struct {
+    void *foo() { return 0; }
+  } A;
+
+  // CHECK: define linkonce_odr i8* @_ZN5test01A3fooEv(
+
+  void test(A *a) {
+    a->foo();
+  }
+}
+
+namespace test1 {
+  typedef struct {
+    template <unsigned n> void *foo() { return 0; }
+
+    void foo() {
+      foo<0>();
+    }
+  } A;
+
+  // CHECK: define linkonce_odr void @_ZN5test11A3fooEv(
+  // another at the end
+
+  void test(A *a) {
+    a->foo();
+  }
+}
+
+namespace test2 {
+  typedef struct {
+    template <unsigned n> struct B {
+      void *foo() { return 0; }
+    };
+
+    void foo(B<0> *b) {
+      b->foo();
+    }
+  } A;
+
+  // CHECK: define linkonce_odr void @_ZN5test21A3fooEPNS0_1BILj0EEE(
+
+  void test(A *a) {
+    a->foo(0);
+  }
+}
+
+// CHECK: define linkonce_odr i8* @_ZN5test21A1BILj0EE3fooEv(
+// CHECK: define linkonce_odr i8* @_ZN5test11A3fooILj0EEEPvv(





More information about the cfe-commits mailing list