summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGenCoroutines/microsoft-abi-operator-coawait.cpp
diff options
context:
space:
mode:
authorGor Nishanov <GorNishanov@gmail.com>2016-09-28 22:37:17 +0000
committerGor Nishanov <GorNishanov@gmail.com>2016-09-28 22:37:17 +0000
commite2f51befb82123e43cbee373bb6bb2064817086a (patch)
treeddf3285b630a7d02520145d273c57cdaeeeae980 /clang/test/CodeGenCoroutines/microsoft-abi-operator-coawait.cpp
parent3888eb66b004c0d4701330c8097566a734c4aec1 (diff)
downloadbcm5719-llvm-e2f51befb82123e43cbee373bb6bb2064817086a.tar.gz
bcm5719-llvm-e2f51befb82123e43cbee373bb6bb2064817086a.zip
[Coroutines] Add proper mangling for operator co_await for MicrosoftABI
Reviewers: rnk, rsmith Subscribers: mehdi_amini, cfe-commits Differential Revision: https://reviews.llvm.org/D25045 llvm-svn: 282645
Diffstat (limited to 'clang/test/CodeGenCoroutines/microsoft-abi-operator-coawait.cpp')
-rw-r--r--clang/test/CodeGenCoroutines/microsoft-abi-operator-coawait.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/clang/test/CodeGenCoroutines/microsoft-abi-operator-coawait.cpp b/clang/test/CodeGenCoroutines/microsoft-abi-operator-coawait.cpp
new file mode 100644
index 00000000000..e87fed09f19
--- /dev/null
+++ b/clang/test/CodeGenCoroutines/microsoft-abi-operator-coawait.cpp
@@ -0,0 +1,25 @@
+// RUN: %clang_cc1 -triple x86_64-pc-windows-msvc18.0.0 -fcoroutines -emit-llvm %s -o - -std=c++14 -disable-llvm-passes | FileCheck %s
+struct no_suspend {
+ bool await_ready() { return true; }
+ template <typename F> void await_suspend(F) {}
+ void await_resume() {}
+};
+
+struct A {
+ no_suspend operator co_await() { return {}; }
+};
+
+struct B {};
+
+no_suspend operator co_await(B const&) { return {}; }
+
+// CHECK-LABEL: f(
+extern "C" void f() {
+ A a;
+ B b;
+ // CHECK: call void @"\01??__LA@@QEAA?AUno_suspend@@XZ"(
+ a.operator co_await();
+ // CHECK-NEXT: call i8 @"\01??__L@YA?AUno_suspend@@AEBUB@@@Z"(
+ operator co_await(b);
+}
+
OpenPOWER on IntegriCloud