summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis/ModuleSummaryAnalysis.cpp
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2017-05-09 23:02:10 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2017-05-09 23:02:10 +0000
commit77e9e84a8e267597f4832980a9d84b1bc3598b3c (patch)
treeb1e59f0648d45c55970124a964a4d59192f1b7cb /llvm/lib/Analysis/ModuleSummaryAnalysis.cpp
parentc3d677f9d9bae73b34dae09e0e0afba29eed18a3 (diff)
downloadbcm5719-llvm-77e9e84a8e267597f4832980a9d84b1bc3598b3c.tar.gz
bcm5719-llvm-77e9e84a8e267597f4832980a9d84b1bc3598b3c.zip
Don't mark a member as a member specialization until we know we're keeping the specialization.
This improves our behavior in a few ways: * We now guarantee that if a member is marked as being a member specialization, there will actually be a member specialization declaration somewhere on its redeclaration chain. This fixes a crash in modules builds where we would try to check that there was a visible declaration of the member specialization and be surprised to not find any declaration of it at all. * We don't set the source location of the in-class declaration of the member specialization to the out-of-line declaration's location until we have actually finished merging them. This fixes some very silly looking diagnostics, where we'd point a "previous declaration is here" note at the same declaration we're complaining about. Ideally we wouldn't mess with the prior declaration's location at all, but too much code assumes that the first declaration of an entity is a reasonable thing to use as an indication of where it was declared, and that's not really true for a member specialization unless we fake it like this. llvm-svn: 302596
Diffstat (limited to 'llvm/lib/Analysis/ModuleSummaryAnalysis.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud