cor3ntin 820c6ac7f5
[Clang] call HandleImmediateInvocation before checking for immediate escacalating expressions (reland) (#124708)
HandleImmediateInvocation can call MarkExpressionAsImmediateEscalating 
and should always be called before
CheckImmediateEscalatingFunctionDefinition.
    
However, we were not doing that in `ActFunctionBody`.

Fixes #119046
2025-01-28 15:18:38 +01:00

33 lines
675 B
C++

// RUN: %clang_cc1 -std=c++2a -triple x86_64-elf-gnu %s -emit-llvm -o - | FileCheck %s
struct S {
consteval void operator()() {}
};
template <class Fn>
constexpr void dispatch(Fn fn) {
fn();
}
template <class Visitor>
struct value_visitor {
constexpr void operator()() { visitor(); }
Visitor&& visitor;
};
template <class Visitor>
constexpr auto make_dispatch() {
return dispatch<value_visitor<S>>;
}
template <class Visitor>
constexpr void visit(Visitor&&) {
make_dispatch<Visitor>();
}
void f() { visit(S{}); }
// CHECK: define {{.*}} @_Z1fv
// CHECK-NOT: define {{.*}} @_Z5visitI1SEvOT_
// CHECK-NOT: define {{.*}} @_Z13make_dispatchI1SEDav