mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-02-10 19:34:29 +00:00
Clear LV cache when dropping availability attributes.
llvm-svn: 171906
This commit is contained in:
parent
27614589dc
commit
b68dd4717e
@ -2043,6 +2043,7 @@ AvailabilityAttr *Sema::mergeAvailabilityAttr(NamedDecl *D, SourceRange Range,
|
||||
VersionTuple MergedDeprecated = Deprecated;
|
||||
VersionTuple MergedObsoleted = Obsoleted;
|
||||
bool FoundAny = false;
|
||||
bool DroppedAny = false;
|
||||
|
||||
if (D->hasAttrs()) {
|
||||
AttrVec &Attrs = D->getAttrs();
|
||||
@ -2077,6 +2078,7 @@ AvailabilityAttr *Sema::mergeAvailabilityAttr(NamedDecl *D, SourceRange Range,
|
||||
Diag(OldAA->getLocation(), diag::warn_mismatched_availability);
|
||||
Diag(Range.getBegin(), diag::note_previous_attribute);
|
||||
Attrs.erase(Attrs.begin() + i);
|
||||
DroppedAny = true;
|
||||
--e;
|
||||
continue;
|
||||
}
|
||||
@ -2096,6 +2098,7 @@ AvailabilityAttr *Sema::mergeAvailabilityAttr(NamedDecl *D, SourceRange Range,
|
||||
MergedIntroduced2, MergedDeprecated2,
|
||||
MergedObsoleted2)) {
|
||||
Attrs.erase(Attrs.begin() + i);
|
||||
DroppedAny = true;
|
||||
--e;
|
||||
continue;
|
||||
}
|
||||
@ -2107,6 +2110,9 @@ AvailabilityAttr *Sema::mergeAvailabilityAttr(NamedDecl *D, SourceRange Range,
|
||||
}
|
||||
}
|
||||
|
||||
if (DroppedAny)
|
||||
D->ClearLVCache();
|
||||
|
||||
if (FoundAny &&
|
||||
MergedIntroduced == Introduced &&
|
||||
MergedDeprecated == Deprecated &&
|
||||
|
@ -51,3 +51,6 @@ void f8() {
|
||||
int (^b)(int);
|
||||
b = ^ (int i) __attribute__((availability(macosx,introduced=10.2))) { return 1; }; // expected-warning {{'availability' attribute ignored}}
|
||||
}
|
||||
|
||||
extern int x2 __attribute__((availability(macosx,introduced=10.2))); // expected-note {{previous attribute is here}}
|
||||
extern int x2 __attribute__((availability(macosx,introduced=10.5))); // expected-warning {{availability does not match previous declaration}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user