diff --git a/clang/include/clang/Basic/Attr.td b/clang/include/clang/Basic/Attr.td index c5f78985c791..41e70f4302b2 100644 --- a/clang/include/clang/Basic/Attr.td +++ b/clang/include/clang/Basic/Attr.td @@ -920,10 +920,7 @@ def WeakRef : InheritableAttr { } def X86ForceAlignArgPointer : InheritableAttr, TargetSpecificAttr { - let Spellings = [GNU<"force_align_arg_pointer">]; - // Technically, this appertains to a FunctionDecl, but the target-specific - // code silently allows anything function-like (such as typedefs or function - // pointers), but does not apply the attribute to them. + let Spellings = []; } // Attribute to disable AddressSanitizer (or equivalent) checks. diff --git a/clang/lib/Sema/TargetAttributesSema.cpp b/clang/lib/Sema/TargetAttributesSema.cpp index 68f13494a3e8..e5eb591683ba 100644 --- a/clang/lib/Sema/TargetAttributesSema.cpp +++ b/clang/lib/Sema/TargetAttributesSema.cpp @@ -233,7 +233,8 @@ namespace { } } if (Triple.getArch() != llvm::Triple::x86_64 && - Attr.getKind() == AttributeList::AT_X86ForceAlignArgPointer) { + (Attr.getName()->getName() == "force_align_arg_pointer" || + Attr.getName()->getName() == "__force_align_arg_pointer__")) { HandleX86ForceAlignArgPointerAttr(D, Attr, S); return true; }