[clang] [clang] Reapply Handle templated operators with reversed arguments (PR #72213)
Utkarsh Saxena via cfe-commits
cfe-commits at lists.llvm.org
Tue Nov 14 22:37:11 PST 2023
usx95 wrote:
I ran this change internally and noticed a crash for
```cpp
template <typename T>
class Foo {
public:
template <typename U = T>
bool operator==(const Foo& other) const;
};
bool x = Foo<int>{} == Foo<int>{};
```
<details>
<summary>stacktrace</summary>
```
F0000 00:00:1700029943.315247 8971 logging.cc:57] assert.h assertion failed at third_party/llvm/llvm-project/llvm/include/llvm/ADT/ArrayRef.h:443 in T &llvm::MutableArrayRef<clang::ImplicitConversionSequence>::operator[](size_t) const [T = clang::ImplicitConversionSequence]: Index < this->size() && "Invalid index!"
*** Check failure stack trace: ***
@ 0x55598a5f6a44 absl::log_internal::LogMessage::SendToLog()
@ 0x55598a5f68a2 absl::log_internal::LogMessage::Flush()
@ 0x55598a5f6da9 absl::log_internal::LogMessageFatal::~LogMessageFatal()
@ 0x55598a5e70c4 __assert_fail
@ 0x555986a73209 clang::Sema::CheckNonDependentConversions()
@ 0x555986a9db52 llvm::function_ref<>::callback_fn<>()
@ 0x555986c6bc08 llvm::function_ref<>::callback_fn<>()
@ 0x555986bf70b3 clang::Sema::FinishTemplateArgumentDeduction()
@ 0x555986c6bb56 llvm::function_ref<>::callback_fn<>()
@ 0x5559862dbc2f clang::Sema::runWithSufficientStackSpace()
@ 0x555986bf8f8d clang::Sema::DeduceTemplateArguments()
@ 0x555986a7229a clang::Sema::AddMethodTemplateCandidate()
@ 0x555986a72c6f clang::Sema::AddMethodCandidate()
@ 0x555986a751dd clang::Sema::AddMemberOperatorCandidates()
@ 0x555986a881f6 clang::Sema::LookupOverloadedBinOp()
@ 0x555986a88673 clang::Sema::CreateOverloadedBinOp()
@ 0x5559866ff91a BuildOverloadedBinOp()
@ 0x5559866c643e clang::Sema::ActOnBinOp()
@ 0x555986050faf clang::Parser::ParseRHSOfBinaryExpression()
@ 0x55598604fcac clang::Parser::ParseAssignmentExpression()
@ 0x555
```
</details>
https://github.com/llvm/llvm-project/pull/72213
More information about the cfe-commits
mailing list