PR21706: -Wunsequenced was missing warnings when leaving a sequenced region that contained side effects.
llvm-svn: 223184
This commit is contained in:
@@ -7014,11 +7014,12 @@ class SequenceChecker : public EvaluatedExprVisitor<SequenceChecker> {
|
||||
Self.ModAsSideEffect = &ModAsSideEffect;
|
||||
}
|
||||
~SequencedSubexpression() {
|
||||
for (unsigned I = 0, E = ModAsSideEffect.size(); I != E; ++I) {
|
||||
UsageInfo &U = Self.UsageMap[ModAsSideEffect[I].first];
|
||||
U.Uses[UK_ModAsSideEffect] = ModAsSideEffect[I].second;
|
||||
Self.addUsage(U, ModAsSideEffect[I].first,
|
||||
ModAsSideEffect[I].second.Use, UK_ModAsValue);
|
||||
for (auto MI = ModAsSideEffect.rbegin(), ME = ModAsSideEffect.rend();
|
||||
MI != ME; ++MI) {
|
||||
UsageInfo &U = Self.UsageMap[MI->first];
|
||||
auto &SideEffectUsage = U.Uses[UK_ModAsSideEffect];
|
||||
Self.addUsage(U, MI->first, SideEffectUsage.Use, UK_ModAsValue);
|
||||
SideEffectUsage = MI->second;
|
||||
}
|
||||
Self.ModAsSideEffect = OldModAsSideEffect;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user