aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Sema/SemaInit.cpp
diff options
context:
space:
mode:
authorGabor Horvath <xazax.hun@gmail.com>2019-08-09 17:42:41 +0000
committerGabor Horvath <xazax.hun@gmail.com>2019-08-09 17:42:41 +0000
commit2bf522aea62e4fb653cacb68072167d25149099e (patch)
treeee2050bab03376b869b4f6e79688f864817b8285 /clang/lib/Sema/SemaInit.cpp
parent1c5542aa9d65dbc345e90802ba6966ba31a98f45 (diff)
downloadllvm-2bf522aea62e4fb653cacb68072167d25149099e.zip
llvm-2bf522aea62e4fb653cacb68072167d25149099e.tar.gz
llvm-2bf522aea62e4fb653cacb68072167d25149099e.tar.bz2
Fix a build bot failure and multiple warnings instances for range base for loops
llvm-svn: 368459
Diffstat (limited to 'clang/lib/Sema/SemaInit.cpp')
-rw-r--r--clang/lib/Sema/SemaInit.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/clang/lib/Sema/SemaInit.cpp b/clang/lib/Sema/SemaInit.cpp
index dfc12e9..3ac45e2 100644
--- a/clang/lib/Sema/SemaInit.cpp
+++ b/clang/lib/Sema/SemaInit.cpp
@@ -6616,7 +6616,7 @@ static void handleGslAnnotatedTypes(IndirectLocalPath &Path, Expr *Call,
return;
} else if (auto *OCE = dyn_cast<CXXOperatorCallExpr>(Call)) {
FunctionDecl *Callee = OCE->getDirectCallee();
- if (Callee->isCXXInstanceMember() &&
+ if (Callee && Callee->isCXXInstanceMember() &&
shouldTrackImplicitObjectArg(cast<CXXMethodDecl>(Callee)))
VisitPointerArg(Callee, OCE->getArg(0));
return;
@@ -7070,8 +7070,11 @@ static SourceRange nextPathEntryRange(const IndirectLocalPath &Path, unsigned I,
// supporting lifetime extension.
break;
- case IndirectLocalPathEntry::DefaultInit:
case IndirectLocalPathEntry::VarInit:
+ if (cast<VarDecl>(Path[I].D)->isImplicit())
+ return SourceRange();
+ LLVM_FALLTHROUGH;
+ case IndirectLocalPathEntry::DefaultInit:
return Path[I].E->getSourceRange();
}
}
@@ -7133,7 +7136,7 @@ void Sema::checkInitializerLifetime(const InitializedEntity &Entity,
return false;
}
- if (IsGslPtrInitWithGslTempOwner) {
+ if (IsGslPtrInitWithGslTempOwner && DiagLoc.isValid()) {
Diag(DiagLoc, diag::warn_dangling_lifetime_pointer) << DiagRange;
return false;
}