• Home
  • Raw
  • Download

Lines Matching refs:Attr

209 static bool checkAttributeNumArgs(Sema &S, const AttributeList &Attr,  in checkAttributeNumArgs()  argument
211 if (Attr.getNumArgs() != Num) { in checkAttributeNumArgs()
212 S.Diag(Attr.getLoc(), diag::err_attribute_wrong_number_arguments) << Num; in checkAttributeNumArgs()
222 static bool checkAttributeAtLeastNumArgs(Sema &S, const AttributeList &Attr, in checkAttributeAtLeastNumArgs() argument
224 if (Attr.getNumArgs() < Num) { in checkAttributeAtLeastNumArgs()
225 S.Diag(Attr.getLoc(), diag::err_attribute_too_few_arguments) << Num; in checkAttributeAtLeastNumArgs()
319 const AttributeList &Attr) { in threadSafetyCheckIsPointer() argument
336 S.Diag(Attr.getLoc(), diag::warn_thread_attribute_decl_not_pointer) in threadSafetyCheckIsPointer()
337 << Attr.getName()->getName() << QT; in threadSafetyCheckIsPointer()
339 S.Diag(Attr.getLoc(), diag::err_attribute_can_be_applied_only_to_value_decl) in threadSafetyCheckIsPointer()
340 << Attr.getName(); in threadSafetyCheckIsPointer()
370 static void checkForLockableRecord(Sema &S, Decl *D, const AttributeList &Attr, in checkForLockableRecord() argument
376 S.Diag(Attr.getLoc(), diag::warn_thread_attribute_argument_not_class) in checkForLockableRecord()
377 << Attr.getName() << Ty.getAsString(); in checkForLockableRecord()
402 S.Diag(Attr.getLoc(), diag::warn_thread_attribute_argument_not_lockable) in checkForLockableRecord()
403 << Attr.getName() << Ty.getAsString(); in checkForLockableRecord()
412 const AttributeList &Attr, in checkAttrArgsAreLockableObjs() argument
416 for(unsigned Idx = Sidx; Idx < Attr.getNumArgs(); ++Idx) { in checkAttrArgsAreLockableObjs()
417 Expr *ArgExp = Attr.getArg(Idx); in checkAttrArgsAreLockableObjs()
436 S.Diag(Attr.getLoc(), diag::warn_thread_attribute_ignored) << in checkAttrArgsAreLockableObjs()
437 Attr.getName(); in checkAttrArgsAreLockableObjs()
465 S.Diag(Attr.getLoc(), diag::err_attribute_argument_out_of_range) in checkAttrArgsAreLockableObjs()
466 << Attr.getName() << Idx + 1 << NumParams; in checkAttrArgsAreLockableObjs()
473 checkForLockableRecord(S, D, Attr, ArgTy); in checkAttrArgsAreLockableObjs()
494 const AttributeList &Attr) { in checkGuardedVarAttrCommon() argument
495 assert(!Attr.isInvalid()); in checkGuardedVarAttrCommon()
497 if (!checkAttributeNumArgs(S, Attr, 0)) in checkGuardedVarAttrCommon()
502 S.Diag(Attr.getLoc(), diag::warn_thread_attribute_wrong_decl_type) in checkGuardedVarAttrCommon()
503 << Attr.getName() << ThreadExpectedFieldOrGlobalVar; in checkGuardedVarAttrCommon()
510 static void handleGuardedVarAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleGuardedVarAttr() argument
511 if (!checkGuardedVarAttrCommon(S, D, Attr)) in handleGuardedVarAttr()
515 GuardedVarAttr(Attr.getRange(), S.Context, in handleGuardedVarAttr()
516 Attr.getAttributeSpellingListIndex())); in handleGuardedVarAttr()
520 const AttributeList &Attr) { in handlePtGuardedVarAttr() argument
521 if (!checkGuardedVarAttrCommon(S, D, Attr)) in handlePtGuardedVarAttr()
524 if (!threadSafetyCheckIsPointer(S, D, Attr)) in handlePtGuardedVarAttr()
528 PtGuardedVarAttr(Attr.getRange(), S.Context, in handlePtGuardedVarAttr()
529 Attr.getAttributeSpellingListIndex())); in handlePtGuardedVarAttr()
533 const AttributeList &Attr, in checkGuardedByAttrCommon() argument
535 assert(!Attr.isInvalid()); in checkGuardedByAttrCommon()
537 if (!checkAttributeNumArgs(S, Attr, 1)) in checkGuardedByAttrCommon()
542 S.Diag(Attr.getLoc(), diag::warn_thread_attribute_wrong_decl_type) in checkGuardedByAttrCommon()
543 << Attr.getName() << ThreadExpectedFieldOrGlobalVar; in checkGuardedByAttrCommon()
549 checkAttrArgsAreLockableObjs(S, D, Attr, Args); in checkGuardedByAttrCommon()
559 static void handleGuardedByAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleGuardedByAttr() argument
561 if (!checkGuardedByAttrCommon(S, D, Attr, Arg)) in handleGuardedByAttr()
564 D->addAttr(::new (S.Context) GuardedByAttr(Attr.getRange(), S.Context, Arg)); in handleGuardedByAttr()
568 const AttributeList &Attr) { in handlePtGuardedByAttr() argument
570 if (!checkGuardedByAttrCommon(S, D, Attr, Arg)) in handlePtGuardedByAttr()
573 if (!threadSafetyCheckIsPointer(S, D, Attr)) in handlePtGuardedByAttr()
576 D->addAttr(::new (S.Context) PtGuardedByAttr(Attr.getRange(), in handlePtGuardedByAttr()
581 const AttributeList &Attr) { in checkLockableAttrCommon() argument
582 assert(!Attr.isInvalid()); in checkLockableAttrCommon()
584 if (!checkAttributeNumArgs(S, Attr, 0)) in checkLockableAttrCommon()
589 S.Diag(Attr.getLoc(), diag::warn_thread_attribute_wrong_decl_type) in checkLockableAttrCommon()
590 << Attr.getName() << ThreadExpectedClassOrStruct; in checkLockableAttrCommon()
597 static void handleLockableAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleLockableAttr() argument
598 if (!checkLockableAttrCommon(S, D, Attr)) in handleLockableAttr()
601 D->addAttr(::new (S.Context) LockableAttr(Attr.getRange(), S.Context)); in handleLockableAttr()
605 const AttributeList &Attr) { in handleScopedLockableAttr() argument
606 if (!checkLockableAttrCommon(S, D, Attr)) in handleScopedLockableAttr()
610 ScopedLockableAttr(Attr.getRange(), S.Context, in handleScopedLockableAttr()
611 Attr.getAttributeSpellingListIndex())); in handleScopedLockableAttr()
615 const AttributeList &Attr) { in handleNoThreadSafetyAnalysis() argument
616 assert(!Attr.isInvalid()); in handleNoThreadSafetyAnalysis()
618 if (!checkAttributeNumArgs(S, Attr, 0)) in handleNoThreadSafetyAnalysis()
622 S.Diag(Attr.getLoc(), diag::warn_thread_attribute_wrong_decl_type) in handleNoThreadSafetyAnalysis()
623 << Attr.getName() << ThreadExpectedFunctionOrMethod; in handleNoThreadSafetyAnalysis()
627 D->addAttr(::new (S.Context) NoThreadSafetyAnalysisAttr(Attr.getRange(), in handleNoThreadSafetyAnalysis()
632 const AttributeList &Attr) { in handleNoSanitizeAddressAttr() argument
633 assert(!Attr.isInvalid()); in handleNoSanitizeAddressAttr()
635 if (!checkAttributeNumArgs(S, Attr, 0)) in handleNoSanitizeAddressAttr()
639 S.Diag(Attr.getLoc(), diag::err_attribute_wrong_decl_type) in handleNoSanitizeAddressAttr()
640 << Attr.getName() << ExpectedFunctionOrMethod; in handleNoSanitizeAddressAttr()
645 NoSanitizeAddressAttr(Attr.getRange(), S.Context, in handleNoSanitizeAddressAttr()
646 Attr.getAttributeSpellingListIndex())); in handleNoSanitizeAddressAttr()
650 const AttributeList &Attr) { in handleNoSanitizeMemory() argument
651 assert(!Attr.isInvalid()); in handleNoSanitizeMemory()
653 if (!checkAttributeNumArgs(S, Attr, 0)) in handleNoSanitizeMemory()
657 S.Diag(Attr.getLoc(), diag::err_attribute_wrong_decl_type) in handleNoSanitizeMemory()
658 << Attr.getName() << ExpectedFunctionOrMethod; in handleNoSanitizeMemory()
662 D->addAttr(::new (S.Context) NoSanitizeMemoryAttr(Attr.getRange(), in handleNoSanitizeMemory()
667 const AttributeList &Attr) { in handleNoSanitizeThread() argument
668 assert(!Attr.isInvalid()); in handleNoSanitizeThread()
670 if (!checkAttributeNumArgs(S, Attr, 0)) in handleNoSanitizeThread()
674 S.Diag(Attr.getLoc(), diag::err_attribute_wrong_decl_type) in handleNoSanitizeThread()
675 << Attr.getName() << ExpectedFunctionOrMethod; in handleNoSanitizeThread()
679 D->addAttr(::new (S.Context) NoSanitizeThreadAttr(Attr.getRange(), in handleNoSanitizeThread()
684 const AttributeList &Attr, in checkAcquireOrderAttrCommon() argument
686 assert(!Attr.isInvalid()); in checkAcquireOrderAttrCommon()
688 if (!checkAttributeAtLeastNumArgs(S, Attr, 1)) in checkAcquireOrderAttrCommon()
694 S.Diag(Attr.getLoc(), diag::warn_thread_attribute_wrong_decl_type) in checkAcquireOrderAttrCommon()
695 << Attr.getName() << ThreadExpectedFieldOrGlobalVar; in checkAcquireOrderAttrCommon()
704 S.Diag(Attr.getLoc(), diag::warn_thread_attribute_decl_not_lockable) in checkAcquireOrderAttrCommon()
705 << Attr.getName(); in checkAcquireOrderAttrCommon()
711 checkAttrArgsAreLockableObjs(S, D, Attr, Args); in checkAcquireOrderAttrCommon()
719 const AttributeList &Attr) { in handleAcquiredAfterAttr() argument
721 if (!checkAcquireOrderAttrCommon(S, D, Attr, Args)) in handleAcquiredAfterAttr()
726 AcquiredAfterAttr(Attr.getRange(), S.Context, in handleAcquiredAfterAttr()
728 Attr.getAttributeSpellingListIndex())); in handleAcquiredAfterAttr()
732 const AttributeList &Attr) { in handleAcquiredBeforeAttr() argument
734 if (!checkAcquireOrderAttrCommon(S, D, Attr, Args)) in handleAcquiredBeforeAttr()
739 AcquiredBeforeAttr(Attr.getRange(), S.Context, in handleAcquiredBeforeAttr()
741 Attr.getAttributeSpellingListIndex())); in handleAcquiredBeforeAttr()
745 const AttributeList &Attr, in checkLockFunAttrCommon() argument
747 assert(!Attr.isInvalid()); in checkLockFunAttrCommon()
753 S.Diag(Attr.getLoc(), diag::warn_thread_attribute_wrong_decl_type) in checkLockFunAttrCommon()
754 << Attr.getName() << ThreadExpectedFunctionOrMethod; in checkLockFunAttrCommon()
759 checkAttrArgsAreLockableObjs(S, D, Attr, Args, 0, /*ParamIdxOk=*/true); in checkLockFunAttrCommon()
765 const AttributeList &Attr) { in handleSharedLockFunctionAttr() argument
767 if (!checkLockFunAttrCommon(S, D, Attr, Args)) in handleSharedLockFunctionAttr()
773 SharedLockFunctionAttr(Attr.getRange(), S.Context, StartArg, Size, in handleSharedLockFunctionAttr()
774 Attr.getAttributeSpellingListIndex())); in handleSharedLockFunctionAttr()
778 const AttributeList &Attr) { in handleExclusiveLockFunctionAttr() argument
780 if (!checkLockFunAttrCommon(S, D, Attr, Args)) in handleExclusiveLockFunctionAttr()
786 ExclusiveLockFunctionAttr(Attr.getRange(), S.Context, in handleExclusiveLockFunctionAttr()
788 Attr.getAttributeSpellingListIndex())); in handleExclusiveLockFunctionAttr()
792 const AttributeList &Attr, in checkTryLockFunAttrCommon() argument
794 assert(!Attr.isInvalid()); in checkTryLockFunAttrCommon()
796 if (!checkAttributeAtLeastNumArgs(S, Attr, 1)) in checkTryLockFunAttrCommon()
800 S.Diag(Attr.getLoc(), diag::warn_thread_attribute_wrong_decl_type) in checkTryLockFunAttrCommon()
801 << Attr.getName() << ThreadExpectedFunctionOrMethod; in checkTryLockFunAttrCommon()
805 if (!isIntOrBool(Attr.getArg(0))) { in checkTryLockFunAttrCommon()
806 S.Diag(Attr.getLoc(), diag::err_attribute_first_argument_not_int_or_bool) in checkTryLockFunAttrCommon()
807 << Attr.getName(); in checkTryLockFunAttrCommon()
812 checkAttrArgsAreLockableObjs(S, D, Attr, Args, 1); in checkTryLockFunAttrCommon()
818 const AttributeList &Attr) { in handleSharedTrylockFunctionAttr() argument
820 if (!checkTryLockFunAttrCommon(S, D, Attr, Args)) in handleSharedTrylockFunctionAttr()
826 SharedTrylockFunctionAttr(Attr.getRange(), S.Context, in handleSharedTrylockFunctionAttr()
827 Attr.getArg(0), StartArg, Size, in handleSharedTrylockFunctionAttr()
828 Attr.getAttributeSpellingListIndex())); in handleSharedTrylockFunctionAttr()
832 const AttributeList &Attr) { in handleExclusiveTrylockFunctionAttr() argument
834 if (!checkTryLockFunAttrCommon(S, D, Attr, Args)) in handleExclusiveTrylockFunctionAttr()
840 ExclusiveTrylockFunctionAttr(Attr.getRange(), S.Context, in handleExclusiveTrylockFunctionAttr()
841 Attr.getArg(0), StartArg, Size, in handleExclusiveTrylockFunctionAttr()
842 Attr.getAttributeSpellingListIndex())); in handleExclusiveTrylockFunctionAttr()
846 const AttributeList &Attr, in checkLocksRequiredCommon() argument
848 assert(!Attr.isInvalid()); in checkLocksRequiredCommon()
850 if (!checkAttributeAtLeastNumArgs(S, Attr, 1)) in checkLocksRequiredCommon()
854 S.Diag(Attr.getLoc(), diag::warn_thread_attribute_wrong_decl_type) in checkLocksRequiredCommon()
855 << Attr.getName() << ThreadExpectedFunctionOrMethod; in checkLocksRequiredCommon()
860 checkAttrArgsAreLockableObjs(S, D, Attr, Args); in checkLocksRequiredCommon()
868 const AttributeList &Attr) { in handleExclusiveLocksRequiredAttr() argument
870 if (!checkLocksRequiredCommon(S, D, Attr, Args)) in handleExclusiveLocksRequiredAttr()
875 ExclusiveLocksRequiredAttr(Attr.getRange(), S.Context, in handleExclusiveLocksRequiredAttr()
877 Attr.getAttributeSpellingListIndex())); in handleExclusiveLocksRequiredAttr()
881 const AttributeList &Attr) { in handleSharedLocksRequiredAttr() argument
883 if (!checkLocksRequiredCommon(S, D, Attr, Args)) in handleSharedLocksRequiredAttr()
888 SharedLocksRequiredAttr(Attr.getRange(), S.Context, in handleSharedLocksRequiredAttr()
890 Attr.getAttributeSpellingListIndex())); in handleSharedLocksRequiredAttr()
894 const AttributeList &Attr) { in handleUnlockFunAttr() argument
895 assert(!Attr.isInvalid()); in handleUnlockFunAttr()
900 S.Diag(Attr.getLoc(), diag::warn_thread_attribute_wrong_decl_type) in handleUnlockFunAttr()
901 << Attr.getName() << ThreadExpectedFunctionOrMethod; in handleUnlockFunAttr()
907 checkAttrArgsAreLockableObjs(S, D, Attr, Args, 0, /*ParamIdxOk=*/true); in handleUnlockFunAttr()
912 UnlockFunctionAttr(Attr.getRange(), S.Context, StartArg, Size, in handleUnlockFunAttr()
913 Attr.getAttributeSpellingListIndex())); in handleUnlockFunAttr()
917 const AttributeList &Attr) { in handleLockReturnedAttr() argument
918 assert(!Attr.isInvalid()); in handleLockReturnedAttr()
920 if (!checkAttributeNumArgs(S, Attr, 1)) in handleLockReturnedAttr()
924 S.Diag(Attr.getLoc(), diag::warn_thread_attribute_wrong_decl_type) in handleLockReturnedAttr()
925 << Attr.getName() << ThreadExpectedFunctionOrMethod; in handleLockReturnedAttr()
931 checkAttrArgsAreLockableObjs(S, D, Attr, Args); in handleLockReturnedAttr()
937 LockReturnedAttr(Attr.getRange(), S.Context, Args[0], in handleLockReturnedAttr()
938 Attr.getAttributeSpellingListIndex())); in handleLockReturnedAttr()
942 const AttributeList &Attr) { in handleLocksExcludedAttr() argument
943 assert(!Attr.isInvalid()); in handleLocksExcludedAttr()
945 if (!checkAttributeAtLeastNumArgs(S, Attr, 1)) in handleLocksExcludedAttr()
949 S.Diag(Attr.getLoc(), diag::warn_thread_attribute_wrong_decl_type) in handleLocksExcludedAttr()
950 << Attr.getName() << ThreadExpectedFunctionOrMethod; in handleLocksExcludedAttr()
956 checkAttrArgsAreLockableObjs(S, D, Attr, Args); in handleLocksExcludedAttr()
963 LocksExcludedAttr(Attr.getRange(), S.Context, StartArg, Size, in handleLocksExcludedAttr()
964 Attr.getAttributeSpellingListIndex())); in handleLocksExcludedAttr()
969 const AttributeList &Attr) { in handleExtVectorTypeAttr() argument
974 S.Diag(Attr.getLoc(), diag::err_typecheck_ext_vector_not_typedef); in handleExtVectorTypeAttr()
982 static void handlePackedAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handlePackedAttr() argument
984 if (!checkAttributeNumArgs(S, Attr, 0)) in handlePackedAttr()
988 TD->addAttr(::new (S.Context) PackedAttr(Attr.getRange(), S.Context)); in handlePackedAttr()
995 S.Diag(Attr.getLoc(), diag::warn_attribute_ignored_for_field_of_type) in handlePackedAttr()
996 << Attr.getName() << FD->getType(); in handlePackedAttr()
999 PackedAttr(Attr.getRange(), S.Context, in handlePackedAttr()
1000 Attr.getAttributeSpellingListIndex())); in handlePackedAttr()
1002 S.Diag(Attr.getLoc(), diag::warn_attribute_ignored) << Attr.getName(); in handlePackedAttr()
1005 static void handleMsStructAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleMsStructAttr() argument
1008 MsStructAttr(Attr.getRange(), S.Context, in handleMsStructAttr()
1009 Attr.getAttributeSpellingListIndex())); in handleMsStructAttr()
1011 S.Diag(Attr.getLoc(), diag::warn_attribute_ignored) << Attr.getName(); in handleMsStructAttr()
1014 static void handleIBAction(Sema &S, Decl *D, const AttributeList &Attr) { in handleIBAction() argument
1016 if (!checkAttributeNumArgs(S, Attr, 0)) in handleIBAction()
1023 IBActionAttr(Attr.getRange(), S.Context, in handleIBAction()
1024 Attr.getAttributeSpellingListIndex())); in handleIBAction()
1028 S.Diag(Attr.getLoc(), diag::warn_attribute_ibaction) << Attr.getName(); in handleIBAction()
1031 static bool checkIBOutletCommon(Sema &S, Decl *D, const AttributeList &Attr) { in checkIBOutletCommon() argument
1037 S.Diag(Attr.getLoc(), diag::warn_iboutlet_object_type) in checkIBOutletCommon()
1038 << Attr.getName() << VD->getType() << 0; in checkIBOutletCommon()
1044 S.Diag(Attr.getLoc(), diag::warn_iboutlet_object_type) in checkIBOutletCommon()
1045 << Attr.getName() << PD->getType() << 1; in checkIBOutletCommon()
1050 S.Diag(Attr.getLoc(), diag::warn_attribute_iboutlet) << Attr.getName(); in checkIBOutletCommon()
1057 static void handleIBOutlet(Sema &S, Decl *D, const AttributeList &Attr) { in handleIBOutlet() argument
1059 if (!checkAttributeNumArgs(S, Attr, 0)) in handleIBOutlet()
1062 if (!checkIBOutletCommon(S, D, Attr)) in handleIBOutlet()
1066 IBOutletAttr(Attr.getRange(), S.Context, in handleIBOutlet()
1067 Attr.getAttributeSpellingListIndex())); in handleIBOutlet()
1071 const AttributeList &Attr) { in handleIBOutletCollection() argument
1074 if (Attr.getParameterName() && Attr.getNumArgs() > 0) { in handleIBOutletCollection()
1075 S.Diag(Attr.getLoc(), diag::err_attribute_wrong_number_arguments) << 1; in handleIBOutletCollection()
1079 if (!checkIBOutletCommon(S, D, Attr)) in handleIBOutletCollection()
1082 IdentifierInfo *II = Attr.getParameterName(); in handleIBOutletCollection()
1086 ParsedType TypeRep = S.getTypeName(*II, Attr.getLoc(), in handleIBOutletCollection()
1089 S.Diag(Attr.getLoc(), diag::err_iboutletcollection_type) << II; in handleIBOutletCollection()
1098 S.Diag(Attr.getLoc(), diag::err_iboutletcollection_type) << II; in handleIBOutletCollection()
1102 IBOutletCollectionAttr(Attr.getRange(),S.Context, in handleIBOutletCollection()
1103 QT, Attr.getParameterLoc(), in handleIBOutletCollection()
1104 Attr.getAttributeSpellingListIndex())); in handleIBOutletCollection()
1122 static void handleAllocSizeAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleAllocSizeAttr() argument
1124 S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) in handleAllocSizeAttr()
1129 if (!checkAttributeAtLeastNumArgs(S, Attr, 1)) in handleAllocSizeAttr()
1143 for (AttributeList::arg_iterator I = Attr.arg_begin(), in handleAllocSizeAttr()
1144 E = Attr.arg_end(); I!=E; ++I) { in handleAllocSizeAttr()
1150 S.Diag(Attr.getLoc(), diag::err_attribute_argument_not_int) in handleAllocSizeAttr()
1158 S.Diag(Attr.getLoc(), diag::err_attribute_argument_out_of_bounds) in handleAllocSizeAttr()
1166 S.Diag(Attr.getLoc(), in handleAllocSizeAttr()
1177 S.Diag(Attr.getLoc(), diag::err_attribute_argument_not_int) in handleAllocSizeAttr()
1187 S.Diag(Attr.getLoc(), diag::warn_ns_attribute_wrong_return_type) in handleAllocSizeAttr()
1192 AllocSizeAttr(Attr.getRange(), S.Context, in handleAllocSizeAttr()
1194 Attr.getAttributeSpellingListIndex())); in handleAllocSizeAttr()
1197 static void handleNonNullAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleNonNullAttr() argument
1201 S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) in handleNonNullAttr()
1202 << Attr.getName() << ExpectedFunction; in handleNonNullAttr()
1214 for (AttributeList::arg_iterator I = Attr.arg_begin(), in handleNonNullAttr()
1215 E = Attr.arg_end(); I != E; ++I) { in handleNonNullAttr()
1221 S.Diag(Attr.getLoc(), diag::err_attribute_argument_not_int) in handleNonNullAttr()
1229 S.Diag(Attr.getLoc(), diag::err_attribute_argument_out_of_bounds) in handleNonNullAttr()
1237 S.Diag(Attr.getLoc(), in handleNonNullAttr()
1251 S.Diag(Attr.getLoc(), diag::warn_nonnull_pointers_only) in handleNonNullAttr()
1273 if (Attr.getLoc().isFileID()) in handleNonNullAttr()
1274 S.Diag(Attr.getLoc(), diag::warn_attribute_nonnull_no_pointers); in handleNonNullAttr()
1283 NonNullAttr(Attr.getRange(), S.Context, start, size, in handleNonNullAttr()
1284 Attr.getAttributeSpellingListIndex())); in handleNonNullAttr()
1444 static void handleWeakRefAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleWeakRefAttr() argument
1446 if (Attr.getNumArgs() > 1) { in handleWeakRefAttr()
1447 S.Diag(Attr.getLoc(), diag::err_attribute_wrong_number_arguments) << 1; in handleWeakRefAttr()
1452 S.Diag(Attr.getLoc(), diag::err_attribute_wrong_decl_type) in handleWeakRefAttr()
1453 << Attr.getName() << ExpectedVariableOrFunction; in handleWeakRefAttr()
1471 S.Diag(Attr.getLoc(), diag::err_attribute_weakref_not_global_context) << in handleWeakRefAttr()
1498 if (Attr.getNumArgs() == 1) { in handleWeakRefAttr()
1499 Expr *Arg = Attr.getArg(0); in handleWeakRefAttr()
1504 S.Diag(Attr.getLoc(), diag::err_attribute_argument_n_not_string) in handleWeakRefAttr()
1510 D->addAttr(::new (S.Context) AliasAttr(Attr.getRange(), S.Context, in handleWeakRefAttr()
1515 WeakRefAttr(Attr.getRange(), S.Context, in handleWeakRefAttr()
1516 Attr.getAttributeSpellingListIndex())); in handleWeakRefAttr()
1519 static void handleAliasAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleAliasAttr() argument
1521 if (Attr.getNumArgs() != 1) { in handleAliasAttr()
1522 S.Diag(Attr.getLoc(), diag::err_attribute_wrong_number_arguments) << 1; in handleAliasAttr()
1526 Expr *Arg = Attr.getArg(0); in handleAliasAttr()
1531 S.Diag(Attr.getLoc(), diag::err_attribute_argument_n_not_string) in handleAliasAttr()
1537 S.Diag(Attr.getLoc(), diag::err_alias_not_supported_on_darwin); in handleAliasAttr()
1543 D->addAttr(::new (S.Context) AliasAttr(Attr.getRange(), S.Context, in handleAliasAttr()
1545 Attr.getAttributeSpellingListIndex())); in handleAliasAttr()
1548 static void handleMinSizeAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleMinSizeAttr() argument
1550 if (!checkAttributeNumArgs(S, Attr, 0)) in handleMinSizeAttr()
1554 S.Diag(Attr.getLoc(), diag::err_attribute_wrong_decl_type) in handleMinSizeAttr()
1555 << Attr.getName() << ExpectedFunctionOrMethod; in handleMinSizeAttr()
1560 MinSizeAttr(Attr.getRange(), S.Context, in handleMinSizeAttr()
1561 Attr.getAttributeSpellingListIndex())); in handleMinSizeAttr()
1564 static void handleColdAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleColdAttr() argument
1566 if (!checkAttributeNumArgs(S, Attr, 0)) in handleColdAttr()
1570 S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) in handleColdAttr()
1571 << Attr.getName() << ExpectedFunction; in handleColdAttr()
1576 S.Diag(Attr.getLoc(), diag::err_attributes_are_not_compatible) in handleColdAttr()
1577 << Attr.getName() << "hot"; in handleColdAttr()
1581 D->addAttr(::new (S.Context) ColdAttr(Attr.getRange(), S.Context, in handleColdAttr()
1582 Attr.getAttributeSpellingListIndex())); in handleColdAttr()
1585 static void handleHotAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleHotAttr() argument
1587 if (!checkAttributeNumArgs(S, Attr, 0)) in handleHotAttr()
1591 S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) in handleHotAttr()
1592 << Attr.getName() << ExpectedFunction; in handleHotAttr()
1597 S.Diag(Attr.getLoc(), diag::err_attributes_are_not_compatible) in handleHotAttr()
1598 << Attr.getName() << "cold"; in handleHotAttr()
1602 D->addAttr(::new (S.Context) HotAttr(Attr.getRange(), S.Context, in handleHotAttr()
1603 Attr.getAttributeSpellingListIndex())); in handleHotAttr()
1606 static void handleNakedAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleNakedAttr() argument
1608 if (!checkAttributeNumArgs(S, Attr, 0)) in handleNakedAttr()
1612 S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) in handleNakedAttr()
1613 << Attr.getName() << ExpectedFunction; in handleNakedAttr()
1618 NakedAttr(Attr.getRange(), S.Context, in handleNakedAttr()
1619 Attr.getAttributeSpellingListIndex())); in handleNakedAttr()
1623 const AttributeList &Attr) { in handleAlwaysInlineAttr() argument
1625 if (Attr.hasParameterOrArguments()) { in handleAlwaysInlineAttr()
1626 S.Diag(Attr.getLoc(), diag::err_attribute_wrong_number_arguments) << 0; in handleAlwaysInlineAttr()
1631 S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) in handleAlwaysInlineAttr()
1632 << Attr.getName() << ExpectedFunction; in handleAlwaysInlineAttr()
1637 AlwaysInlineAttr(Attr.getRange(), S.Context, in handleAlwaysInlineAttr()
1638 Attr.getAttributeSpellingListIndex())); in handleAlwaysInlineAttr()
1642 const AttributeList &Attr) { in handleTLSModelAttr() argument
1644 if (Attr.getNumArgs() != 1) { in handleTLSModelAttr()
1645 S.Diag(Attr.getLoc(), diag::err_attribute_wrong_number_arguments) << 1; in handleTLSModelAttr()
1649 Expr *Arg = Attr.getArg(0); in handleTLSModelAttr()
1655 S.Diag(Attr.getLoc(), diag::err_attribute_not_string) << "tls_model"; in handleTLSModelAttr()
1660 S.Diag(Attr.getLoc(), diag::err_attribute_wrong_decl_type) in handleTLSModelAttr()
1661 << Attr.getName() << ExpectedTLSVar; in handleTLSModelAttr()
1669 S.Diag(Attr.getLoc(), diag::err_attr_tlsmodel_arg); in handleTLSModelAttr()
1674 TLSModelAttr(Attr.getRange(), S.Context, Model, in handleTLSModelAttr()
1675 Attr.getAttributeSpellingListIndex())); in handleTLSModelAttr()
1678 static void handleMallocAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleMallocAttr() argument
1680 if (Attr.hasParameterOrArguments()) { in handleMallocAttr()
1681 S.Diag(Attr.getLoc(), diag::err_attribute_wrong_number_arguments) << 0; in handleMallocAttr()
1689 MallocAttr(Attr.getRange(), S.Context, in handleMallocAttr()
1690 Attr.getAttributeSpellingListIndex())); in handleMallocAttr()
1695 S.Diag(Attr.getLoc(), diag::warn_attribute_malloc_pointer_only); in handleMallocAttr()
1698 static void handleMayAliasAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleMayAliasAttr() argument
1700 if (!checkAttributeNumArgs(S, Attr, 0)) in handleMayAliasAttr()
1704 MayAliasAttr(Attr.getRange(), S.Context, in handleMayAliasAttr()
1705 Attr.getAttributeSpellingListIndex())); in handleMayAliasAttr()
1708 static void handleNoCommonAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleNoCommonAttr() argument
1709 assert(!Attr.isInvalid()); in handleNoCommonAttr()
1712 NoCommonAttr(Attr.getRange(), S.Context, in handleNoCommonAttr()
1713 Attr.getAttributeSpellingListIndex())); in handleNoCommonAttr()
1715 S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) in handleNoCommonAttr()
1716 << Attr.getName() << ExpectedVariable; in handleNoCommonAttr()
1719 static void handleCommonAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleCommonAttr() argument
1720 assert(!Attr.isInvalid()); in handleCommonAttr()
1723 CommonAttr(Attr.getRange(), S.Context, in handleCommonAttr()
1724 Attr.getAttributeSpellingListIndex())); in handleCommonAttr()
1726 S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) in handleCommonAttr()
1727 << Attr.getName() << ExpectedVariable; in handleCommonAttr()
1757 const AttributeList &Attr) { in handleAnalyzerNoReturnAttr() argument
1762 if(!checkAttributeNumArgs(S, Attr, 0)) in handleAnalyzerNoReturnAttr()
1769 S.Diag(Attr.getLoc(), in handleAnalyzerNoReturnAttr()
1770 Attr.isCXX11Attribute() ? diag::err_attribute_wrong_decl_type in handleAnalyzerNoReturnAttr()
1772 << Attr.getName() << ExpectedFunctionMethodOrBlock; in handleAnalyzerNoReturnAttr()
1778 AnalyzerNoReturnAttr(Attr.getRange(), S.Context, in handleAnalyzerNoReturnAttr()
1779 Attr.getAttributeSpellingListIndex())); in handleAnalyzerNoReturnAttr()
1783 const AttributeList &Attr) { in handleCXX11NoReturnAttr() argument
1789 S.Diag(Attr.getLoc(), diag::err_attribute_wrong_decl_type) in handleCXX11NoReturnAttr()
1790 << Attr.getName() << ExpectedFunctionOrMethod; in handleCXX11NoReturnAttr()
1795 CXX11NoReturnAttr(Attr.getRange(), S.Context, in handleCXX11NoReturnAttr()
1796 Attr.getAttributeSpellingListIndex())); in handleCXX11NoReturnAttr()
1800 static void handleVecReturnAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleVecReturnAttr() argument
1825 S.Diag(Attr.getLoc(), diag::err_attribute_wrong_decl_type) in handleVecReturnAttr()
1826 << Attr.getName() << ExpectedClass; in handleVecReturnAttr()
1831 S.Diag(Attr.getLoc(), diag::err_repeat_attribute) << "vecreturn"; in handleVecReturnAttr()
1839 S.Diag(Attr.getLoc(), diag::err_attribute_vecreturn_only_vector_member); in handleVecReturnAttr()
1844 S.Diag(Attr.getLoc(), diag::err_attribute_vecreturn_only_pod_record); in handleVecReturnAttr()
1851 S.Diag(Attr.getLoc(), diag::err_attribute_vecreturn_only_vector_member); in handleVecReturnAttr()
1858 VecReturnAttr(Attr.getRange(), S.Context, in handleVecReturnAttr()
1859 Attr.getAttributeSpellingListIndex())); in handleVecReturnAttr()
1863 const AttributeList &Attr) { in handleDependencyAttr() argument
1868 S.Diag(Attr.getLoc(), in handleDependencyAttr()
1873 S.Diag(Attr.getLoc(), diag::err_attribute_wrong_decl_type) in handleDependencyAttr()
1874 << Attr.getName() << ExpectedFunctionMethodOrParameter; in handleDependencyAttr()
1879 Attr.getRange(), S.Context, in handleDependencyAttr()
1880 Attr.getAttributeSpellingListIndex())); in handleDependencyAttr()
1883 static void handleUnusedAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleUnusedAttr() argument
1885 if (Attr.hasParameterOrArguments()) { in handleUnusedAttr()
1886 S.Diag(Attr.getLoc(), diag::err_attribute_wrong_number_arguments) << 0; in handleUnusedAttr()
1892 S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) in handleUnusedAttr()
1893 << Attr.getName() << ExpectedVariableFunctionOrLabel; in handleUnusedAttr()
1898 UnusedAttr(Attr.getRange(), S.Context, in handleUnusedAttr()
1899 Attr.getAttributeSpellingListIndex())); in handleUnusedAttr()
1903 const AttributeList &Attr) { in handleReturnsTwiceAttr() argument
1905 if (Attr.hasParameterOrArguments()) { in handleReturnsTwiceAttr()
1906 S.Diag(Attr.getLoc(), diag::err_attribute_wrong_number_arguments) << 0; in handleReturnsTwiceAttr()
1911 S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) in handleReturnsTwiceAttr()
1912 << Attr.getName() << ExpectedFunction; in handleReturnsTwiceAttr()
1917 ReturnsTwiceAttr(Attr.getRange(), S.Context, in handleReturnsTwiceAttr()
1918 Attr.getAttributeSpellingListIndex())); in handleReturnsTwiceAttr()
1921 static void handleUsedAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleUsedAttr() argument
1923 if (Attr.hasParameterOrArguments()) { in handleUsedAttr()
1924 S.Diag(Attr.getLoc(), diag::err_attribute_wrong_number_arguments) << 0; in handleUsedAttr()
1930 S.Diag(Attr.getLoc(), diag::warn_attribute_ignored) << "used"; in handleUsedAttr()
1934 S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) in handleUsedAttr()
1935 << Attr.getName() << ExpectedVariableOrFunction; in handleUsedAttr()
1940 UsedAttr(Attr.getRange(), S.Context, in handleUsedAttr()
1941 Attr.getAttributeSpellingListIndex())); in handleUsedAttr()
1944 static void handleConstructorAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleConstructorAttr() argument
1946 if (Attr.getNumArgs() > 1) { in handleConstructorAttr()
1947 S.Diag(Attr.getLoc(), diag::err_attribute_too_many_arguments) << 1; in handleConstructorAttr()
1952 if (Attr.getNumArgs() > 0) { in handleConstructorAttr()
1953 Expr *E = Attr.getArg(0); in handleConstructorAttr()
1957 S.Diag(Attr.getLoc(), diag::err_attribute_argument_n_not_int) in handleConstructorAttr()
1965 S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) in handleConstructorAttr()
1966 << Attr.getName() << ExpectedFunction; in handleConstructorAttr()
1971 ConstructorAttr(Attr.getRange(), S.Context, priority, in handleConstructorAttr()
1972 Attr.getAttributeSpellingListIndex())); in handleConstructorAttr()
1975 static void handleDestructorAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleDestructorAttr() argument
1977 if (Attr.getNumArgs() > 1) { in handleDestructorAttr()
1978 S.Diag(Attr.getLoc(), diag::err_attribute_too_many_arguments) << 1; in handleDestructorAttr()
1983 if (Attr.getNumArgs() > 0) { in handleDestructorAttr()
1984 Expr *E = Attr.getArg(0); in handleDestructorAttr()
1988 S.Diag(Attr.getLoc(), diag::err_attribute_argument_n_not_int) in handleDestructorAttr()
1996 S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) in handleDestructorAttr()
1997 << Attr.getName() << ExpectedFunction; in handleDestructorAttr()
2002 DestructorAttr(Attr.getRange(), S.Context, priority, in handleDestructorAttr()
2003 Attr.getAttributeSpellingListIndex())); in handleDestructorAttr()
2007 static void handleAttrWithMessage(Sema &S, Decl *D, const AttributeList &Attr, in handleAttrWithMessage() argument
2009 unsigned NumArgs = Attr.getNumArgs(); in handleAttrWithMessage()
2011 S.Diag(Attr.getLoc(), diag::err_attribute_too_many_arguments) << 1; in handleAttrWithMessage()
2018 StringLiteral *SE = dyn_cast<StringLiteral>(Attr.getArg(0)); in handleAttrWithMessage()
2020 S.Diag(Attr.getArg(0)->getLocStart(), diag::err_attribute_not_string) in handleAttrWithMessage()
2027 D->addAttr(::new (S.Context) AttrTy(Attr.getRange(), S.Context, Str, in handleAttrWithMessage()
2028 Attr.getAttributeSpellingListIndex())); in handleAttrWithMessage()
2032 const AttributeList &Attr) { in handleArcWeakrefUnavailableAttr() argument
2033 unsigned NumArgs = Attr.getNumArgs(); in handleArcWeakrefUnavailableAttr()
2035 S.Diag(Attr.getLoc(), diag::err_attribute_too_many_arguments) << 0; in handleArcWeakrefUnavailableAttr()
2040 ArcWeakrefUnavailableAttr(Attr.getRange(), S.Context, in handleArcWeakrefUnavailableAttr()
2041 Attr.getAttributeSpellingListIndex())); in handleArcWeakrefUnavailableAttr()
2045 const AttributeList &Attr) { in handleObjCRootClassAttr() argument
2047 S.Diag(Attr.getLoc(), diag::err_attribute_requires_objc_interface); in handleObjCRootClassAttr()
2051 unsigned NumArgs = Attr.getNumArgs(); in handleObjCRootClassAttr()
2053 S.Diag(Attr.getLoc(), diag::err_attribute_too_many_arguments) << 0; in handleObjCRootClassAttr()
2058 ObjCRootClassAttr(Attr.getRange(), S.Context, in handleObjCRootClassAttr()
2059 Attr.getAttributeSpellingListIndex())); in handleObjCRootClassAttr()
2063 const AttributeList &Attr) { in handleObjCRequiresPropertyDefsAttr() argument
2065 S.Diag(Attr.getLoc(), diag::err_suppress_autosynthesis); in handleObjCRequiresPropertyDefsAttr()
2069 unsigned NumArgs = Attr.getNumArgs(); in handleObjCRequiresPropertyDefsAttr()
2071 S.Diag(Attr.getLoc(), diag::err_attribute_too_many_arguments) << 0; in handleObjCRequiresPropertyDefsAttr()
2076 ObjCRequiresPropertyDefsAttr(Attr.getRange(), S.Context, in handleObjCRequiresPropertyDefsAttr()
2077 Attr.getAttributeSpellingListIndex())); in handleObjCRequiresPropertyDefsAttr()
2260 const AttributeList &Attr) { in handleAvailabilityAttr() argument
2261 IdentifierInfo *Platform = Attr.getParameterName(); in handleAvailabilityAttr()
2262 SourceLocation PlatformLoc = Attr.getParameterLoc(); in handleAvailabilityAttr()
2263 unsigned Index = Attr.getAttributeSpellingListIndex(); in handleAvailabilityAttr()
2271 S.Diag(Attr.getLoc(), diag::warn_attribute_ignored) << Attr.getName(); in handleAvailabilityAttr()
2275 AvailabilityChange Introduced = Attr.getAvailabilityIntroduced(); in handleAvailabilityAttr()
2276 AvailabilityChange Deprecated = Attr.getAvailabilityDeprecated(); in handleAvailabilityAttr()
2277 AvailabilityChange Obsoleted = Attr.getAvailabilityObsoleted(); in handleAvailabilityAttr()
2278 bool IsUnavailable = Attr.getUnavailableLoc().isValid(); in handleAvailabilityAttr()
2281 dyn_cast_or_null<const StringLiteral>(Attr.getMessageExpr()); in handleAvailabilityAttr()
2285 AvailabilityAttr *NewAttr = S.mergeAvailabilityAttr(ND, Attr.getRange(), in handleAvailabilityAttr()
2327 static void handleVisibilityAttr(Sema &S, Decl *D, const AttributeList &Attr, in handleVisibilityAttr() argument
2331 S.Diag(Attr.getRange().getBegin(), diag::warn_attribute_ignored) in handleVisibilityAttr()
2332 << Attr.getName(); in handleVisibilityAttr()
2341 S.Diag(Attr.getRange().getBegin(), diag::err_attribute_wrong_decl_type) in handleVisibilityAttr()
2342 << Attr.getName() << ExpectedTypeOrNamespace; in handleVisibilityAttr()
2347 if (!checkAttributeNumArgs(S, Attr, 1)) in handleVisibilityAttr()
2350 Expr *Arg = Attr.getArg(0); in handleVisibilityAttr()
2355 S.Diag(Attr.getLoc(), diag::err_attribute_argument_n_not_string) in handleVisibilityAttr()
2373 S.Diag(Attr.getLoc(), diag::warn_attribute_protected_visibility); in handleVisibilityAttr()
2379 S.Diag(Attr.getLoc(), diag::warn_attribute_unknown_visibility) << TypeStr; in handleVisibilityAttr()
2383 unsigned Index = Attr.getAttributeSpellingListIndex(); in handleVisibilityAttr()
2384 clang::Attr *newAttr; in handleVisibilityAttr()
2386 newAttr = S.mergeTypeVisibilityAttr(D, Attr.getRange(), in handleVisibilityAttr()
2390 newAttr = S.mergeVisibilityAttr(D, Attr.getRange(), type, Index); in handleVisibilityAttr()
2397 const AttributeList &Attr) { in handleObjCMethodFamilyAttr() argument
2400 S.Diag(Attr.getLoc(), diag::err_attribute_wrong_decl_type) in handleObjCMethodFamilyAttr()
2405 if (Attr.getNumArgs() != 0 || !Attr.getParameterName()) { in handleObjCMethodFamilyAttr()
2406 if (!Attr.getParameterName() && Attr.getNumArgs() == 1) { in handleObjCMethodFamilyAttr()
2407 S.Diag(Attr.getLoc(), diag::err_attribute_argument_n_not_string) in handleObjCMethodFamilyAttr()
2410 S.Diag(Attr.getLoc(), diag::err_attribute_wrong_number_arguments) << 0; in handleObjCMethodFamilyAttr()
2412 Attr.setInvalid(); in handleObjCMethodFamilyAttr()
2416 StringRef param = Attr.getParameterName()->getName(); in handleObjCMethodFamilyAttr()
2433 S.Diag(Attr.getParameterLoc(), diag::warn_unknown_method_family); in handleObjCMethodFamilyAttr()
2445 method->addAttr(new (S.Context) ObjCMethodFamilyAttr(Attr.getRange(), in handleObjCMethodFamilyAttr()
2450 const AttributeList &Attr) { in handleObjCExceptionAttr() argument
2451 if (!checkAttributeNumArgs(S, Attr, 0)) in handleObjCExceptionAttr()
2456 S.Diag(Attr.getLoc(), diag::err_attribute_requires_objc_interface); in handleObjCExceptionAttr()
2461 ObjCExceptionAttr(Attr.getRange(), S.Context, in handleObjCExceptionAttr()
2462 Attr.getAttributeSpellingListIndex())); in handleObjCExceptionAttr()
2465 static void handleObjCNSObject(Sema &S, Decl *D, const AttributeList &Attr) { in handleObjCNSObject() argument
2466 if (Attr.getNumArgs() != 0) { in handleObjCNSObject()
2467 S.Diag(Attr.getLoc(), diag::err_attribute_wrong_number_arguments) << 1; in handleObjCNSObject()
2494 ObjCNSObjectAttr(Attr.getRange(), S.Context, in handleObjCNSObject()
2495 Attr.getAttributeSpellingListIndex())); in handleObjCNSObject()
2499 handleOverloadableAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleOverloadableAttr() argument
2500 if (Attr.getNumArgs() != 0) { in handleOverloadableAttr()
2501 S.Diag(Attr.getLoc(), diag::err_attribute_wrong_number_arguments) << 1; in handleOverloadableAttr()
2506 S.Diag(Attr.getLoc(), diag::err_attribute_overloadable_not_function); in handleOverloadableAttr()
2511 OverloadableAttr(Attr.getRange(), S.Context, in handleOverloadableAttr()
2512 Attr.getAttributeSpellingListIndex())); in handleOverloadableAttr()
2515 static void handleBlocksAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleBlocksAttr() argument
2516 if (!Attr.getParameterName()) { in handleBlocksAttr()
2517 S.Diag(Attr.getLoc(), diag::err_attribute_argument_n_not_string) in handleBlocksAttr()
2522 if (Attr.getNumArgs() != 0) { in handleBlocksAttr()
2523 S.Diag(Attr.getLoc(), diag::err_attribute_wrong_number_arguments) << 1; in handleBlocksAttr()
2528 if (Attr.getParameterName()->isStr("byref")) in handleBlocksAttr()
2531 S.Diag(Attr.getLoc(), diag::warn_attribute_type_not_supported) in handleBlocksAttr()
2532 << "blocks" << Attr.getParameterName(); in handleBlocksAttr()
2537 BlocksAttr(Attr.getRange(), S.Context, type, in handleBlocksAttr()
2538 Attr.getAttributeSpellingListIndex())); in handleBlocksAttr()
2541 static void handleSentinelAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleSentinelAttr() argument
2543 if (Attr.getNumArgs() > 2) { in handleSentinelAttr()
2544 S.Diag(Attr.getLoc(), diag::err_attribute_too_many_arguments) << 2; in handleSentinelAttr()
2549 if (Attr.getNumArgs() > 0) { in handleSentinelAttr()
2550 Expr *E = Attr.getArg(0); in handleSentinelAttr()
2554 S.Diag(Attr.getLoc(), diag::err_attribute_argument_n_not_int) in handleSentinelAttr()
2560 S.Diag(Attr.getLoc(), diag::err_attribute_sentinel_less_than_zero) in handleSentinelAttr()
2569 if (Attr.getNumArgs() > 1) { in handleSentinelAttr()
2570 Expr *E = Attr.getArg(1); in handleSentinelAttr()
2574 S.Diag(Attr.getLoc(), diag::err_attribute_argument_n_not_int) in handleSentinelAttr()
2583 S.Diag(Attr.getLoc(), diag::err_attribute_sentinel_not_zero_or_one) in handleSentinelAttr()
2592 S.Diag(Attr.getLoc(), diag::warn_attribute_sentinel_named_arguments); in handleSentinelAttr()
2597 S.Diag(Attr.getLoc(), diag::warn_attribute_sentinel_not_variadic) << 0; in handleSentinelAttr()
2602 S.Diag(Attr.getLoc(), diag::warn_attribute_sentinel_not_variadic) << 0; in handleSentinelAttr()
2607 S.Diag(Attr.getLoc(), diag::warn_attribute_sentinel_not_variadic) << 1; in handleSentinelAttr()
2617 S.Diag(Attr.getLoc(), diag::warn_attribute_sentinel_not_variadic) << m; in handleSentinelAttr()
2621 S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) in handleSentinelAttr()
2622 << Attr.getName() << ExpectedFunctionMethodOrBlock; in handleSentinelAttr()
2626 S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) in handleSentinelAttr()
2627 << Attr.getName() << ExpectedFunctionMethodOrBlock; in handleSentinelAttr()
2631 SentinelAttr(Attr.getRange(), S.Context, sentinel, nullPos, in handleSentinelAttr()
2632 Attr.getAttributeSpellingListIndex())); in handleSentinelAttr()
2635 static void handleWarnUnusedResult(Sema &S, Decl *D, const AttributeList &Attr) { in handleWarnUnusedResult() argument
2637 if (!checkAttributeNumArgs(S, Attr, 0)) in handleWarnUnusedResult()
2641 S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) in handleWarnUnusedResult()
2642 << Attr.getName() << ExpectedFunctionMethodOrClass; in handleWarnUnusedResult()
2647 S.Diag(Attr.getLoc(), diag::warn_attribute_void_function_method) in handleWarnUnusedResult()
2648 << Attr.getName() << 0; in handleWarnUnusedResult()
2653 S.Diag(Attr.getLoc(), diag::warn_attribute_void_function_method) in handleWarnUnusedResult()
2654 << Attr.getName() << 1; in handleWarnUnusedResult()
2659 WarnUnusedResultAttr(Attr.getRange(), S.Context, in handleWarnUnusedResult()
2660 Attr.getAttributeSpellingListIndex())); in handleWarnUnusedResult()
2663 static void handleWeakAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleWeakAttr() argument
2665 if (Attr.hasParameterOrArguments()) { in handleWeakAttr()
2666 S.Diag(Attr.getLoc(), diag::err_attribute_wrong_number_arguments) << 0; in handleWeakAttr()
2672 D->addAttr(::new (S.Context) WeakAttr(Attr.getRange(), S.Context)); in handleWeakAttr()
2675 S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) in handleWeakAttr()
2676 << Attr.getName() << ExpectedVariableOrFunction; in handleWeakAttr()
2683 WeakAttr(Attr.getRange(), S.Context, in handleWeakAttr()
2684 Attr.getAttributeSpellingListIndex())); in handleWeakAttr()
2687 static void handleWeakImportAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleWeakImportAttr() argument
2689 if (!checkAttributeNumArgs(S, Attr, 0)) in handleWeakImportAttr()
2697 S.Diag(Attr.getLoc(), in handleWeakImportAttr()
2705 S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) in handleWeakImportAttr()
2706 << Attr.getName() << ExpectedVariableOrFunction; in handleWeakImportAttr()
2712 WeakImportAttr(Attr.getRange(), S.Context, in handleWeakImportAttr()
2713 Attr.getAttributeSpellingListIndex())); in handleWeakImportAttr()
2718 const AttributeList &Attr) { in handleWorkGroupSize() argument
2719 assert(Attr.getKind() == AttributeList::AT_ReqdWorkGroupSize in handleWorkGroupSize()
2720 || Attr.getKind() == AttributeList::AT_WorkGroupSizeHint); in handleWorkGroupSize()
2723 if (!checkAttributeNumArgs(S, Attr, 3)) return; in handleWorkGroupSize()
2727 Expr *E = Attr.getArg(i); in handleWorkGroupSize()
2731 S.Diag(Attr.getLoc(), diag::err_attribute_argument_not_int) in handleWorkGroupSize()
2732 << Attr.getName()->getName() << E->getSourceRange(); in handleWorkGroupSize()
2738 if (Attr.getKind() == AttributeList::AT_ReqdWorkGroupSize in handleWorkGroupSize()
2744 S.Diag(Attr.getLoc(), diag::warn_duplicate_attribute) << in handleWorkGroupSize()
2745 Attr.getName(); in handleWorkGroupSize()
2749 if (Attr.getKind() == AttributeList::AT_WorkGroupSizeHint in handleWorkGroupSize()
2755 S.Diag(Attr.getLoc(), diag::warn_duplicate_attribute) << in handleWorkGroupSize()
2756 Attr.getName(); in handleWorkGroupSize()
2760 if (Attr.getKind() == AttributeList::AT_ReqdWorkGroupSize) in handleWorkGroupSize()
2762 ReqdWorkGroupSizeAttr(Attr.getRange(), S.Context, in handleWorkGroupSize()
2764 Attr.getAttributeSpellingListIndex())); in handleWorkGroupSize()
2767 WorkGroupSizeHintAttr(Attr.getRange(), S.Context, in handleWorkGroupSize()
2769 Attr.getAttributeSpellingListIndex())); in handleWorkGroupSize()
2772 static void handleVecTypeHint(Sema &S, Decl *D, const AttributeList &Attr) { in handleVecTypeHint() argument
2773 assert(Attr.getKind() == AttributeList::AT_VecTypeHint); in handleVecTypeHint()
2776 if (!checkAttributeNumArgs(S, Attr, 1)) in handleVecTypeHint()
2779 QualType ParmType = S.GetTypeFromParser(Attr.getTypeArg()); in handleVecTypeHint()
2784 S.Diag(Attr.getLoc(), diag::err_attribute_argument_vec_type_hint) in handleVecTypeHint()
2789 if (Attr.getKind() == AttributeList::AT_VecTypeHint && in handleVecTypeHint()
2793 S.Diag(Attr.getLoc(), diag::warn_duplicate_attribute) << Attr.getName(); in handleVecTypeHint()
2798 D->addAttr(::new (S.Context) VecTypeHintAttr(Attr.getLoc(), S.Context, in handleVecTypeHint()
2799 ParmType, Attr.getLoc())); in handleVecTypeHint()
2802 static void handleEndianAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleEndianAttr() argument
2804 S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) << "endian" in handleEndianAttr()
2806 StringRef EndianType = Attr.getParameterName()->getName(); in handleEndianAttr()
2808 S.Diag(Attr.getLoc(), diag::warn_attribute_unknown_endian) << EndianType; in handleEndianAttr()
2825 static void handleSectionAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleSectionAttr() argument
2827 if (!checkAttributeNumArgs(S, Attr, 1)) in handleSectionAttr()
2832 Expr *ArgExpr = Attr.getArg(0); in handleSectionAttr()
2853 unsigned Index = Attr.getAttributeSpellingListIndex(); in handleSectionAttr()
2854 SectionAttr *NewAttr = S.mergeSectionAttr(D, Attr.getRange(), in handleSectionAttr()
2861 static void handleNothrowAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleNothrowAttr() argument
2863 if (Attr.hasParameterOrArguments()) { in handleNothrowAttr()
2864 S.Diag(Attr.getLoc(), diag::err_attribute_wrong_number_arguments) << 0; in handleNothrowAttr()
2870 Existing->setRange(Attr.getRange()); in handleNothrowAttr()
2873 NoThrowAttr(Attr.getRange(), S.Context, in handleNothrowAttr()
2874 Attr.getAttributeSpellingListIndex())); in handleNothrowAttr()
2878 static void handleConstAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleConstAttr() argument
2880 if (Attr.hasParameterOrArguments()) { in handleConstAttr()
2881 S.Diag(Attr.getLoc(), diag::err_attribute_wrong_number_arguments) << 0; in handleConstAttr()
2887 Existing->setRange(Attr.getRange()); in handleConstAttr()
2890 ConstAttr(Attr.getRange(), S.Context, in handleConstAttr()
2891 Attr.getAttributeSpellingListIndex() )); in handleConstAttr()
2895 static void handlePureAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handlePureAttr() argument
2897 if (!checkAttributeNumArgs(S, Attr, 0)) in handlePureAttr()
2901 PureAttr(Attr.getRange(), S.Context, in handlePureAttr()
2902 Attr.getAttributeSpellingListIndex())); in handlePureAttr()
2905 static void handleCleanupAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleCleanupAttr() argument
2906 if (!Attr.getParameterName()) { in handleCleanupAttr()
2907 S.Diag(Attr.getLoc(), diag::err_attribute_wrong_number_arguments) << 1; in handleCleanupAttr()
2911 if (Attr.getNumArgs() != 0) { in handleCleanupAttr()
2912 S.Diag(Attr.getLoc(), diag::err_attribute_wrong_number_arguments) << 1; in handleCleanupAttr()
2919 S.Diag(Attr.getLoc(), diag::warn_attribute_ignored) << "cleanup"; in handleCleanupAttr()
2926 = S.LookupSingleName(S.TUScope, Attr.getParameterName(), in handleCleanupAttr()
2927 Attr.getParameterLoc(), Sema::LookupOrdinaryName); in handleCleanupAttr()
2929 S.Diag(Attr.getParameterLoc(), diag::err_attribute_cleanup_arg_not_found) << in handleCleanupAttr()
2930 Attr.getParameterName(); in handleCleanupAttr()
2936 S.Diag(Attr.getParameterLoc(), in handleCleanupAttr()
2938 << Attr.getParameterName(); in handleCleanupAttr()
2943 S.Diag(Attr.getParameterLoc(), in handleCleanupAttr()
2945 << Attr.getParameterName(); in handleCleanupAttr()
2955 S.Diag(Attr.getParameterLoc(), in handleCleanupAttr()
2957 Attr.getParameterName() << ParamTy << Ty; in handleCleanupAttr()
2962 CleanupAttr(Attr.getRange(), S.Context, FD, in handleCleanupAttr()
2963 Attr.getAttributeSpellingListIndex())); in handleCleanupAttr()
2964 S.MarkFunctionReferenced(Attr.getParameterLoc(), FD); in handleCleanupAttr()
2965 S.DiagnoseUseOfDecl(FD, Attr.getParameterLoc()); in handleCleanupAttr()
2970 static void handleFormatArgAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleFormatArgAttr() argument
2971 if (!checkAttributeNumArgs(S, Attr, 1)) in handleFormatArgAttr()
2975 S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) in handleFormatArgAttr()
2976 << Attr.getName() << ExpectedFunction; in handleFormatArgAttr()
2987 Expr *IdxExpr = Attr.getArg(0); in handleFormatArgAttr()
2991 S.Diag(Attr.getLoc(), diag::err_attribute_argument_n_not_int) in handleFormatArgAttr()
2997 S.Diag(Attr.getLoc(), diag::err_attribute_argument_out_of_bounds) in handleFormatArgAttr()
3006 S.Diag(Attr.getLoc(), diag::err_attribute_invalid_implicit_this_argument) in handleFormatArgAttr()
3022 S.Diag(Attr.getLoc(), diag::err_format_attribute_not) in handleFormatArgAttr()
3033 S.Diag(Attr.getLoc(), diag::err_format_attribute_result_not) in handleFormatArgAttr()
3040 FormatArgAttr(Attr.getRange(), S.Context, Idx.getZExtValue(), in handleFormatArgAttr()
3041 Attr.getAttributeSpellingListIndex())); in handleFormatArgAttr()
3074 const AttributeList &Attr) { in handleInitPriorityAttr() argument
3076 S.Diag(Attr.getLoc(), diag::warn_attribute_ignored) << Attr.getName(); in handleInitPriorityAttr()
3081 S.Diag(Attr.getLoc(), diag::err_init_priority_object_attr); in handleInitPriorityAttr()
3082 Attr.setInvalid(); in handleInitPriorityAttr()
3089 S.Diag(Attr.getLoc(), diag::err_init_priority_object_attr); in handleInitPriorityAttr()
3090 Attr.setInvalid(); in handleInitPriorityAttr()
3094 if (Attr.getNumArgs() != 1) { in handleInitPriorityAttr()
3095 S.Diag(Attr.getLoc(), diag::err_attribute_wrong_number_arguments) << 1; in handleInitPriorityAttr()
3096 Attr.setInvalid(); in handleInitPriorityAttr()
3099 Expr *priorityExpr = Attr.getArg(0); in handleInitPriorityAttr()
3104 S.Diag(Attr.getLoc(), diag::err_attribute_argument_not_int) in handleInitPriorityAttr()
3106 Attr.setInvalid(); in handleInitPriorityAttr()
3111 S.Diag(Attr.getLoc(), diag::err_attribute_argument_outof_range) in handleInitPriorityAttr()
3113 Attr.setInvalid(); in handleInitPriorityAttr()
3117 InitPriorityAttr(Attr.getRange(), S.Context, prioritynum, in handleInitPriorityAttr()
3118 Attr.getAttributeSpellingListIndex())); in handleInitPriorityAttr()
3147 static void handleFormatAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleFormatAttr() argument
3149 if (!Attr.getParameterName()) { in handleFormatAttr()
3150 S.Diag(Attr.getLoc(), diag::err_attribute_argument_n_not_string) in handleFormatAttr()
3155 if (Attr.getNumArgs() != 2) { in handleFormatAttr()
3156 S.Diag(Attr.getLoc(), diag::err_attribute_wrong_number_arguments) << 3; in handleFormatAttr()
3161 S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) in handleFormatAttr()
3162 << Attr.getName() << ExpectedFunction; in handleFormatAttr()
3172 StringRef Format = Attr.getParameterName()->getName(); in handleFormatAttr()
3185 S.Diag(Attr.getLoc(), diag::warn_attribute_type_not_supported) in handleFormatAttr()
3186 << "format" << Attr.getParameterName()->getName(); in handleFormatAttr()
3191 Expr *IdxExpr = Attr.getArg(0); in handleFormatAttr()
3195 S.Diag(Attr.getLoc(), diag::err_attribute_argument_n_not_int) in handleFormatAttr()
3201 S.Diag(Attr.getLoc(), diag::err_attribute_argument_out_of_bounds) in handleFormatAttr()
3211 S.Diag(Attr.getLoc(), in handleFormatAttr()
3224 S.Diag(Attr.getLoc(), diag::err_format_attribute_not) in handleFormatAttr()
3233 S.Diag(Attr.getLoc(), diag::err_format_attribute_not) in handleFormatAttr()
3240 S.Diag(Attr.getLoc(), diag::err_format_attribute_not) in handleFormatAttr()
3246 Expr *FirstArgExpr = Attr.getArg(1); in handleFormatAttr()
3250 S.Diag(Attr.getLoc(), diag::err_attribute_argument_n_not_int) in handleFormatAttr()
3269 S.Diag(Attr.getLoc(), diag::err_format_strftime_third_parameter) in handleFormatAttr()
3275 S.Diag(Attr.getLoc(), diag::err_attribute_argument_out_of_bounds) in handleFormatAttr()
3280 FormatAttr *NewAttr = S.mergeFormatAttr(D, Attr.getRange(), Format, in handleFormatAttr()
3283 Attr.getAttributeSpellingListIndex()); in handleFormatAttr()
3289 const AttributeList &Attr) { in handleTransparentUnionAttr() argument
3291 if (!checkAttributeNumArgs(S, Attr, 0)) in handleTransparentUnionAttr()
3304 S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) in handleTransparentUnionAttr()
3305 << Attr.getName() << ExpectedUnion; in handleTransparentUnionAttr()
3310 S.Diag(Attr.getLoc(), in handleTransparentUnionAttr()
3318 S.Diag(Attr.getLoc(), diag::warn_transparent_union_attribute_zero_fields); in handleTransparentUnionAttr()
3353 TransparentUnionAttr(Attr.getRange(), S.Context, in handleTransparentUnionAttr()
3354 Attr.getAttributeSpellingListIndex())); in handleTransparentUnionAttr()
3357 static void handleAnnotateAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleAnnotateAttr() argument
3359 if (!checkAttributeNumArgs(S, Attr, 1)) in handleAnnotateAttr()
3362 Expr *ArgExpr = Attr.getArg(0); in handleAnnotateAttr()
3381 AnnotateAttr(Attr.getRange(), S.Context, SE->getString(), in handleAnnotateAttr()
3382 Attr.getAttributeSpellingListIndex())); in handleAnnotateAttr()
3385 static void handleAlignedAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleAlignedAttr() argument
3387 if (Attr.getNumArgs() > 1) { in handleAlignedAttr()
3388 S.Diag(Attr.getLoc(), diag::err_attribute_wrong_number_arguments) << 1; in handleAlignedAttr()
3392 if (Attr.getNumArgs() == 0) { in handleAlignedAttr()
3393 D->addAttr(::new (S.Context) AlignedAttr(Attr.getRange(), S.Context, in handleAlignedAttr()
3394 true, 0, Attr.getAttributeSpellingListIndex())); in handleAlignedAttr()
3398 Expr *E = Attr.getArg(0); in handleAlignedAttr()
3399 if (Attr.isPackExpansion() && !E->containsUnexpandedParameterPack()) { in handleAlignedAttr()
3400 S.Diag(Attr.getEllipsisLoc(), in handleAlignedAttr()
3405 if (!Attr.isPackExpansion() && S.DiagnoseUnexpandedParameterPack(E)) in handleAlignedAttr()
3408 S.AddAlignedAttr(Attr.getRange(), D, E, Attr.getAttributeSpellingListIndex(), in handleAlignedAttr()
3409 Attr.isPackExpansion()); in handleAlignedAttr()
3552 static void handleModeAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleModeAttr() argument
3557 if (!checkAttributeNumArgs(S, Attr, 0)) in handleModeAttr()
3561 IdentifierInfo *Name = Attr.getParameterName(); in handleModeAttr()
3563 S.Diag(Attr.getLoc(), diag::err_attribute_missing_parameter_name); in handleModeAttr()
3567 StringRef Str = Attr.getParameterName()->getName(); in handleModeAttr()
3620 << "mode" << Attr.getRange(); in handleModeAttr()
3625 S.Diag(Attr.getLoc(), diag::err_mode_not_primitive); in handleModeAttr()
3628 S.Diag(Attr.getLoc(), diag::err_mode_wrong_type); in handleModeAttr()
3631 S.Diag(Attr.getLoc(), diag::err_mode_wrong_type); in handleModeAttr()
3634 S.Diag(Attr.getLoc(), diag::err_mode_wrong_type); in handleModeAttr()
3646 S.Diag(Attr.getLoc(), diag::err_unknown_machine_mode) << Name; in handleModeAttr()
3649 S.Diag(Attr.getLoc(), diag::err_unsupported_machine_mode) << Name; in handleModeAttr()
3653 S.Diag(Attr.getLoc(), diag::err_unsupported_machine_mode) << Name; in handleModeAttr()
3663 S.Diag(Attr.getLoc(), diag::err_unsupported_machine_mode) << Name; in handleModeAttr()
3698 S.Diag(Attr.getLoc(), diag::err_unsupported_machine_mode) << Name; in handleModeAttr()
3720 static void handleNoDebugAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleNoDebugAttr() argument
3722 if (!checkAttributeNumArgs(S, Attr, 0)) in handleNoDebugAttr()
3727 S.Diag(Attr.getLoc(), in handleNoDebugAttr()
3729 << Attr.getName(); in handleNoDebugAttr()
3731 S.Diag(Attr.getLoc(), in handleNoDebugAttr()
3733 << Attr.getName(); in handleNoDebugAttr()
3738 NoDebugAttr(Attr.getRange(), S.Context, in handleNoDebugAttr()
3739 Attr.getAttributeSpellingListIndex())); in handleNoDebugAttr()
3742 static void handleNoInlineAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleNoInlineAttr() argument
3744 if (!checkAttributeNumArgs(S, Attr, 0)) in handleNoInlineAttr()
3749 S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) in handleNoInlineAttr()
3750 << Attr.getName() << ExpectedFunction; in handleNoInlineAttr()
3755 NoInlineAttr(Attr.getRange(), S.Context, in handleNoInlineAttr()
3756 Attr.getAttributeSpellingListIndex())); in handleNoInlineAttr()
3760 const AttributeList &Attr) { in handleNoInstrumentFunctionAttr() argument
3762 if (!checkAttributeNumArgs(S, Attr, 0)) in handleNoInstrumentFunctionAttr()
3767 S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) in handleNoInstrumentFunctionAttr()
3768 << Attr.getName() << ExpectedFunction; in handleNoInstrumentFunctionAttr()
3773 NoInstrumentFunctionAttr(Attr.getRange(), S.Context, in handleNoInstrumentFunctionAttr()
3774 Attr.getAttributeSpellingListIndex())); in handleNoInstrumentFunctionAttr()
3777 static void handleKernelAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleKernelAttr() argument
3779 D->addAttr(::new (S.Context) KernelAttr(Attr.getRange(), S.Context)); in handleKernelAttr()
3781 S.Diag(Attr.getLoc(), diag::warn_attribute_ignored) << "kernel"; in handleKernelAttr()
3785 static void handleConstantAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleConstantAttr() argument
3788 if (Attr.hasParameterOrArguments()) { in handleConstantAttr()
3789 S.Diag(Attr.getLoc(), diag::err_attribute_wrong_number_arguments) << 0; in handleConstantAttr()
3794 S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) in handleConstantAttr()
3795 << Attr.getName() << ExpectedVariable; in handleConstantAttr()
3800 CUDAConstantAttr(Attr.getRange(), S.Context, in handleConstantAttr()
3801 Attr.getAttributeSpellingListIndex())); in handleConstantAttr()
3803 S.Diag(Attr.getLoc(), diag::warn_attribute_ignored) << "constant"; in handleConstantAttr()
3807 static void handleDeviceAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleDeviceAttr() argument
3810 if (Attr.getNumArgs() != 0) { in handleDeviceAttr()
3811 S.Diag(Attr.getLoc(), diag::err_attribute_wrong_number_arguments) << 0; in handleDeviceAttr()
3816 S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) in handleDeviceAttr()
3817 << Attr.getName() << ExpectedVariableOrFunction; in handleDeviceAttr()
3822 CUDADeviceAttr(Attr.getRange(), S.Context, in handleDeviceAttr()
3823 Attr.getAttributeSpellingListIndex())); in handleDeviceAttr()
3825 S.Diag(Attr.getLoc(), diag::warn_attribute_ignored) << "device"; in handleDeviceAttr()
3829 static void handleGlobalAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleGlobalAttr() argument
3832 if (!checkAttributeNumArgs(S, Attr, 0)) in handleGlobalAttr()
3836 S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) in handleGlobalAttr()
3837 << Attr.getName() << ExpectedFunction; in handleGlobalAttr()
3857 CUDAGlobalAttr(Attr.getRange(), S.Context, in handleGlobalAttr()
3858 Attr.getAttributeSpellingListIndex())); in handleGlobalAttr()
3860 S.Diag(Attr.getLoc(), diag::warn_attribute_ignored) << "global"; in handleGlobalAttr()
3864 static void handleHostAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleHostAttr() argument
3867 if (!checkAttributeNumArgs(S, Attr, 0)) in handleHostAttr()
3872 S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) in handleHostAttr()
3873 << Attr.getName() << ExpectedFunction; in handleHostAttr()
3878 CUDAHostAttr(Attr.getRange(), S.Context, in handleHostAttr()
3879 Attr.getAttributeSpellingListIndex())); in handleHostAttr()
3881 S.Diag(Attr.getLoc(), diag::warn_attribute_ignored) << "host"; in handleHostAttr()
3885 static void handleSharedAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleSharedAttr() argument
3888 if (!checkAttributeNumArgs(S, Attr, 0)) in handleSharedAttr()
3892 S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) in handleSharedAttr()
3893 << Attr.getName() << ExpectedVariable; in handleSharedAttr()
3898 CUDASharedAttr(Attr.getRange(), S.Context, in handleSharedAttr()
3899 Attr.getAttributeSpellingListIndex())); in handleSharedAttr()
3901 S.Diag(Attr.getLoc(), diag::warn_attribute_ignored) << "shared"; in handleSharedAttr()
3905 static void handleGNUInlineAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleGNUInlineAttr() argument
3907 if (!checkAttributeNumArgs(S, Attr, 0)) in handleGNUInlineAttr()
3912 S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) in handleGNUInlineAttr()
3913 << Attr.getName() << ExpectedFunction; in handleGNUInlineAttr()
3918 S.Diag(Attr.getLoc(), diag::warn_gnu_inline_attribute_requires_inline); in handleGNUInlineAttr()
3923 GNUInlineAttr(Attr.getRange(), S.Context, in handleGNUInlineAttr()
3924 Attr.getAttributeSpellingListIndex())); in handleGNUInlineAttr()
3927 static void handleCallConvAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleCallConvAttr() argument
3934 if (S.CheckCallingConvAttr(Attr, CC, FD)) in handleCallConvAttr()
3938 S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) in handleCallConvAttr()
3939 << Attr.getName() << ExpectedFunctionOrMethod; in handleCallConvAttr()
3943 switch (Attr.getKind()) { in handleCallConvAttr()
3946 FastCallAttr(Attr.getRange(), S.Context, in handleCallConvAttr()
3947 Attr.getAttributeSpellingListIndex())); in handleCallConvAttr()
3951 StdCallAttr(Attr.getRange(), S.Context, in handleCallConvAttr()
3952 Attr.getAttributeSpellingListIndex())); in handleCallConvAttr()
3956 ThisCallAttr(Attr.getRange(), S.Context, in handleCallConvAttr()
3957 Attr.getAttributeSpellingListIndex())); in handleCallConvAttr()
3961 CDeclAttr(Attr.getRange(), S.Context, in handleCallConvAttr()
3962 Attr.getAttributeSpellingListIndex())); in handleCallConvAttr()
3966 PascalAttr(Attr.getRange(), S.Context, in handleCallConvAttr()
3967 Attr.getAttributeSpellingListIndex())); in handleCallConvAttr()
3983 PcsAttr(Attr.getRange(), S.Context, PCS, in handleCallConvAttr()
3984 Attr.getAttributeSpellingListIndex())); in handleCallConvAttr()
3989 PnaclCallAttr(Attr.getRange(), S.Context, in handleCallConvAttr()
3990 Attr.getAttributeSpellingListIndex())); in handleCallConvAttr()
3994 IntelOclBiccAttr(Attr.getRange(), S.Context, in handleCallConvAttr()
3995 Attr.getAttributeSpellingListIndex())); in handleCallConvAttr()
4003 static void handleOpenCLKernelAttr(Sema &S, Decl *D, const AttributeList &Attr){ in handleOpenCLKernelAttr() argument
4004 assert(!Attr.isInvalid()); in handleOpenCLKernelAttr()
4005 D->addAttr(::new (S.Context) OpenCLKernelAttr(Attr.getRange(), S.Context)); in handleOpenCLKernelAttr()
4071 static void handleRegparmAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleRegparmAttr() argument
4075 if (S.CheckRegparmAttr(Attr, numParams)) in handleRegparmAttr()
4079 S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) in handleRegparmAttr()
4080 << Attr.getName() << ExpectedFunctionOrMethod; in handleRegparmAttr()
4085 RegparmAttr(Attr.getRange(), S.Context, numParams, in handleRegparmAttr()
4086 Attr.getAttributeSpellingListIndex())); in handleRegparmAttr()
4091 bool Sema::CheckRegparmAttr(const AttributeList &Attr, unsigned &numParams) { in CheckRegparmAttr() argument
4092 if (Attr.isInvalid()) in CheckRegparmAttr()
4095 if (Attr.getNumArgs() != 1) { in CheckRegparmAttr()
4096 Diag(Attr.getLoc(), diag::err_attribute_wrong_number_arguments) << 1; in CheckRegparmAttr()
4097 Attr.setInvalid(); in CheckRegparmAttr()
4101 Expr *NumParamsExpr = Attr.getArg(0); in CheckRegparmAttr()
4105 Diag(Attr.getLoc(), diag::err_attribute_argument_not_int) in CheckRegparmAttr()
4107 Attr.setInvalid(); in CheckRegparmAttr()
4112 Diag(Attr.getLoc(), diag::err_attribute_regparm_wrong_platform) in CheckRegparmAttr()
4114 Attr.setInvalid(); in CheckRegparmAttr()
4120 Diag(Attr.getLoc(), diag::err_attribute_regparm_invalid_number) in CheckRegparmAttr()
4122 Attr.setInvalid(); in CheckRegparmAttr()
4129 static void handleLaunchBoundsAttr(Sema &S, Decl *D, const AttributeList &Attr){ in handleLaunchBoundsAttr() argument
4132 if (Attr.getNumArgs() != 1 && Attr.getNumArgs() != 2) { in handleLaunchBoundsAttr()
4134 S.Diag(Attr.getLoc(), diag::err_attribute_too_many_arguments) << 2; in handleLaunchBoundsAttr()
4139 S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) in handleLaunchBoundsAttr()
4140 << Attr.getName() << ExpectedFunctionOrMethod; in handleLaunchBoundsAttr()
4144 Expr *MaxThreadsExpr = Attr.getArg(0); in handleLaunchBoundsAttr()
4149 S.Diag(Attr.getLoc(), diag::err_attribute_argument_n_not_int) in handleLaunchBoundsAttr()
4155 if (Attr.getNumArgs() > 1) { in handleLaunchBoundsAttr()
4156 Expr *MinBlocksExpr = Attr.getArg(1); in handleLaunchBoundsAttr()
4160 S.Diag(Attr.getLoc(), diag::err_attribute_argument_n_not_int) in handleLaunchBoundsAttr()
4167 CUDALaunchBoundsAttr(Attr.getRange(), S.Context, in handleLaunchBoundsAttr()
4170 Attr.getAttributeSpellingListIndex())); in handleLaunchBoundsAttr()
4172 S.Diag(Attr.getLoc(), diag::warn_attribute_ignored) << "launch_bounds"; in handleLaunchBoundsAttr()
4177 const AttributeList &Attr) { in handleArgumentWithTypeTagAttr() argument
4178 StringRef AttrName = Attr.getName()->getName(); in handleArgumentWithTypeTagAttr()
4179 if (!Attr.getParameterName()) { in handleArgumentWithTypeTagAttr()
4180 S.Diag(Attr.getLoc(), diag::err_attribute_argument_n_not_identifier) in handleArgumentWithTypeTagAttr()
4181 << Attr.getName() << /* arg num = */ 1; in handleArgumentWithTypeTagAttr()
4185 if (Attr.getNumArgs() != 2) { in handleArgumentWithTypeTagAttr()
4186 S.Diag(Attr.getLoc(), diag::err_attribute_wrong_number_arguments) in handleArgumentWithTypeTagAttr()
4191 IdentifierInfo *ArgumentKind = Attr.getParameterName(); in handleArgumentWithTypeTagAttr()
4194 S.Diag(Attr.getLoc(), diag::err_attribute_wrong_decl_type) in handleArgumentWithTypeTagAttr()
4195 << Attr.getName() << ExpectedFunctionOrMethod; in handleArgumentWithTypeTagAttr()
4201 Attr.getLoc(), 2, in handleArgumentWithTypeTagAttr()
4202 Attr.getArg(0), ArgumentIdx)) in handleArgumentWithTypeTagAttr()
4207 Attr.getLoc(), 3, in handleArgumentWithTypeTagAttr()
4208 Attr.getArg(1), TypeTagIdx)) in handleArgumentWithTypeTagAttr()
4216 S.Diag(Attr.getLoc(), diag::err_attribute_pointers_only) in handleArgumentWithTypeTagAttr()
4222 ArgumentWithTypeTagAttr(Attr.getRange(), S.Context, ArgumentKind, in handleArgumentWithTypeTagAttr()
4224 Attr.getAttributeSpellingListIndex())); in handleArgumentWithTypeTagAttr()
4228 const AttributeList &Attr) { in handleTypeTagForDatatypeAttr() argument
4229 IdentifierInfo *PointerKind = Attr.getParameterName(); in handleTypeTagForDatatypeAttr()
4231 S.Diag(Attr.getLoc(), diag::err_attribute_argument_n_not_identifier) in handleTypeTagForDatatypeAttr()
4236 QualType MatchingCType = S.GetTypeFromParser(Attr.getMatchingCType(), NULL); in handleTypeTagForDatatypeAttr()
4239 TypeTagForDatatypeAttr(Attr.getRange(), S.Context, PointerKind, in handleTypeTagForDatatypeAttr()
4241 Attr.getLayoutCompatible(), in handleTypeTagForDatatypeAttr()
4242 Attr.getMustBeNull(), in handleTypeTagForDatatypeAttr()
4243 Attr.getAttributeSpellingListIndex())); in handleTypeTagForDatatypeAttr()
4261 static void handleNSConsumedAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleNSConsumedAttr() argument
4265 << Attr.getRange() << Attr.getName() << ExpectedParameter; in handleNSConsumedAttr()
4270 if (Attr.getKind() == AttributeList::AT_NSConsumed) { in handleNSConsumedAttr()
4280 << Attr.getRange() << Attr.getName() << cf; in handleNSConsumedAttr()
4286 CFConsumedAttr(Attr.getRange(), S.Context, in handleNSConsumedAttr()
4287 Attr.getAttributeSpellingListIndex())); in handleNSConsumedAttr()
4290 NSConsumedAttr(Attr.getRange(), S.Context, in handleNSConsumedAttr()
4291 Attr.getAttributeSpellingListIndex())); in handleNSConsumedAttr()
4295 const AttributeList &Attr) { in handleNSConsumesSelfAttr() argument
4298 << Attr.getRange() << Attr.getName() << ExpectedMethod; in handleNSConsumesSelfAttr()
4303 NSConsumesSelfAttr(Attr.getRange(), S.Context, in handleNSConsumesSelfAttr()
4304 Attr.getAttributeSpellingListIndex())); in handleNSConsumesSelfAttr()
4308 const AttributeList &Attr) { in handleNSReturnsRetainedAttr() argument
4315 (Attr.getKind() == AttributeList::AT_NSReturnsRetained)) in handleNSReturnsRetainedAttr()
4323 << Attr.getRange() << Attr.getName() in handleNSReturnsRetainedAttr()
4330 switch (Attr.getKind()) { in handleNSReturnsRetainedAttr()
4348 << Attr.getRange() << Attr.getName() << isa<ObjCMethodDecl>(D) << cf; in handleNSReturnsRetainedAttr()
4352 switch (Attr.getKind()) { in handleNSReturnsRetainedAttr()
4357 NSReturnsAutoreleasedAttr(Attr.getRange(), S.Context, in handleNSReturnsRetainedAttr()
4358 Attr.getAttributeSpellingListIndex())); in handleNSReturnsRetainedAttr()
4362 CFReturnsNotRetainedAttr(Attr.getRange(), S.Context, in handleNSReturnsRetainedAttr()
4363 Attr.getAttributeSpellingListIndex())); in handleNSReturnsRetainedAttr()
4367 NSReturnsNotRetainedAttr(Attr.getRange(), S.Context, in handleNSReturnsRetainedAttr()
4368 Attr.getAttributeSpellingListIndex())); in handleNSReturnsRetainedAttr()
4372 CFReturnsRetainedAttr(Attr.getRange(), S.Context, in handleNSReturnsRetainedAttr()
4373 Attr.getAttributeSpellingListIndex())); in handleNSReturnsRetainedAttr()
4377 NSReturnsRetainedAttr(Attr.getRange(), S.Context, in handleNSReturnsRetainedAttr()
4378 Attr.getAttributeSpellingListIndex())); in handleNSReturnsRetainedAttr()
4452 Attr *Existing; in handleCFTransferAttr()
4479 const AttributeList &Attr) { in handleNSBridgedAttr() argument
4483 << Attr.getRange() << Attr.getName() << ExpectedStruct; in handleNSBridgedAttr()
4486 IdentifierInfo *ParmName = Attr.getParameterName(); in handleNSBridgedAttr()
4493 LookupResult R(S, DeclarationName(ParmName), Attr.getParameterLoc(), in handleNSBridgedAttr()
4505 NSBridgedAttr(Attr.getRange(), S.Context, ParmName, in handleNSBridgedAttr()
4506 Attr.getAttributeSpellingListIndex())); in handleNSBridgedAttr()
4510 const AttributeList &Attr) { in handleObjCOwnershipAttr() argument
4514 << Attr.getRange() << Attr.getName() << ExpectedVariable; in handleObjCOwnershipAttr()
4518 const AttributeList &Attr) { in handleObjCPreciseLifetimeAttr() argument
4521 << Attr.getRange() << Attr.getName() << ExpectedVariable; in handleObjCPreciseLifetimeAttr()
4530 S.Diag(Attr.getLoc(), diag::err_objc_precise_lifetime_bad_type) in handleObjCPreciseLifetimeAttr()
4554 S.Diag(Attr.getLoc(), diag::warn_objc_precise_lifetime_meaningless) in handleObjCPreciseLifetimeAttr()
4560 ObjCPreciseLifetimeAttr(Attr.getRange(), S.Context, in handleObjCPreciseLifetimeAttr()
4561 Attr.getAttributeSpellingListIndex())); in handleObjCPreciseLifetimeAttr()
4568 static void handleUuidAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleUuidAttr() argument
4571 if (!checkAttributeNumArgs(S, Attr, 1)) in handleUuidAttr()
4574 Expr *Arg = Attr.getArg(0); in handleUuidAttr()
4577 S.Diag(Attr.getLoc(), diag::err_attribute_argument_n_not_string) in handleUuidAttr()
4589 S.Diag(Attr.getLoc(), diag::err_attribute_uuid_malformed_guid); in handleUuidAttr()
4593 S.Diag(Attr.getLoc(), diag::err_attribute_uuid_malformed_guid); in handleUuidAttr()
4606 S.Diag(Attr.getLoc(), diag::err_attribute_uuid_malformed_guid); in handleUuidAttr()
4610 S.Diag(Attr.getLoc(), diag::err_attribute_uuid_malformed_guid); in handleUuidAttr()
4617 UuidAttr(Attr.getRange(), S.Context, Str->getString(), in handleUuidAttr()
4618 Attr.getAttributeSpellingListIndex())); in handleUuidAttr()
4620 S.Diag(Attr.getLoc(), diag::warn_attribute_ignored) << "uuid"; in handleUuidAttr()
4623 static void handleInheritanceAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleInheritanceAttr() argument
4625 S.Diag(Attr.getLoc(), diag::warn_attribute_ignored) << Attr.getName(); in handleInheritanceAttr()
4629 AttributeList::Kind Kind = Attr.getKind(); in handleInheritanceAttr()
4633 SingleInheritanceAttr(Attr.getRange(), S.Context, in handleInheritanceAttr()
4634 Attr.getAttributeSpellingListIndex())); in handleInheritanceAttr()
4638 MultipleInheritanceAttr(Attr.getRange(), S.Context, in handleInheritanceAttr()
4639 Attr.getAttributeSpellingListIndex())); in handleInheritanceAttr()
4643 VirtualInheritanceAttr(Attr.getRange(), S.Context, in handleInheritanceAttr()
4644 Attr.getAttributeSpellingListIndex())); in handleInheritanceAttr()
4647 static void handlePortabilityAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handlePortabilityAttr() argument
4649 AttributeList::Kind Kind = Attr.getKind(); in handlePortabilityAttr()
4652 ::new (S.Context) Ptr32Attr(Attr.getRange(), S.Context, in handlePortabilityAttr()
4653 Attr.getAttributeSpellingListIndex())); in handlePortabilityAttr()
4656 ::new (S.Context) Ptr64Attr(Attr.getRange(), S.Context, in handlePortabilityAttr()
4657 Attr.getAttributeSpellingListIndex())); in handlePortabilityAttr()
4660 ::new (S.Context) Win64Attr(Attr.getRange(), S.Context, in handlePortabilityAttr()
4661 Attr.getAttributeSpellingListIndex())); in handlePortabilityAttr()
4663 S.Diag(Attr.getLoc(), diag::warn_attribute_ignored) << Attr.getName(); in handlePortabilityAttr()
4666 static void handleForceInlineAttr(Sema &S, Decl *D, const AttributeList &Attr) { in handleForceInlineAttr() argument
4669 ForceInlineAttr(Attr.getRange(), S.Context, in handleForceInlineAttr()
4670 Attr.getAttributeSpellingListIndex())); in handleForceInlineAttr()
4672 S.Diag(Attr.getLoc(), diag::warn_attribute_ignored) << Attr.getName(); in handleForceInlineAttr()
4680 const AttributeList &Attr) { in ProcessNonInheritableDeclAttr() argument
4681 switch (Attr.getKind()) { in ProcessNonInheritableDeclAttr()
4682 case AttributeList::AT_CUDADevice: handleDeviceAttr (S, D, Attr); break; in ProcessNonInheritableDeclAttr()
4683 case AttributeList::AT_CUDAHost: handleHostAttr (S, D, Attr); break; in ProcessNonInheritableDeclAttr()
4684 case AttributeList::AT_Overloadable:handleOverloadableAttr(S, D, Attr); break; in ProcessNonInheritableDeclAttr()
4685 case AttributeList::AT_Kernel: handleKernelAttr (S, D, Attr); break; in ProcessNonInheritableDeclAttr()
4692 const AttributeList &Attr) { in ProcessInheritableDeclAttr() argument
4693 switch (Attr.getKind()) { in ProcessInheritableDeclAttr()
4694 case AttributeList::AT_IBAction: handleIBAction(S, D, Attr); break; in ProcessInheritableDeclAttr()
4695 case AttributeList::AT_IBOutlet: handleIBOutlet(S, D, Attr); break; in ProcessInheritableDeclAttr()
4697 handleIBOutletCollection(S, D, Attr); break; in ProcessInheritableDeclAttr()
4714 case AttributeList::AT_Alias: handleAliasAttr (S, D, Attr); break; in ProcessInheritableDeclAttr()
4715 case AttributeList::AT_Aligned: handleAlignedAttr (S, D, Attr); break; in ProcessInheritableDeclAttr()
4716 case AttributeList::AT_AllocSize: handleAllocSizeAttr (S, D, Attr); break; in ProcessInheritableDeclAttr()
4718 handleAlwaysInlineAttr (S, D, Attr); break; in ProcessInheritableDeclAttr()
4720 handleAnalyzerNoReturnAttr (S, D, Attr); break; in ProcessInheritableDeclAttr()
4721 case AttributeList::AT_TLSModel: handleTLSModelAttr (S, D, Attr); break; in ProcessInheritableDeclAttr()
4722 case AttributeList::AT_Annotate: handleAnnotateAttr (S, D, Attr); break; in ProcessInheritableDeclAttr()
4723 case AttributeList::AT_Availability:handleAvailabilityAttr(S, D, Attr); break; in ProcessInheritableDeclAttr()
4725 handleDependencyAttr(S, scope, D, Attr); in ProcessInheritableDeclAttr()
4727 case AttributeList::AT_Common: handleCommonAttr (S, D, Attr); break; in ProcessInheritableDeclAttr()
4728 case AttributeList::AT_CUDAConstant:handleConstantAttr (S, D, Attr); break; in ProcessInheritableDeclAttr()
4729 case AttributeList::AT_Constructor: handleConstructorAttr (S, D, Attr); break; in ProcessInheritableDeclAttr()
4731 handleCXX11NoReturnAttr(S, D, Attr); in ProcessInheritableDeclAttr()
4734 handleAttrWithMessage<DeprecatedAttr>(S, D, Attr, "deprecated"); in ProcessInheritableDeclAttr()
4736 case AttributeList::AT_Destructor: handleDestructorAttr (S, D, Attr); break; in ProcessInheritableDeclAttr()
4738 handleExtVectorTypeAttr(S, scope, D, Attr); in ProcessInheritableDeclAttr()
4741 handleMinSizeAttr(S, D, Attr); in ProcessInheritableDeclAttr()
4743 case AttributeList::AT_Format: handleFormatAttr (S, D, Attr); break; in ProcessInheritableDeclAttr()
4744 case AttributeList::AT_FormatArg: handleFormatArgAttr (S, D, Attr); break; in ProcessInheritableDeclAttr()
4745 case AttributeList::AT_CUDAGlobal: handleGlobalAttr (S, D, Attr); break; in ProcessInheritableDeclAttr()
4746 case AttributeList::AT_GNUInline: handleGNUInlineAttr (S, D, Attr); break; in ProcessInheritableDeclAttr()
4748 handleLaunchBoundsAttr(S, D, Attr); in ProcessInheritableDeclAttr()
4750 case AttributeList::AT_Mode: handleModeAttr (S, D, Attr); break; in ProcessInheritableDeclAttr()
4751 case AttributeList::AT_Malloc: handleMallocAttr (S, D, Attr); break; in ProcessInheritableDeclAttr()
4752 case AttributeList::AT_MayAlias: handleMayAliasAttr (S, D, Attr); break; in ProcessInheritableDeclAttr()
4753 case AttributeList::AT_NoCommon: handleNoCommonAttr (S, D, Attr); break; in ProcessInheritableDeclAttr()
4754 case AttributeList::AT_NonNull: handleNonNullAttr (S, D, Attr); break; in ProcessInheritableDeclAttr()
4758 handleOwnershipAttr (S, D, Attr); break; in ProcessInheritableDeclAttr()
4759 case AttributeList::AT_Cold: handleColdAttr (S, D, Attr); break; in ProcessInheritableDeclAttr()
4760 case AttributeList::AT_Hot: handleHotAttr (S, D, Attr); break; in ProcessInheritableDeclAttr()
4761 case AttributeList::AT_Naked: handleNakedAttr (S, D, Attr); break; in ProcessInheritableDeclAttr()
4762 case AttributeList::AT_NoReturn: handleNoReturnAttr (S, D, Attr); break; in ProcessInheritableDeclAttr()
4763 case AttributeList::AT_NoThrow: handleNothrowAttr (S, D, Attr); break; in ProcessInheritableDeclAttr()
4764 case AttributeList::AT_CUDAShared: handleSharedAttr (S, D, Attr); break; in ProcessInheritableDeclAttr()
4765 case AttributeList::AT_VecReturn: handleVecReturnAttr (S, D, Attr); break; in ProcessInheritableDeclAttr()
4768 handleObjCOwnershipAttr(S, D, Attr); break; in ProcessInheritableDeclAttr()
4770 handleObjCPreciseLifetimeAttr(S, D, Attr); break; in ProcessInheritableDeclAttr()
4773 handleObjCReturnsInnerPointerAttr(S, D, Attr); break; in ProcessInheritableDeclAttr()
4776 handleObjCRequiresSuperAttr(S, D, Attr); break; in ProcessInheritableDeclAttr()
4779 handleNSBridgedAttr(S, scope, D, Attr); break; in ProcessInheritableDeclAttr()
4783 handleCFTransferAttr(S, D, Attr); break; in ProcessInheritableDeclAttr()
4787 case AttributeList::AT_NSConsumed: handleNSConsumedAttr (S, D, Attr); break; in ProcessInheritableDeclAttr()
4789 handleNSConsumesSelfAttr(S, D, Attr); break; in ProcessInheritableDeclAttr()
4796 handleNSReturnsRetainedAttr(S, D, Attr); break; in ProcessInheritableDeclAttr()
4800 handleWorkGroupSize(S, D, Attr); break; in ProcessInheritableDeclAttr()
4803 handleVecTypeHint(S, D, Attr); break; in ProcessInheritableDeclAttr()
4806 handleEndianAttr(S, D, Attr); in ProcessInheritableDeclAttr()
4810 handleInitPriorityAttr(S, D, Attr); break; in ProcessInheritableDeclAttr()
4812 case AttributeList::AT_Packed: handlePackedAttr (S, D, Attr); break; in ProcessInheritableDeclAttr()
4813 case AttributeList::AT_Section: handleSectionAttr (S, D, Attr); break; in ProcessInheritableDeclAttr()
4815 handleAttrWithMessage<UnavailableAttr>(S, D, Attr, "unavailable"); in ProcessInheritableDeclAttr()
4818 handleArcWeakrefUnavailableAttr (S, D, Attr); in ProcessInheritableDeclAttr()
4821 handleObjCRootClassAttr(S, D, Attr); in ProcessInheritableDeclAttr()
4824 handleObjCRequiresPropertyDefsAttr (S, D, Attr); in ProcessInheritableDeclAttr()
4826 case AttributeList::AT_Unused: handleUnusedAttr (S, D, Attr); break; in ProcessInheritableDeclAttr()
4828 handleReturnsTwiceAttr(S, D, Attr); in ProcessInheritableDeclAttr()
4830 case AttributeList::AT_Used: handleUsedAttr (S, D, Attr); break; in ProcessInheritableDeclAttr()
4832 handleVisibilityAttr(S, D, Attr, false); in ProcessInheritableDeclAttr()
4835 handleVisibilityAttr(S, D, Attr, true); in ProcessInheritableDeclAttr()
4837 case AttributeList::AT_WarnUnusedResult: handleWarnUnusedResult(S, D, Attr); in ProcessInheritableDeclAttr()
4839 case AttributeList::AT_Weak: handleWeakAttr (S, D, Attr); break; in ProcessInheritableDeclAttr()
4840 case AttributeList::AT_WeakRef: handleWeakRefAttr (S, D, Attr); break; in ProcessInheritableDeclAttr()
4841 case AttributeList::AT_WeakImport: handleWeakImportAttr (S, D, Attr); break; in ProcessInheritableDeclAttr()
4843 handleTransparentUnionAttr(S, D, Attr); in ProcessInheritableDeclAttr()
4846 handleObjCExceptionAttr(S, D, Attr); in ProcessInheritableDeclAttr()
4849 handleObjCMethodFamilyAttr(S, D, Attr); in ProcessInheritableDeclAttr()
4851 case AttributeList::AT_ObjCNSObject:handleObjCNSObject (S, D, Attr); break; in ProcessInheritableDeclAttr()
4852 case AttributeList::AT_Blocks: handleBlocksAttr (S, D, Attr); break; in ProcessInheritableDeclAttr()
4853 case AttributeList::AT_Sentinel: handleSentinelAttr (S, D, Attr); break; in ProcessInheritableDeclAttr()
4854 case AttributeList::AT_Const: handleConstAttr (S, D, Attr); break; in ProcessInheritableDeclAttr()
4855 case AttributeList::AT_Pure: handlePureAttr (S, D, Attr); break; in ProcessInheritableDeclAttr()
4856 case AttributeList::AT_Cleanup: handleCleanupAttr (S, D, Attr); break; in ProcessInheritableDeclAttr()
4857 case AttributeList::AT_NoDebug: handleNoDebugAttr (S, D, Attr); break; in ProcessInheritableDeclAttr()
4858 case AttributeList::AT_NoInline: handleNoInlineAttr (S, D, Attr); break; in ProcessInheritableDeclAttr()
4859 case AttributeList::AT_Regparm: handleRegparmAttr (S, D, Attr); break; in ProcessInheritableDeclAttr()
4864 handleNoInstrumentFunctionAttr(S, D, Attr); in ProcessInheritableDeclAttr()
4874 handleCallConvAttr(S, D, Attr); in ProcessInheritableDeclAttr()
4877 handleOpenCLKernelAttr(S, D, Attr); in ProcessInheritableDeclAttr()
4882 handleMsStructAttr(S, D, Attr); in ProcessInheritableDeclAttr()
4885 handleUuidAttr(S, D, Attr); in ProcessInheritableDeclAttr()
4890 handleInheritanceAttr(S, D, Attr); in ProcessInheritableDeclAttr()
4895 handlePortabilityAttr(S, D, Attr); in ProcessInheritableDeclAttr()
4898 handleForceInlineAttr(S, D, Attr); in ProcessInheritableDeclAttr()
4903 handleGuardedVarAttr(S, D, Attr); in ProcessInheritableDeclAttr()
4906 handlePtGuardedVarAttr(S, D, Attr); in ProcessInheritableDeclAttr()
4909 handleScopedLockableAttr(S, D, Attr); in ProcessInheritableDeclAttr()
4912 handleNoSanitizeAddressAttr(S, D, Attr); in ProcessInheritableDeclAttr()
4915 handleNoThreadSafetyAnalysis(S, D, Attr); in ProcessInheritableDeclAttr()
4918 handleNoSanitizeThread(S, D, Attr); in ProcessInheritableDeclAttr()
4921 handleNoSanitizeMemory(S, D, Attr); in ProcessInheritableDeclAttr()
4924 handleLockableAttr(S, D, Attr); in ProcessInheritableDeclAttr()
4927 handleGuardedByAttr(S, D, Attr); in ProcessInheritableDeclAttr()
4930 handlePtGuardedByAttr(S, D, Attr); in ProcessInheritableDeclAttr()
4933 handleExclusiveLockFunctionAttr(S, D, Attr); in ProcessInheritableDeclAttr()
4936 handleExclusiveLocksRequiredAttr(S, D, Attr); in ProcessInheritableDeclAttr()
4939 handleExclusiveTrylockFunctionAttr(S, D, Attr); in ProcessInheritableDeclAttr()
4942 handleLockReturnedAttr(S, D, Attr); in ProcessInheritableDeclAttr()
4945 handleLocksExcludedAttr(S, D, Attr); in ProcessInheritableDeclAttr()
4948 handleSharedLockFunctionAttr(S, D, Attr); in ProcessInheritableDeclAttr()
4951 handleSharedLocksRequiredAttr(S, D, Attr); in ProcessInheritableDeclAttr()
4954 handleSharedTrylockFunctionAttr(S, D, Attr); in ProcessInheritableDeclAttr()
4957 handleUnlockFunAttr(S, D, Attr); in ProcessInheritableDeclAttr()
4960 handleAcquiredBeforeAttr(S, D, Attr); in ProcessInheritableDeclAttr()
4963 handleAcquiredAfterAttr(S, D, Attr); in ProcessInheritableDeclAttr()
4968 handleArgumentWithTypeTagAttr(S, D, Attr); in ProcessInheritableDeclAttr()
4971 handleTypeTagForDatatypeAttr(S, D, Attr); in ProcessInheritableDeclAttr()
4977 if (!TargetAttrs.ProcessDeclAttribute(scope, D, Attr, S)) in ProcessInheritableDeclAttr()
4978 S.Diag(Attr.getLoc(), Attr.isDeclspecAttribute() ? in ProcessInheritableDeclAttr()
4980 diag::warn_unknown_attribute_ignored) << Attr.getName(); in ProcessInheritableDeclAttr()
4989 const AttributeList &Attr, in ProcessDeclAttribute() argument
4992 if (Attr.isInvalid()) in ProcessDeclAttribute()
4997 if (Attr.isCXX11Attribute() && !IncludeCXX11Attributes) in ProcessDeclAttribute()
5001 ProcessNonInheritableDeclAttr(S, scope, D, Attr); in ProcessDeclAttribute()
5004 ProcessInheritableDeclAttr(S, scope, D, Attr); in ProcessDeclAttribute()