summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGenCXX/code_seg3.cpp
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2018-05-18 20:18:17 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2018-05-18 20:18:17 +0000
commitfb50dd34ed5d405de083e37d0c8a1baa2cd76387 (patch)
treee2a8cee2339e6ca4dc7e2543050269ef80fbb650 /clang/test/CodeGenCXX/code_seg3.cpp
parentad60559be7c636374dbfb9597588f9527ca1212a (diff)
downloadbcm5719-llvm-fb50dd34ed5d405de083e37d0c8a1baa2cd76387.tar.gz
bcm5719-llvm-fb50dd34ed5d405de083e37d0c8a1baa2cd76387.zip
Revert r332470 (and corresponding tests in r332492).
This regressed our support for __attribute__((section)). See added test file for example of code broken by this. llvm-svn: 332760
Diffstat (limited to 'clang/test/CodeGenCXX/code_seg3.cpp')
-rw-r--r--clang/test/CodeGenCXX/code_seg3.cpp86
1 files changed, 0 insertions, 86 deletions
diff --git a/clang/test/CodeGenCXX/code_seg3.cpp b/clang/test/CodeGenCXX/code_seg3.cpp
deleted file mode 100644
index a81e1b5bba9..00000000000
--- a/clang/test/CodeGenCXX/code_seg3.cpp
+++ /dev/null
@@ -1,86 +0,0 @@
-// RUN: %clang_cc1 -emit-llvm -triple i686-pc-win32 -fms-extensions -verify -o - %s | FileCheck %s
-// expected-no-diagnostics
-// The Microsoft document says: "When this attribute is applied to a class,
-// all member functions of the class and nested classes - this includes
-// compiler-generated special member functions - are put in the specified segment."
-// But the MS compiler does not always follow that. A bug has been reported:
-// see https://reviews.llvm.org/D22931, the Microsoft feedback page is no
-// longer available.
-// The MS compiler will apply a declspec from the parent class if there is no
-// #pragma code_seg active at the class definition. If there is an active
-// code_seg that is used instead.
-
-// No active code_seg
-
-struct __declspec(code_seg("foo_outer")) Foo1 {
- struct Inner {
- void bar1();
- static void bar2();
- };
-};
-void Foo1::Inner::bar1() {}
-void Foo1::Inner::bar2() {}
-
-//CHECK: define {{.*}}bar1@Inner@Foo1{{.*}} section "foo_outer"
-//CHECK: define {{.*}}bar2@Inner@Foo1{{.*}} section "foo_outer"
-
-struct __declspec(code_seg("foo_outer")) Foo2 {
- struct __declspec(code_seg("foo_inner")) Inner {
- void bar1();
- static void bar2();
- };
-};
-void Foo2::Inner::bar1() {}
-void Foo2::Inner::bar2() {}
-
-//CHECK: define {{.*}}bar1@Inner@Foo2{{.*}} section "foo_inner"
-//CHECK: define {{.*}}bar2@Inner@Foo2{{.*}} section "foo_inner"
-
-#pragma code_seg(push, "otherseg")
-struct __declspec(code_seg("foo_outer")) Foo3 {
- struct Inner {
- void bar1();
- static void bar2();
- };
-};
-void Foo3::Inner::bar1() {}
-void Foo3::Inner::bar2() {}
-
-//CHECK: define {{.*}}bar1@Inner@Foo3{{.*}} section "otherseg"
-//CHECK: define {{.*}}bar2@Inner@Foo3{{.*}} section "otherseg"
-
-struct __declspec(code_seg("foo_outer")) Foo4 {
- struct __declspec(code_seg("foo_inner")) Inner {
- void bar1();
- static void bar2();
- };
-};
-void Foo4::Inner::bar1() {}
-void Foo4::Inner::bar2() {}
-
-//CHECK: define {{.*}}bar1@Inner@Foo4{{.*}} section "foo_inner"
-//CHECK: define {{.*}}bar2@Inner@Foo4{{.*}} section "foo_inner"
-
-#pragma code_seg(pop)
-// Back to no active pragma
-struct __declspec(code_seg("foo_outer")) Foo5 {
- struct Inner {
- void bar1();
- static void bar2();
- struct __declspec(code_seg("inner1_seg")) Inner1 {
- struct Inner2 {
- void bar1();
- static void bar2();
- };
- };
- };
-};
-void Foo5::Inner::bar1() {}
-void Foo5::Inner::bar2() {}
-void Foo5::Inner::Inner1::Inner2::bar1() {}
-void Foo5::Inner::Inner1::Inner2::bar2() {}
-
-//CHECK: define {{.*}}bar1@Inner@Foo5{{.*}} section "foo_outer"
-//CHECK: define {{.*}}bar2@Inner@Foo5{{.*}} section "foo_outer"
-//CHECK: define {{.*}}bar1@Inner2@Inner1@Inner@Foo5{{.*}} section "inner1_seg"
-//CHECK: define {{.*}}bar2@Inner2@Inner1@Inner@Foo5{{.*}} section "inner1_seg"
OpenPOWER on IntegriCloud