return;
if (pointer)
- D->addAttr(::new (S.Context) PtGuardedVarAttr(Attr.getLoc(), S.Context));
+ D->addAttr(::new (S.Context) PtGuardedVarAttr(Attr.getRange(), S.Context));
else
- D->addAttr(::new (S.Context) GuardedVarAttr(Attr.getLoc(), S.Context));
+ D->addAttr(::new (S.Context) GuardedVarAttr(Attr.getRange(), S.Context));
}
static void handleGuardedByAttr(Sema &S, Decl *D, const AttributeList &Attr,
return;
if (pointer)
- D->addAttr(::new (S.Context) PtGuardedByAttr(Attr.getLoc(),
+ D->addAttr(::new (S.Context) PtGuardedByAttr(Attr.getRange(),
S.Context, Arg));
else
- D->addAttr(::new (S.Context) GuardedByAttr(Attr.getLoc(), S.Context, Arg));
+ D->addAttr(::new (S.Context) GuardedByAttr(Attr.getRange(), S.Context, Arg));
}
}
if (scoped)
- D->addAttr(::new (S.Context) ScopedLockableAttr(Attr.getLoc(), S.Context));
+ D->addAttr(::new (S.Context) ScopedLockableAttr(Attr.getRange(), S.Context));
else
- D->addAttr(::new (S.Context) LockableAttr(Attr.getLoc(), S.Context));
+ D->addAttr(::new (S.Context) LockableAttr(Attr.getRange(), S.Context));
}
static void handleNoThreadSafetyAttr(Sema &S, Decl *D,
return;
}
- D->addAttr(::new (S.Context) NoThreadSafetyAnalysisAttr(Attr.getLoc(),
+ D->addAttr(::new (S.Context) NoThreadSafetyAnalysisAttr(Attr.getRange(),
S.Context));
}
Expr **StartArg = Size == 0 ? 0 : &Args[0];
if (before)
- D->addAttr(::new (S.Context) AcquiredBeforeAttr(Attr.getLoc(), S.Context,
+ D->addAttr(::new (S.Context) AcquiredBeforeAttr(Attr.getRange(), S.Context,
StartArg, Size));
else
- D->addAttr(::new (S.Context) AcquiredAfterAttr(Attr.getLoc(), S.Context,
+ D->addAttr(::new (S.Context) AcquiredAfterAttr(Attr.getRange(), S.Context,
StartArg, Size));
}
Expr **StartArg = Size == 0 ? 0 : &Args[0];
if (exclusive)
- D->addAttr(::new (S.Context) ExclusiveLockFunctionAttr(Attr.getLoc(),
+ D->addAttr(::new (S.Context) ExclusiveLockFunctionAttr(Attr.getRange(),
S.Context, StartArg,
Size));
else
- D->addAttr(::new (S.Context) SharedLockFunctionAttr(Attr.getLoc(),
+ D->addAttr(::new (S.Context) SharedLockFunctionAttr(Attr.getRange(),
S.Context, StartArg,
Size));
}
Expr **StartArg = Size == 0 ? 0 : &Args[0];
if (exclusive)
- D->addAttr(::new (S.Context) ExclusiveTrylockFunctionAttr(Attr.getLoc(),
+ D->addAttr(::new (S.Context) ExclusiveTrylockFunctionAttr(Attr.getRange(),
S.Context,
StartArg, Size));
else
- D->addAttr(::new (S.Context) SharedTrylockFunctionAttr(Attr.getLoc(),
+ D->addAttr(::new (S.Context) SharedTrylockFunctionAttr(Attr.getRange(),
S.Context, StartArg,
Size));
}
Expr **StartArg = Size == 0 ? 0 : &Args[0];
if (exclusive)
- D->addAttr(::new (S.Context) ExclusiveLocksRequiredAttr(Attr.getLoc(),
+ D->addAttr(::new (S.Context) ExclusiveLocksRequiredAttr(Attr.getRange(),
S.Context, StartArg,
Size));
else
- D->addAttr(::new (S.Context) SharedLocksRequiredAttr(Attr.getLoc(),
+ D->addAttr(::new (S.Context) SharedLocksRequiredAttr(Attr.getRange(),
S.Context, StartArg,
Size));
}
assert(Size == Attr.getNumArgs());
Expr **StartArg = Size == 0 ? 0 : &Args[0];
- D->addAttr(::new (S.Context) UnlockFunctionAttr(Attr.getLoc(), S.Context,
+ D->addAttr(::new (S.Context) UnlockFunctionAttr(Attr.getRange(), S.Context,
StartArg, Size));
}
if (!checkForLockableRecord(S, D, Attr, getRecordType(Arg->getType())))
return;
- D->addAttr(::new (S.Context) LockReturnedAttr(Attr.getLoc(), S.Context, Arg));
+ D->addAttr(::new (S.Context) LockReturnedAttr(Attr.getRange(), S.Context, Arg));
}
static void handleLocksExcludedAttr(Sema &S, Decl *D,
assert(Size == Attr.getNumArgs());
Expr **StartArg = Size == 0 ? 0 : &Args[0];
- D->addAttr(::new (S.Context) LocksExcludedAttr(Attr.getLoc(), S.Context,
+ D->addAttr(::new (S.Context) LocksExcludedAttr(Attr.getRange(), S.Context,
StartArg, Size));
}
return;
if (TagDecl *TD = dyn_cast<TagDecl>(D))
- TD->addAttr(::new (S.Context) PackedAttr(Attr.getLoc(), S.Context));
+ TD->addAttr(::new (S.Context) PackedAttr(Attr.getRange(), S.Context));
else if (FieldDecl *FD = dyn_cast<FieldDecl>(D)) {
// If the alignment is less than or equal to 8 bits, the packed attribute
// has no effect.
S.Diag(Attr.getLoc(), diag::warn_attribute_ignored_for_field_of_type)
<< Attr.getName() << FD->getType();
else
- FD->addAttr(::new (S.Context) PackedAttr(Attr.getLoc(), S.Context));
+ FD->addAttr(::new (S.Context) PackedAttr(Attr.getRange(), S.Context));
} else
S.Diag(Attr.getLoc(), diag::warn_attribute_ignored) << Attr.getName();
}
static void handleMsStructAttr(Sema &S, Decl *D, const AttributeList &Attr) {
if (TagDecl *TD = dyn_cast<TagDecl>(D))
- TD->addAttr(::new (S.Context) MsStructAttr(Attr.getLoc(), S.Context));
+ TD->addAttr(::new (S.Context) MsStructAttr(Attr.getRange(), S.Context));
else
S.Diag(Attr.getLoc(), diag::warn_attribute_ignored) << Attr.getName();
}
// The IBAction attributes only apply to instance methods.
if (ObjCMethodDecl *MD = dyn_cast<ObjCMethodDecl>(D))
if (MD->isInstanceMethod()) {
- D->addAttr(::new (S.Context) IBActionAttr(Attr.getLoc(), S.Context));
+ D->addAttr(::new (S.Context) IBActionAttr(Attr.getRange(), S.Context));
return;
}
// The IBOutlet attributes only apply to instance variables of
// Objective-C classes.
if (isa<ObjCIvarDecl>(D) || isa<ObjCPropertyDecl>(D)) {
- D->addAttr(::new (S.Context) IBOutletAttr(Attr.getLoc(), S.Context));
+ D->addAttr(::new (S.Context) IBOutletAttr(Attr.getRange(), S.Context));
return;
}
S.Diag(Attr.getLoc(), diag::err_iboutletcollection_type) << II;
return;
}
- D->addAttr(::new (S.Context) IBOutletCollectionAttr(Attr.getLoc(), S.Context,
+ D->addAttr(::new (S.Context) IBOutletCollectionAttr(Attr.getRange(), S.Context,
QT));
}
unsigned* start = &NonNullArgs[0];
unsigned size = NonNullArgs.size();
llvm::array_pod_sort(start, start + size);
- D->addAttr(::new (S.Context) NonNullAttr(Attr.getLoc(), S.Context, start,
+ D->addAttr(::new (S.Context) NonNullAttr(Attr.getRange(), S.Context, start,
size));
}
}
// GCC will accept anything as the argument of weakref. Should we
// check for an existing decl?
- D->addAttr(::new (S.Context) AliasAttr(Attr.getLoc(), S.Context,
+ D->addAttr(::new (S.Context) AliasAttr(Attr.getRange(), S.Context,
Str->getString()));
}
- D->addAttr(::new (S.Context) WeakRefAttr(Attr.getLoc(), S.Context));
+ D->addAttr(::new (S.Context) WeakRefAttr(Attr.getRange(), S.Context));
}
static void handleAliasAttr(Sema &S, Decl *D, const AttributeList &Attr) {
// FIXME: check if target symbol exists in current file
- D->addAttr(::new (S.Context) AliasAttr(Attr.getLoc(), S.Context,
+ D->addAttr(::new (S.Context) AliasAttr(Attr.getRange(), S.Context,
Str->getString()));
}
return;
}
- D->addAttr(::new (S.Context) NakedAttr(Attr.getLoc(), S.Context));
+ D->addAttr(::new (S.Context) NakedAttr(Attr.getRange(), S.Context));
}
static void handleAlwaysInlineAttr(Sema &S, Decl *D,
return;
}
- D->addAttr(::new (S.Context) AlwaysInlineAttr(Attr.getLoc(), S.Context));
+ D->addAttr(::new (S.Context) AlwaysInlineAttr(Attr.getRange(), S.Context));
}
static void handleMallocAttr(Sema &S, Decl *D, const AttributeList &Attr) {
if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(D)) {
QualType RetTy = FD->getResultType();
if (RetTy->isAnyPointerType() || RetTy->isBlockPointerType()) {
- D->addAttr(::new (S.Context) MallocAttr(Attr.getLoc(), S.Context));
+ D->addAttr(::new (S.Context) MallocAttr(Attr.getRange(), S.Context));
return;
}
}
if (!checkAttributeNumArgs(S, Attr, 0))
return;
- D->addAttr(::new (S.Context) MayAliasAttr(Attr.getLoc(), S.Context));
+ D->addAttr(::new (S.Context) MayAliasAttr(Attr.getRange(), S.Context));
}
static void handleNoCommonAttr(Sema &S, Decl *D, const AttributeList &Attr) {
assert(!Attr.isInvalid());
if (isa<VarDecl>(D))
- D->addAttr(::new (S.Context) NoCommonAttr(Attr.getLoc(), S.Context));
+ D->addAttr(::new (S.Context) NoCommonAttr(Attr.getRange(), S.Context));
else
S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type)
<< Attr.getName() << ExpectedVariable;
static void handleCommonAttr(Sema &S, Decl *D, const AttributeList &Attr) {
assert(!Attr.isInvalid());
if (isa<VarDecl>(D))
- D->addAttr(::new (S.Context) CommonAttr(Attr.getLoc(), S.Context));
+ D->addAttr(::new (S.Context) CommonAttr(Attr.getRange(), S.Context));
else
S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type)
<< Attr.getName() << ExpectedVariable;
return;
}
- D->addAttr(::new (S.Context) NoReturnAttr(attr.getLoc(), S.Context));
+ D->addAttr(::new (S.Context) NoReturnAttr(attr.getRange(), S.Context));
}
bool Sema::CheckNoReturnAttr(const AttributeList &attr) {
}
}
- D->addAttr(::new (S.Context) AnalyzerNoReturnAttr(Attr.getLoc(), S.Context));
+ D->addAttr(::new (S.Context) AnalyzerNoReturnAttr(Attr.getRange(), S.Context));
}
// PS3 PPU-specific.
count++;
}
- D->addAttr(::new (S.Context) VecReturnAttr(Attr.getLoc(), S.Context));
+ D->addAttr(::new (S.Context) VecReturnAttr(Attr.getRange(), S.Context));
}
static void handleDependencyAttr(Sema &S, Decl *D, const AttributeList &Attr) {
return;
}
- D->addAttr(::new (S.Context) UnusedAttr(Attr.getLoc(), S.Context));
+ D->addAttr(::new (S.Context) UnusedAttr(Attr.getRange(), S.Context));
}
static void handleUsedAttr(Sema &S, Decl *D, const AttributeList &Attr) {
return;
}
- D->addAttr(::new (S.Context) UsedAttr(Attr.getLoc(), S.Context));
+ D->addAttr(::new (S.Context) UsedAttr(Attr.getRange(), S.Context));
}
static void handleConstructorAttr(Sema &S, Decl *D, const AttributeList &Attr) {
return;
}
- D->addAttr(::new (S.Context) ConstructorAttr(Attr.getLoc(), S.Context,
+ D->addAttr(::new (S.Context) ConstructorAttr(Attr.getRange(), S.Context,
priority));
}
return;
}
- D->addAttr(::new (S.Context) DestructorAttr(Attr.getLoc(), S.Context,
+ D->addAttr(::new (S.Context) DestructorAttr(Attr.getRange(), S.Context,
priority));
}
Str = SE->getString();
}
- D->addAttr(::new (S.Context) DeprecatedAttr(Attr.getLoc(), S.Context, Str));
+ D->addAttr(::new (S.Context) DeprecatedAttr(Attr.getRange(), S.Context, Str));
}
static void handleUnavailableAttr(Sema &S, Decl *D, const AttributeList &Attr) {
}
Str = SE->getString();
}
- D->addAttr(::new (S.Context) UnavailableAttr(Attr.getLoc(), S.Context, Str));
+ D->addAttr(::new (S.Context) UnavailableAttr(Attr.getRange(), S.Context, Str));
}
static void handleArcWeakrefUnavailableAttr(Sema &S, Decl *D,
}
D->addAttr(::new (S.Context) ArcWeakrefUnavailableAttr(
- Attr.getLoc(), S.Context));
+ Attr.getRange(), S.Context));
}
static void handleAvailabilityAttr(Sema &S, Decl *D,
return;
}
- D->addAttr(::new (S.Context) AvailabilityAttr(Attr.getLoc(), S.Context,
+ D->addAttr(::new (S.Context) AvailabilityAttr(Attr.getRange(), S.Context,
Platform,
Introduced.Version,
Deprecated.Version,
return;
}
- D->addAttr(::new (S.Context) VisibilityAttr(Attr.getLoc(), S.Context, type));
+ D->addAttr(::new (S.Context) VisibilityAttr(Attr.getRange(), S.Context, type));
}
static void handleObjCMethodFamilyAttr(Sema &S, Decl *decl,
return;
}
- method->addAttr(new (S.Context) ObjCMethodFamilyAttr(Attr.getLoc(),
+ method->addAttr(new (S.Context) ObjCMethodFamilyAttr(Attr.getRange(),
S.Context, family));
}
return;
}
- D->addAttr(::new (S.Context) ObjCExceptionAttr(Attr.getLoc(), S.Context));
+ D->addAttr(::new (S.Context) ObjCExceptionAttr(Attr.getRange(), S.Context));
}
static void handleObjCNSObject(Sema &S, Decl *D, const AttributeList &Attr) {
return;
}
}
- D->addAttr(::new (S.Context) ObjCNSObjectAttr(Attr.getLoc(), S.Context));
+ D->addAttr(::new (S.Context) ObjCNSObjectAttr(Attr.getRange(), S.Context));
}
static void
return;
}
- D->addAttr(::new (S.Context) OverloadableAttr(Attr.getLoc(), S.Context));
+ D->addAttr(::new (S.Context) OverloadableAttr(Attr.getRange(), S.Context));
}
static void handleBlocksAttr(Sema &S, Decl *D, const AttributeList &Attr) {
return;
}
- D->addAttr(::new (S.Context) BlocksAttr(Attr.getLoc(), S.Context, type));
+ D->addAttr(::new (S.Context) BlocksAttr(Attr.getRange(), S.Context, type));
}
static void handleSentinelAttr(Sema &S, Decl *D, const AttributeList &Attr) {
<< Attr.getName() << ExpectedFunctionMethodOrBlock;
return;
}
- D->addAttr(::new (S.Context) SentinelAttr(Attr.getLoc(), S.Context, sentinel,
+ D->addAttr(::new (S.Context) SentinelAttr(Attr.getRange(), S.Context, sentinel,
nullPos));
}
return;
}
- D->addAttr(::new (S.Context) WarnUnusedResultAttr(Attr.getLoc(), S.Context));
+ D->addAttr(::new (S.Context) WarnUnusedResultAttr(Attr.getRange(), S.Context));
}
static void handleWeakAttr(Sema &S, Decl *D, const AttributeList &Attr) {
return;
}
- nd->addAttr(::new (S.Context) WeakAttr(Attr.getLoc(), S.Context));
+ nd->addAttr(::new (S.Context) WeakAttr(Attr.getRange(), S.Context));
}
static void handleWeakImportAttr(Sema &S, Decl *D, const AttributeList &Attr) {
return;
}
- D->addAttr(::new (S.Context) WeakImportAttr(Attr.getLoc(), S.Context));
+ D->addAttr(::new (S.Context) WeakImportAttr(Attr.getRange(), S.Context));
}
static void handleReqdWorkGroupSize(Sema &S, Decl *D,
}
WGSize[i] = (unsigned) ArgNum.getZExtValue();
}
- D->addAttr(::new (S.Context) ReqdWorkGroupSizeAttr(Attr.getLoc(), S.Context,
+ D->addAttr(::new (S.Context) ReqdWorkGroupSizeAttr(Attr.getRange(), S.Context,
WGSize[0], WGSize[1],
WGSize[2]));
}
return;
}
- D->addAttr(::new (S.Context) SectionAttr(Attr.getLoc(), S.Context,
+ D->addAttr(::new (S.Context) SectionAttr(Attr.getRange(), S.Context,
SE->getString()));
}
if (Existing->getLocation().isInvalid())
Existing->setRange(Attr.getRange());
} else {
- D->addAttr(::new (S.Context) NoThrowAttr(Attr.getLoc(), S.Context));
+ D->addAttr(::new (S.Context) NoThrowAttr(Attr.getRange(), S.Context));
}
}
if (Existing->getLocation().isInvalid())
Existing->setRange(Attr.getRange());
} else {
- D->addAttr(::new (S.Context) ConstAttr(Attr.getLoc(), S.Context));
+ D->addAttr(::new (S.Context) ConstAttr(Attr.getRange(), S.Context));
}
}
if (!checkAttributeNumArgs(S, Attr, 0))
return;
- D->addAttr(::new (S.Context) PureAttr(Attr.getLoc(), S.Context));
+ D->addAttr(::new (S.Context) PureAttr(Attr.getRange(), S.Context));
}
static void handleCleanupAttr(Sema &S, Decl *D, const AttributeList &Attr) {
return;
}
- D->addAttr(::new (S.Context) CleanupAttr(Attr.getLoc(), S.Context, FD));
+ D->addAttr(::new (S.Context) CleanupAttr(Attr.getRange(), S.Context, FD));
S.MarkDeclarationReferenced(Attr.getParameterLoc(), FD);
}
return;
}
- D->addAttr(::new (S.Context) FormatArgAttr(Attr.getLoc(), S.Context,
+ D->addAttr(::new (S.Context) FormatArgAttr(Attr.getRange(), S.Context,
Idx.getZExtValue()));
}
Attr.setInvalid();
return;
}
- D->addAttr(::new (S.Context) InitPriorityAttr(Attr.getLoc(), S.Context,
+ D->addAttr(::new (S.Context) InitPriorityAttr(Attr.getRange(), S.Context,
prioritynum));
}
}
}
- D->addAttr(::new (S.Context) FormatAttr(Attr.getLoc(), S.Context, Format,
+ D->addAttr(::new (S.Context) FormatAttr(Attr.getRange(), S.Context, Format,
Idx.getZExtValue(),
FirstArg.getZExtValue()));
}
}
}
- RD->addAttr(::new (S.Context) TransparentUnionAttr(Attr.getLoc(), S.Context));
+ RD->addAttr(::new (S.Context) TransparentUnionAttr(Attr.getRange(), S.Context));
}
static void handleAnnotateAttr(Sema &S, Decl *D, const AttributeList &Attr) {
if ((*i)->getAnnotation() == SE->getString())
return;
}
- D->addAttr(::new (S.Context) AnnotateAttr(Attr.getLoc(), S.Context,
+ D->addAttr(::new (S.Context) AnnotateAttr(Attr.getRange(), S.Context,
SE->getString()));
}
// weaker alignment, rather than being silently ignored.
if (Attr.getNumArgs() == 0) {
- D->addAttr(::new (S.Context) AlignedAttr(Attr.getLoc(), S.Context, true, 0));
+ D->addAttr(::new (S.Context) AlignedAttr(Attr.getRange(), S.Context, true, 0));
return;
}
- S.AddAlignedAttr(Attr.getLoc(), D, Attr.getArg(0));
+ S.AddAlignedAttr(Attr.getRange(), D, Attr.getArg(0));
}
-void Sema::AddAlignedAttr(SourceLocation AttrLoc, Decl *D, Expr *E) {
+void Sema::AddAlignedAttr(SourceRange AttrRange, Decl *D, Expr *E) {
if (E->isTypeDependent() || E->isValueDependent()) {
// Save dependent expressions in the AST to be instantiated.
- D->addAttr(::new (Context) AlignedAttr(AttrLoc, Context, true, E));
+ D->addAttr(::new (Context) AlignedAttr(AttrRange, Context, true, E));
return;
}
+ SourceLocation AttrLoc = AttrRange.getBegin();
// FIXME: Cache the number on the Attr object?
llvm::APSInt Alignment(32);
if (!E->isIntegerConstantExpr(Alignment, Context)) {
return;
}
- D->addAttr(::new (Context) AlignedAttr(AttrLoc, Context, true, E));
+ D->addAttr(::new (Context) AlignedAttr(AttrRange, Context, true, E));
}
-void Sema::AddAlignedAttr(SourceLocation AttrLoc, Decl *D, TypeSourceInfo *TS) {
+void Sema::AddAlignedAttr(SourceRange AttrRange, Decl *D, TypeSourceInfo *TS) {
// FIXME: Cache the number on the Attr object if non-dependent?
// FIXME: Perform checking of type validity
- D->addAttr(::new (Context) AlignedAttr(AttrLoc, Context, false, TS));
+ D->addAttr(::new (Context) AlignedAttr(AttrRange, Context, false, TS));
return;
}
OldTy = VD->getType();
else {
S.Diag(D->getLocation(), diag::err_attr_wrong_decl)
- << "mode" << SourceRange(Attr.getLoc(), Attr.getLoc());
+ << "mode" << Attr.getRange();
return;
}
return;
}
- D->addAttr(::new (S.Context) NoDebugAttr(Attr.getLoc(), S.Context));
+ D->addAttr(::new (S.Context) NoDebugAttr(Attr.getRange(), S.Context));
}
static void handleNoInlineAttr(Sema &S, Decl *D, const AttributeList &Attr) {
return;
}
- D->addAttr(::new (S.Context) NoInlineAttr(Attr.getLoc(), S.Context));
+ D->addAttr(::new (S.Context) NoInlineAttr(Attr.getRange(), S.Context));
}
static void handleNoInstrumentFunctionAttr(Sema &S, Decl *D,
return;
}
- D->addAttr(::new (S.Context) NoInstrumentFunctionAttr(Attr.getLoc(),
+ D->addAttr(::new (S.Context) NoInstrumentFunctionAttr(Attr.getRange(),
S.Context));
}
return;
}
- D->addAttr(::new (S.Context) CUDAConstantAttr(Attr.getLoc(), S.Context));
+ D->addAttr(::new (S.Context) CUDAConstantAttr(Attr.getRange(), S.Context));
} else {
S.Diag(Attr.getLoc(), diag::warn_attribute_ignored) << "constant";
}
return;
}
- D->addAttr(::new (S.Context) CUDADeviceAttr(Attr.getLoc(), S.Context));
+ D->addAttr(::new (S.Context) CUDADeviceAttr(Attr.getRange(), S.Context));
} else {
S.Diag(Attr.getLoc(), diag::warn_attribute_ignored) << "device";
}
return;
}
- D->addAttr(::new (S.Context) CUDAGlobalAttr(Attr.getLoc(), S.Context));
+ D->addAttr(::new (S.Context) CUDAGlobalAttr(Attr.getRange(), S.Context));
} else {
S.Diag(Attr.getLoc(), diag::warn_attribute_ignored) << "global";
}
return;
}
- D->addAttr(::new (S.Context) CUDAHostAttr(Attr.getLoc(), S.Context));
+ D->addAttr(::new (S.Context) CUDAHostAttr(Attr.getRange(), S.Context));
} else {
S.Diag(Attr.getLoc(), diag::warn_attribute_ignored) << "host";
}
return;
}
- D->addAttr(::new (S.Context) CUDASharedAttr(Attr.getLoc(), S.Context));
+ D->addAttr(::new (S.Context) CUDASharedAttr(Attr.getRange(), S.Context));
} else {
S.Diag(Attr.getLoc(), diag::warn_attribute_ignored) << "shared";
}
return;
}
- D->addAttr(::new (S.Context) GNUInlineAttr(Attr.getLoc(), S.Context));
+ D->addAttr(::new (S.Context) GNUInlineAttr(Attr.getRange(), S.Context));
}
static void handleCallConvAttr(Sema &S, Decl *D, const AttributeList &Attr) {
switch (Attr.getKind()) {
case AttributeList::AT_fastcall:
- D->addAttr(::new (S.Context) FastCallAttr(Attr.getLoc(), S.Context));
+ D->addAttr(::new (S.Context) FastCallAttr(Attr.getRange(), S.Context));
return;
case AttributeList::AT_stdcall:
- D->addAttr(::new (S.Context) StdCallAttr(Attr.getLoc(), S.Context));
+ D->addAttr(::new (S.Context) StdCallAttr(Attr.getRange(), S.Context));
return;
case AttributeList::AT_thiscall:
- D->addAttr(::new (S.Context) ThisCallAttr(Attr.getLoc(), S.Context));
+ D->addAttr(::new (S.Context) ThisCallAttr(Attr.getRange(), S.Context));
return;
case AttributeList::AT_cdecl:
- D->addAttr(::new (S.Context) CDeclAttr(Attr.getLoc(), S.Context));
+ D->addAttr(::new (S.Context) CDeclAttr(Attr.getRange(), S.Context));
return;
case AttributeList::AT_pascal:
- D->addAttr(::new (S.Context) PascalAttr(Attr.getLoc(), S.Context));
+ D->addAttr(::new (S.Context) PascalAttr(Attr.getRange(), S.Context));
return;
case AttributeList::AT_pcs: {
Expr *Arg = Attr.getArg(0);
return;
}
- D->addAttr(::new (S.Context) PcsAttr(Attr.getLoc(), S.Context, PCS));
+ D->addAttr(::new (S.Context) PcsAttr(Attr.getRange(), S.Context, PCS));
}
default:
llvm_unreachable("unexpected attribute kind");
static void handleOpenCLKernelAttr(Sema &S, Decl *D, const AttributeList &Attr){
assert(!Attr.isInvalid());
- D->addAttr(::new (S.Context) OpenCLKernelAttr(Attr.getLoc(), S.Context));
+ D->addAttr(::new (S.Context) OpenCLKernelAttr(Attr.getRange(), S.Context));
}
bool Sema::CheckCallingConvAttr(const AttributeList &attr, CallingConv &CC) {
return;
}
- D->addAttr(::new (S.Context) RegparmAttr(Attr.getLoc(), S.Context, numParams));
+ D->addAttr(::new (S.Context) RegparmAttr(Attr.getRange(), S.Context, numParams));
}
/// Checks a regparm attribute, returning true if it is ill-formed and
}
}
- D->addAttr(::new (S.Context) CUDALaunchBoundsAttr(Attr.getLoc(), S.Context,
+ D->addAttr(::new (S.Context) CUDALaunchBoundsAttr(Attr.getRange(), S.Context,
MaxThreads.getZExtValue(),
MinBlocks.getZExtValue()));
} else {
ParmVarDecl *param = dyn_cast<ParmVarDecl>(D);
if (!param) {
S.Diag(D->getLocStart(), diag::warn_attribute_wrong_decl_type)
- << SourceRange(Attr.getLoc()) << Attr.getName() << ExpectedParameter;
+ << Attr.getRange() << Attr.getName() << ExpectedParameter;
return;
}
if (!typeOK) {
S.Diag(D->getLocStart(), diag::warn_ns_attribute_wrong_parameter_type)
- << SourceRange(Attr.getLoc()) << Attr.getName() << cf;
+ << Attr.getRange() << Attr.getName() << cf;
return;
}
if (cf)
- param->addAttr(::new (S.Context) CFConsumedAttr(Attr.getLoc(), S.Context));
+ param->addAttr(::new (S.Context) CFConsumedAttr(Attr.getRange(), S.Context));
else
- param->addAttr(::new (S.Context) NSConsumedAttr(Attr.getLoc(), S.Context));
+ param->addAttr(::new (S.Context) NSConsumedAttr(Attr.getRange(), S.Context));
}
static void handleNSConsumesSelfAttr(Sema &S, Decl *D,
const AttributeList &Attr) {
if (!isa<ObjCMethodDecl>(D)) {
S.Diag(D->getLocStart(), diag::warn_attribute_wrong_decl_type)
- << SourceRange(Attr.getLoc()) << Attr.getName() << ExpectedMethod;
+ << Attr.getRange() << Attr.getName() << ExpectedMethod;
return;
}
- D->addAttr(::new (S.Context) NSConsumesSelfAttr(Attr.getLoc(), S.Context));
+ D->addAttr(::new (S.Context) NSConsumesSelfAttr(Attr.getRange(), S.Context));
}
static void handleNSReturnsRetainedAttr(Sema &S, Decl *D,
returnType = FD->getResultType();
else {
S.Diag(D->getLocStart(), diag::warn_attribute_wrong_decl_type)
- << SourceRange(Attr.getLoc()) << Attr.getName()
+ << Attr.getRange() << Attr.getName()
<< ExpectedFunctionOrMethod;
return;
}
if (!typeOK) {
S.Diag(D->getLocStart(), diag::warn_ns_attribute_wrong_return_type)
- << SourceRange(Attr.getLoc())
- << Attr.getName() << isa<ObjCMethodDecl>(D) << cf;
+ << Attr.getRange() << Attr.getName() << isa<ObjCMethodDecl>(D) << cf;
return;
}
assert(0 && "invalid ownership attribute");
return;
case AttributeList::AT_ns_returns_autoreleased:
- D->addAttr(::new (S.Context) NSReturnsAutoreleasedAttr(Attr.getLoc(),
+ D->addAttr(::new (S.Context) NSReturnsAutoreleasedAttr(Attr.getRange(),
S.Context));
return;
case AttributeList::AT_cf_returns_not_retained:
- D->addAttr(::new (S.Context) CFReturnsNotRetainedAttr(Attr.getLoc(),
+ D->addAttr(::new (S.Context) CFReturnsNotRetainedAttr(Attr.getRange(),
S.Context));
return;
case AttributeList::AT_ns_returns_not_retained:
- D->addAttr(::new (S.Context) NSReturnsNotRetainedAttr(Attr.getLoc(),
+ D->addAttr(::new (S.Context) NSReturnsNotRetainedAttr(Attr.getRange(),
S.Context));
return;
case AttributeList::AT_cf_returns_retained:
- D->addAttr(::new (S.Context) CFReturnsRetainedAttr(Attr.getLoc(),
+ D->addAttr(::new (S.Context) CFReturnsRetainedAttr(Attr.getRange(),
S.Context));
return;
case AttributeList::AT_ns_returns_retained:
- D->addAttr(::new (S.Context) NSReturnsRetainedAttr(Attr.getLoc(),
+ D->addAttr(::new (S.Context) NSReturnsRetainedAttr(Attr.getRange(),
S.Context));
return;
};
}
method->addAttr(
- ::new (S.Context) ObjCReturnsInnerPointerAttr(loc, S.Context));
+ ::new (S.Context) ObjCReturnsInnerPointerAttr(attr.getRange(), S.Context));
}
static void handleObjCOwnershipAttr(Sema &S, Decl *D,
const AttributeList &Attr) {
if (hasDeclarator(D)) return;
- SourceLocation L = Attr.getLoc();
S.Diag(D->getLocStart(), diag::err_attribute_wrong_decl_type)
- << SourceRange(L, L) << Attr.getName() << 12 /* variable */;
+ << Attr.getRange() << Attr.getName() << 12 /* variable */;
}
static void handleObjCPreciseLifetimeAttr(Sema &S, Decl *D,
const AttributeList &Attr) {
if (!isa<VarDecl>(D) && !isa<FieldDecl>(D)) {
- SourceLocation L = Attr.getLoc();
S.Diag(D->getLocStart(), diag::err_attribute_wrong_decl_type)
- << SourceRange(L, L) << Attr.getName() << 12 /* variable */;
+ << Attr.getRange() << Attr.getName() << 12 /* variable */;
return;
}
}
D->addAttr(::new (S.Context)
- ObjCPreciseLifetimeAttr(Attr.getLoc(), S.Context));
+ ObjCPreciseLifetimeAttr(Attr.getRange(), S.Context));
}
static bool isKnownDeclSpecAttr(const AttributeList &Attr) {
I++;
}
- D->addAttr(::new (S.Context) UuidAttr(Attr.getLoc(), S.Context,
+ D->addAttr(::new (S.Context) UuidAttr(Attr.getRange(), S.Context,
Str->getString()));
} else
S.Diag(Attr.getLoc(), diag::warn_attribute_ignored) << "uuid";