// Tests that we wouldn't generate an allocation call in global scope with (std::size_t, p0, ..., pn) // RUN: %clang_cc1 %s -std=c++20 -S -triple x86_64-unknown-linux-gnu -emit-llvm -disable-llvm-passes %s -o - | FileCheck %s #include "Inputs/coroutine.h" namespace std { typedef decltype(sizeof(int)) size_t; } struct Allocator {}; struct resumable { struct promise_type { resumable get_return_object() { return {}; } auto initial_suspend() { return std::suspend_always(); } auto final_suspend() noexcept { return std::suspend_always(); } void unhandled_exception() {} void return_void(){}; }; }; void *operator new(std::size_t, void *); resumable f1(void *) { co_return; } // CHECK: coro.alloc: // CHECK-NEXT: [[SIZE:%.+]] = call [[BITWIDTH:.+]] @llvm.coro.size.[[BITWIDTH]]() // CHECK-NEXT: call {{.*}} ptr @_Znwm([[BITWIDTH]] noundef [[SIZE]])