brintos

brintos / llvm-project-archived public Read only

0
0
Text · 615 B · 6abb533 Raw
26 lines · cpp
1// RUN: %clang_cc1 -triple x86_64-pc-windows-msvc18.0.0 -emit-llvm %s -o - -std=c++20 -disable-llvm-passes | FileCheck %s2struct no_suspend {3  bool await_ready() { return true; }4  template <typename F> void await_suspend(F) {}5  void await_resume() {}6};7 8struct A {9  no_suspend operator co_await() { return {}; }10};11 12struct B {};13 14no_suspend operator co_await(B const&) { return {}; }15 16// CHECK-LABEL: f(17extern "C" void f() {18  A a;19  B b;20  // CHECK: call void @"??__LA@@QEAA?AUno_suspend@@XZ"(21  a.operator co_await();22  // CHECK-NEXT: call i8 @"??__L@YA?AUno_suspend@@AEBUB@@@Z"(23  operator co_await(b);24}25 26