[PATCH] D142384: [C++20] Fix a crash with modules.
Utkarsh Saxena via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Feb 1 23:41:31 PST 2023
usaxena95 added a comment.
In D142384#4096935 <https://reviews.llvm.org/D142384#4096935>, @ilya-biryukov wrote:
> @usaxena95 could you give an example of the code that fails the assertion? Is it some of the tests?
`assert(getDefinition())` fails about 3.6k tests.
`assert(!isa<CXXRecordDecl>(this) || getDefinition());` fails a handful 23 tests in ObjC:
Failed Tests (23):
Clang :: Analysis/CFContainers.mm
Clang :: Analysis/blocks.m
Clang :: Analysis/dtor-array.cpp
Clang :: Analysis/edges-new.mm
Clang :: Analysis/incorrect-checker-names.mm
Clang :: Analysis/malloc.mm
Clang :: Analysis/mig.mm
Clang :: Analysis/retain-release.m
Clang :: Analysis/retain-release.mm
Clang :: Analysis/stack-capture-leak-arc.mm
Clang :: Analysis/stack-capture-leak-no-arc.mm
Clang :: Analysis/taint-tester.cpp
Clang :: CodeGenObjCXX/encode.mm
Clang-Unit :: AST/./ASTTests/0/100
Clang-Unit :: AST/./ASTTests/1/100
Clang-Unit :: AST/./ASTTests/14/100
Clang-Unit :: AST/./ASTTests/16/100
Clang-Unit :: AST/./ASTTests/76/100
Clang-Unit :: AST/./ASTTests/77/100
Clang-Unit :: AST/./ASTTests/78/100
Clang-Unit :: AST/./ASTTests/79/100
Clang-Unit :: AST/./ASTTests/98/100
Clang-Unit :: AST/./ASTTests/99/100
`bin/clang $SRC/llvm-project/clang/test/CodeGenObjCXX/encode.mm`
Stacktrace: https://pastebin.pl/view/c6f505a7
`assert((!isa<CXXRecordDecl>(this) || getDefinition() || !FirstDecl) && "Field without a CXX definition ?");` works. So if there is no CXX definition then the fields are always empty and current callers are fine with that.
I think this is fine, and we should just use the definition when it is available without asking the callers to request fields only when definition is available.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D142384/new/
https://reviews.llvm.org/D142384
More information about the cfe-commits
mailing list