Clang crashes when parsing operator== for an enum parameter with a bool enum base and no enumerator list · Issue #56560 · llvm/llvm-project (original) (raw)

Skip to content

Provide feedback

Saved searches

Use saved searches to filter your results more quickly

Sign up

@alanzhao1

Description

@alanzhao1

llvm commit I have checked out where this is broken (not necessarily the cause): 4a40fa8

Repro steps

test.cpp:

enum Foo : bool;

bool bar(Foo a, Foo b) { return a == b; }

  1. Build Clang with LLVM_ENABLE_ASSERTIONS:BOOL=ON
  2. Run clang++ -c test.cpp -o test

Expected result:
clang should compile the file

Actual result:

clang crashes with the assertion

clang++: /path/to/llvm/repo/llvm-project/clang/lib/AST/Expr.cpp:1836: bool clang::CastExpr::CastConsistency() const: Assertion `!getType()->isBooleanType() && "unheralded conversion to bool"' failed.

The full stacktrace is in the attached stacktrace.txt.

(I had to change the extension of the .cpp file and the .sh file as GitHub doesn't support those file type extensions as attachments)

stacktrace.txt
test-f893c2.cpp.txt
test-f893c2.sh.txt