[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