summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorReid Kleckner <rnk@google.com>2019-10-10 01:14:22 +0000
committerReid Kleckner <rnk@google.com>2019-10-10 01:14:22 +0000
commit4d26f8932d77306049f2815dbddc44b9c39895c5 (patch)
tree2eb60e26eb3c9d85087ef3d93c3288aaeb781016 /test
parentfa29e307035ae592247836aef3e3c401cb9ff559 (diff)
downloadclang-4d26f8932d77306049f2815dbddc44b9c39895c5.tar.gz
Re-land [mangle] Fix mangling where an extra mangle context is required.
This reverts r374268 (git commit c34385d07c7d59447bf836b740f032235391d121) I think I reverted this by mistake, so I'm relanding it. While my bisect found this revision, I think the crashes I'm seeing locally must be environmental. Maybe the version of clang I'm using miscompiles tot clang. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@374269 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r--test/CodeGenCXX/mangle-lambdas.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/test/CodeGenCXX/mangle-lambdas.cpp b/test/CodeGenCXX/mangle-lambdas.cpp
index d49ed4b2a5..fcca878e38 100644
--- a/test/CodeGenCXX/mangle-lambdas.cpp
+++ b/test/CodeGenCXX/mangle-lambdas.cpp
@@ -178,18 +178,24 @@ void use_func_template() {
}
namespace std {
- struct type_info;
+ struct type_info {
+ bool before(const type_info &) const noexcept;
+ };
}
namespace PR12123 {
struct A { virtual ~A(); } g;
+ struct C { virtual ~C(); } k;
struct B {
void f(const std::type_info& x = typeid([]()->A& { return g; }()));
void h();
+ void j(bool cond = typeid([]() -> A & { return g; }()).before(typeid([]() -> C & { return k; }())));
};
- void B::h() { f(); }
+ void B::h() { f(); j(); }
}
// CHECK-LABEL: define linkonce_odr dereferenceable({{[0-9]+}}) %"struct.PR12123::A"* @_ZZN7PR121231B1fERKSt9type_infoEd_NKUlvE_clEv
+// CHECK-LABEL: define linkonce_odr dereferenceable({{[0-9]+}}) %"struct.PR12123::A"* @_ZZN7PR121231B1jEbEd_NKUlvE_clEv
+// CHECK-LABEL: define linkonce_odr dereferenceable({{[0-9]+}}) %"struct.PR12123::C"* @_ZZN7PR121231B1jEbEd_NKUlvE0_clEv
// CHECK-LABEL: define {{.*}} @_Z{{[0-9]*}}testVarargsLambdaNumberingv(
inline int testVarargsLambdaNumbering() {