mirror of
https://github.com/freebsd/freebsd-src
synced 2024-10-03 07:04:53 +00:00
Merge commit 5f4ee5a2dfa9 from llvm-project (by Shanzhi):
[Clang][AST] Fix a crash on attaching doc comments (#78716)
This crash is basically caused by calling
`ASTContext::getRawCommentForDeclNoCacheImp` with its input arguments
`RepresentativeLocForDecl` and `CommentsInTheFile` refering to different
files. A reduced reproducer is provided in this patch.
After the source locations for instantiations of funtion template are
corrected in the commit 256a0b298c68b89688b80350b034daf2f7785b67, the
variable `CommitsInThisFile` in the function
`ASTContext::attachCommentsToJustParsedDecls` would refer to the source
file rather than the header file for implicit function template
instantiation. Therefore, in the first loop in
`ASTContext::attachCommentsToJustParsedDecls`, `D` should also be
adjusted for relevant scenarios like the second loop.
Fixes #67979
Fixes #68524
Fixes #70550
This should fix a segfault when compiling graphics/gdal.
PR: 276104
MFC after: 1 month
(cherry picked from commit dc36515b62
)
This commit is contained in:
parent
3731f53de1
commit
6c596be665
|
@ -498,7 +498,11 @@ void ASTContext::attachCommentsToJustParsedDecls(ArrayRef<Decl *> Decls,
|
|||
return;
|
||||
|
||||
FileID File;
|
||||
for (Decl *D : Decls) {
|
||||
for (const Decl *D : Decls) {
|
||||
if (D->isInvalidDecl())
|
||||
continue;
|
||||
|
||||
D = &adjustDeclToTemplate(*D);
|
||||
SourceLocation Loc = D->getLocation();
|
||||
if (Loc.isValid()) {
|
||||
// See if there are any new comments that are not attached to a decl.
|
||||
|
|
Loading…
Reference in a new issue