diff options
author | David Majnemer <david.majnemer@gmail.com> | 2015-08-21 06:44:10 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2015-08-21 06:44:10 +0000 |
commit | 9588a95b8282cf79e7cf95ca5fd2a1dac6d253d3 (patch) | |
tree | 058b831fd2170445c9ea43a7628b92b5a29c7935 /clang/lib/Sema/SemaInit.cpp | |
parent | 84cfb1dcdeb694a10dce9927ec5f0e159e46ffa9 (diff) | |
download | bcm5719-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.cpp | 7 |
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); } } } |