forked from OSchip/llvm-project
Amending r249721 to properly handle pathological attribute-related names like __ and ____.
Patch by Adrian Zgorzalek! llvm-svn: 249833
This commit is contained in:
parent
49692eda7e
commit
6269236a8e
|
@ -1311,8 +1311,8 @@ void Sema::AddAssumeAlignedAttr(SourceRange AttrRange, Decl *D, Expr *E,
|
|||
/// Normalize the attribute, __foo__ becomes foo.
|
||||
/// Returns true if normalization was applied.
|
||||
static bool normalizeName(StringRef &AttrName) {
|
||||
if (AttrName.startswith("__") && AttrName.endswith("__")) {
|
||||
assert(AttrName.size() > 4 && "Name too short");
|
||||
if (AttrName.size() > 4 && AttrName.startswith("__") &&
|
||||
AttrName.endswith("__")) {
|
||||
AttrName = AttrName.drop_front(2).drop_back(2);
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -19,6 +19,7 @@ void f13(int *i, int *j) __attribute__((ownership_holds(foo, 1))) __attribute__(
|
|||
void f14(int i, int j, int *k) __attribute__((ownership_holds(foo, 3))) __attribute__((ownership_takes(foo, 3))); // expected-error {{'ownership_holds' and 'ownership_takes' attributes are not compatible}}
|
||||
|
||||
void f15(int, int)
|
||||
__attribute__((ownership_returns(foo, 1))) // expected-note {{declared with index 1 here}}
|
||||
__attribute__((ownership_returns(foo, 2))); // expected-error {{'ownership_returns' attribute index does not match; here it is 2}}
|
||||
void f16(int *i, int *j) __attribute__((ownership_holds(foo, 1))) __attribute__((ownership_holds(foo, 1))); // OK, same index
|
||||
__attribute__((ownership_returns(foo, 1))) // expected-note {{declared with index 1 here}}
|
||||
__attribute__((ownership_returns(foo, 2))); // expected-error {{'ownership_returns' attribute index does not match; here it is 2}}
|
||||
void f16(int *i, int *j) __attribute__((ownership_holds(foo, 1))) __attribute__((ownership_holds(foo, 1))); // OK, same index
|
||||
void f17(void*) __attribute__((ownership_takes(__, 1)));
|
||||
|
|
Loading…
Reference in New Issue