summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaInit.cpp
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2015-08-21 06:44:10 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2015-08-21 06:44:10 +0000
commit9588a95b8282cf79e7cf95ca5fd2a1dac6d253d3 (patch)
tree058b831fd2170445c9ea43a7628b92b5a29c7935 /clang/lib/Sema/SemaInit.cpp
parent84cfb1dcdeb694a10dce9927ec5f0e159e46ffa9 (diff)
downloadbcm5719-llvm-9588a95b8282cf79e7cf95ca5fd2a1dac6d253d3.tar.gz
bcm5719-llvm-9588a95b8282cf79e7cf95ca5fd2a1dac6d253d3.zip
[Sema] Don't crash when diagnosing hack in libstdc++
While working around a bug in certain standard library implementations, we would try to diagnose the issue so that library implementors would fix their code. However, we assumed an entity being initialized was a non-static data member subobject when other circumstances are possible. This fixes PR24526. llvm-svn: 245675
Diffstat (limited to 'clang/lib/Sema/SemaInit.cpp')
-rw-r--r--clang/lib/Sema/SemaInit.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/clang/lib/Sema/SemaInit.cpp b/clang/lib/Sema/SemaInit.cpp
index adec512693f..1b958ae782c 100644
--- a/clang/lib/Sema/SemaInit.cpp
+++ b/clang/lib/Sema/SemaInit.cpp
@@ -443,8 +443,11 @@ ExprResult InitListChecker::PerformEmptyInit(Sema &SemaRef,
if (!VerifyOnly) {
SemaRef.Diag(CtorDecl->getLocation(),
diag::warn_invalid_initializer_from_system_header);
- SemaRef.Diag(Entity.getDecl()->getLocation(),
- diag::note_used_in_initialization_here);
+ if (Entity.getKind() == InitializedEntity::EK_Member)
+ SemaRef.Diag(Entity.getDecl()->getLocation(),
+ diag::note_used_in_initialization_here);
+ else if (Entity.getKind() == InitializedEntity::EK_ArrayElement)
+ SemaRef.Diag(Loc, diag::note_used_in_initialization_here);
}
}
}
OpenPOWER on IntegriCloud