llvm-project/clang/test/Modules/hashing-decls-in-exprs-from-gmf-2.cppm
Chuanqi Xu d26dd58ca5 [StmtProfile] Don't profile the body of lambda expressions
Close https://github.com/llvm/llvm-project/issues/87609

We tried to profile the body of the lambda expressions in
https://reviews.llvm.org/D153957. But as the original comments show,
it is indeed dangerous. After we tried to skip calculating the ODR
hash values recently, we have fall into this trap twice.

So in this patch, I choose to not profile the body of the lambda
expression. The signature of the lambda is still profiled.
2024-04-16 15:41:26 +08:00

45 lines
836 B
C++

// RUN: rm -rf %t
// RUN: mkdir -p %t
// RUN: split-file %s %t
//
// RUN: %clang_cc1 -std=c++20 -fskip-odr-check-in-gmf %t/A.cppm -emit-module-interface -o %t/A.pcm
// RUN: %clang_cc1 -std=c++20 -fskip-odr-check-in-gmf %t/test.cpp -fprebuilt-module-path=%t -fsyntax-only -verify
//--- header.h
#pragma once
template <class _Tp>
class Optional {};
template <class _Tp>
concept C = requires(const _Tp& __t) {
[]<class _Up>(const Optional<_Up>&) {}(__t);
};
//--- func.h
#include "header.h"
template <C T>
void func() {}
//--- test_func.h
#include "func.h"
inline void test_func() {
func<Optional<int>>();
}
//--- A.cppm
module;
#include "header.h"
#include "test_func.h"
export module A;
export using ::test_func;
//--- test.cpp
// expected-no-diagnostics
import A;
#include "test_func.h"
void test() {
test_func();
}