-
Notifications
You must be signed in to change notification settings - Fork 15k
Labels
clang:codegenIR generation bugs: mangling, exceptions, etc.IR generation bugs: mangling, exceptions, etc.crashPrefer [crash-on-valid] or [crash-on-invalid]Prefer [crash-on-valid] or [crash-on-invalid]duplicateResolved as duplicateResolved as duplicatelambdaC++11 lambda expressionsC++11 lambda expressions
Description
#include <vector>
template<typename T>
decltype(T::z) doesnt_crash(T& v) {
decltype(v.z) i = 0;
i += v.z;
return i;
}
int main() {
struct test {
int z;
};
auto crashes = []<typename T>(test& t) {
decltype(t.z) v;
return v;
};
auto also_crashes = []<typename T>(T& t) {
std::vector<decltype(t.z)> v;
return v;
};
auto no_crash = [](test& t) {
std::vector<decltype(t.z)> v;
return v;
};
test t{5};
//also_crashes(t);
doesnt_crash(t);
no_crash(t);
crashes.operator()<void>(t);
also_crashes(t);
}Only happens with C++11
$ clang++ --version
clang version 14.0.6
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/binMetadata
Metadata
Assignees
Labels
clang:codegenIR generation bugs: mangling, exceptions, etc.IR generation bugs: mangling, exceptions, etc.crashPrefer [crash-on-valid] or [crash-on-invalid]Prefer [crash-on-valid] or [crash-on-invalid]duplicateResolved as duplicateResolved as duplicatelambdaC++11 lambda expressionsC++11 lambda expressions