Author: cdavis Date: Mon Aug 8 16:19:08 2016 New Revision: 278052 URL: http://llvm.org/viewvc/llvm-project?rev=278052&view=rev Log: Revert "[Attr] Add support for the `ms_hook_prologue` attribute."
This reverts commit r278050. It depends on r278048, which will be reverted. Removed: cfe/trunk/test/Sema/attr-ms-hook-prologue-wrong-arch.c cfe/trunk/test/Sema/attr-ms-hook-prologue.c Modified: cfe/trunk/include/clang/Basic/Attr.td cfe/trunk/include/clang/Basic/AttrDocs.td cfe/trunk/lib/CodeGen/TargetInfo.cpp cfe/trunk/lib/Sema/SemaDeclAttr.cpp cfe/trunk/test/CodeGen/function-attributes.c Modified: cfe/trunk/include/clang/Basic/Attr.td URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/Attr.td?rev=278052&r1=278051&r2=278052&view=diff ============================================================================== --- cfe/trunk/include/clang/Basic/Attr.td (original) +++ cfe/trunk/include/clang/Basic/Attr.td Mon Aug 8 16:19:08 2016 @@ -257,7 +257,6 @@ def TargetMips : TargetArch<["mips", "mi def TargetMSP430 : TargetArch<["msp430"]>; def TargetX86 : TargetArch<["x86"]>; def TargetAnyX86 : TargetArch<["x86", "x86_64"]>; -def TargetWindowsArches : TargetArch<["x86", "x86_64", "arm", "thumb"]>; def TargetWindows : TargetArch<["x86", "x86_64", "arm", "thumb"]> { let OSes = ["Win32"]; } @@ -2070,12 +2069,6 @@ def TypeTagForDatatype : InheritableAttr // Microsoft-related attributes -def MSHookPrologue : InheritableAttr, TargetSpecificAttr<TargetWindowsArches> { - let Spellings = [GCC<"ms_hook_prologue">]; - let Subjects = SubjectList<[Function]>; - let Documentation = [MSHookPrologueDocs]; -} - def MSNoVTable : InheritableAttr, TargetSpecificAttr<TargetMicrosoftCXXABI> { let Spellings = [Declspec<"novtable">]; let Subjects = SubjectList<[CXXRecord]>; Modified: cfe/trunk/include/clang/Basic/AttrDocs.td URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/AttrDocs.td?rev=278052&r1=278051&r2=278052&view=diff ============================================================================== --- cfe/trunk/include/clang/Basic/AttrDocs.td (original) +++ cfe/trunk/include/clang/Basic/AttrDocs.td Mon Aug 8 16:19:08 2016 @@ -548,22 +548,6 @@ Query for this feature with ``__has_attr }]; } -def MSHookPrologueDocs : Documentation { - let Category = DocCatFunction; - let Content = [{ -The ``ms_hook_prologue`` attribute marks a function as "hotpatchable" according -to conventions used on Windows. Specifically, enough space will be ensured -in the prologue for a short jump, and an architecturally dependently sized -patch space will be reserved prior to the entry point. See the documentation -for the `/HOTPATCH`_ switch on MSDN. - -This attribute cannot be used in conjunction with the ``naked``, -``always_inline``, or ``__forceinline`` attributes. - -.. _`/HOTPATCH`: https://msdn.microsoft.com/en-us/library/ms173507.aspx - }]; -} - def NoDebugDocs : Documentation { let Category = DocCatVariable; let Content = [{ Modified: cfe/trunk/lib/CodeGen/TargetInfo.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/TargetInfo.cpp?rev=278052&r1=278051&r2=278052&view=diff ============================================================================== --- cfe/trunk/lib/CodeGen/TargetInfo.cpp (original) +++ cfe/trunk/lib/CodeGen/TargetInfo.cpp Mon Aug 8 16:19:08 2016 @@ -1779,10 +1779,6 @@ void X86_32TargetCodeGenInfo::setTargetA llvm::Function *Fn = cast<llvm::Function>(GV); Fn->setCallingConv(llvm::CallingConv::X86_INTR); } - if (FD->hasAttr<MSHookPrologueAttr>()) { - llvm::Function *Fn = cast<llvm::Function>(GV); - Fn->addFnAttr("patchable-function", "ms-hotpatch"); - } } } @@ -2113,10 +2109,6 @@ public: llvm::Function *Fn = cast<llvm::Function>(GV); Fn->setCallingConv(llvm::CallingConv::X86_INTR); } - if (FD->hasAttr<MSHookPrologueAttr>()) { - llvm::Function *Fn = cast<llvm::Function>(GV); - Fn->addFnAttr("patchable-function", "ms-hotpatch"); - } } } }; Modified: cfe/trunk/lib/Sema/SemaDeclAttr.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclAttr.cpp?rev=278052&r1=278051&r2=278052&view=diff ============================================================================== --- cfe/trunk/lib/Sema/SemaDeclAttr.cpp (original) +++ cfe/trunk/lib/Sema/SemaDeclAttr.cpp Mon Aug 8 16:19:08 2016 @@ -1664,6 +1664,15 @@ static void handleCommonAttr(Sema &S, De D->addAttr(CA); } +static void handleNakedAttr(Sema &S, Decl *D, const AttributeList &Attr) { + if (checkAttrMutualExclusion<DisableTailCallsAttr>(S, D, Attr.getRange(), + Attr.getName())) + return; + + D->addAttr(::new (S.Context) NakedAttr(Attr.getRange(), S.Context, + Attr.getAttributeSpellingListIndex())); +} + static void handleNoReturnAttr(Sema &S, Decl *D, const AttributeList &attr) { if (hasDeclarator(D)) return; @@ -3664,9 +3673,7 @@ OptimizeNoneAttr *Sema::mergeOptimizeNon static void handleAlwaysInlineAttr(Sema &S, Decl *D, const AttributeList &Attr) { if (checkAttrMutualExclusion<NotTailCalledAttr>(S, D, Attr.getRange(), - Attr.getName()) || - checkAttrMutualExclusion<MSHookPrologueAttr>(S, D, Attr.getRange(), - Attr.getName())) + Attr.getName())) return; if (AlwaysInlineAttr *Inline = S.mergeAlwaysInlineAttr( @@ -5545,8 +5552,7 @@ static void ProcessDeclAttribute(Sema &S handleHotAttr(S, D, Attr); break; case AttributeList::AT_Naked: - handleSimpleAttributeWithExclusions<NakedAttr, DisableTailCallsAttr, - MSHookPrologueAttr>(S, D, Attr); + handleNakedAttr(S, D, Attr); break; case AttributeList::AT_NoReturn: handleNoReturnAttr(S, D, Attr); @@ -5774,9 +5780,6 @@ static void ProcessDeclAttribute(Sema &S break; case AttributeList::AT_LayoutVersion: handleLayoutVersion(S, D, Attr); - case AttributeList::AT_MSHookPrologue: - handleSimpleAttributeWithExclusions<MSHookPrologueAttr, NakedAttr, - AlwaysInlineAttr>(S, D, Attr); break; case AttributeList::AT_MSNoVTable: handleSimpleAttribute<MSNoVTableAttr>(S, D, Attr); Modified: cfe/trunk/test/CodeGen/function-attributes.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/function-attributes.c?rev=278052&r1=278051&r2=278052&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/function-attributes.c (original) +++ cfe/trunk/test/CodeGen/function-attributes.c Mon Aug 8 16:19:08 2016 @@ -108,18 +108,11 @@ void f20(void) { _setjmp(0); } -// CHECK-LABEL: define void @f21 -// CHECK: [[HOTPATCH:#[0-9]+]] -// CHECK: { -void __attribute__((ms_hook_prologue)) f21(void) { -} - // CHECK: attributes [[NUW]] = { nounwind optsize{{.*}} } // CHECK: attributes [[AI]] = { alwaysinline nounwind optsize{{.*}} } // CHECK: attributes [[NUW_OS_RN]] = { nounwind optsize readnone{{.*}} } // CHECK: attributes [[ALIGN]] = { nounwind optsize alignstack=16{{.*}} } // CHECK: attributes [[RT]] = { nounwind optsize returns_twice{{.*}} } -// CHECK: attributes [[HOTPATCH]] = { nounwind optsize{{.*}}"patchable-function"="ms-hotpatch"{{.*}} } // CHECK: attributes [[NR]] = { noreturn optsize } // CHECK: attributes [[NUW_RN]] = { nounwind optsize readnone } // CHECK: attributes [[RT_CALL]] = { optsize returns_twice } Removed: cfe/trunk/test/Sema/attr-ms-hook-prologue-wrong-arch.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/attr-ms-hook-prologue-wrong-arch.c?rev=278051&view=auto ============================================================================== --- cfe/trunk/test/Sema/attr-ms-hook-prologue-wrong-arch.c (original) +++ cfe/trunk/test/Sema/attr-ms-hook-prologue-wrong-arch.c (removed) @@ -1,6 +0,0 @@ -// RUN: %clang_cc1 -triple s390x-unknown-linux -fms-extensions -fsyntax-only -verify %s - -// expected-warning@+1{{unknown attribute 'ms_hook_prologue' ignored}} -int __attribute__((ms_hook_prologue)) foo(int a, int b) { - return a+b; -} Removed: cfe/trunk/test/Sema/attr-ms-hook-prologue.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/attr-ms-hook-prologue.c?rev=278051&view=auto ============================================================================== --- cfe/trunk/test/Sema/attr-ms-hook-prologue.c (original) +++ cfe/trunk/test/Sema/attr-ms-hook-prologue.c (removed) @@ -1,22 +0,0 @@ -// RUN: %clang_cc1 -triple i386-pc-linux -fms-extensions -fsyntax-only -verify %s - -int __attribute__((ms_hook_prologue)) foo(int a, int b) { - return a+b; -} - -// expected-note@+2{{conflicting attribute is here}} -// expected-error@+1{{'naked' and 'ms_hook_prologue' attributes are not compatible}} -__declspec(naked) int __attribute__((ms_hook_prologue)) bar(int a, int b) { -} - -// expected-note@+2{{conflicting attribute is here}} -// expected-error@+1{{'__forceinline' and 'ms_hook_prologue' attributes are not compatible}} -__forceinline int __attribute__((ms_hook_prologue)) baz(int a, int b) { - return a-b; -} - -// expected-warning@+1{{'ms_hook_prologue' attribute only applies to functions}} -int x __attribute__((ms_hook_prologue)); - -// expected-error@+1{{'ms_hook_prologue' attribute takes no arguments}} -int f(int a, int b) __attribute__((ms_hook_prologue(2))); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits