From: Charles Davis Date: Wed, 17 Feb 2010 00:44:47 +0000 (+0000) Subject: Revert r95939, as suggested by Alexandre Julliard from the Wine project (and X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ab44216009dbdaa9a3b26f541ead13e85f6e39b3;p=clang Revert r95939, as suggested by Alexandre Julliard from the Wine project (and our own Chris Lattner). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96431 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Basic/DiagnosticGroups.td b/include/clang/Basic/DiagnosticGroups.td index 3fb011c28b..918f13e2b4 100644 --- a/include/clang/Basic/DiagnosticGroups.td +++ b/include/clang/Basic/DiagnosticGroups.td @@ -120,7 +120,6 @@ def VectorConversions : DiagGroup<"vector-conversions">; // clang specific def VolatileRegisterVar : DiagGroup<"volatile-register-var">; def : DiagGroup<"write-strings">; def CharSubscript : DiagGroup<"char-subscripts">; -def ForceAlignArgPointer : DiagGroup<"force-align-arg-pointer">; // Aggregation warning settings. @@ -181,4 +180,4 @@ def : DiagGroup<"comments", [Comment]>; // -Wcomments = -Wcomment // A warning group for warnings that we want to have on by default in clang, // but which aren't on by default in GCC. def NonGCC : DiagGroup<"non-gcc", - [SignCompare, Conversion, ForceAlignArgPointer]>; + [SignCompare, Conversion]>; diff --git a/include/clang/Basic/DiagnosticSemaKinds.td b/include/clang/Basic/DiagnosticSemaKinds.td index 3af80e4c1b..a37177ba34 100644 --- a/include/clang/Basic/DiagnosticSemaKinds.td +++ b/include/clang/Basic/DiagnosticSemaKinds.td @@ -730,9 +730,6 @@ def err_attribute_aligned_not_power_of_two : Error< def warn_redeclaration_without_attribute_prev_attribute_ignored : Warning< "'%0' redeclared without %1 attribute: previous %1 ignored">; def warn_attribute_ignored : Warning<"%0 attribute ignored">; -def warn_faap_attribute_ignored : Warning< - "force_align_arg_pointer used on function pointer; attribute ignored">, - InGroup; def warn_attribute_precede_definition : Warning< "attribute declaration must precede definition">; def warn_attribute_void_function : Warning< diff --git a/lib/Sema/TargetAttributesSema.cpp b/lib/Sema/TargetAttributesSema.cpp index 597a027696..76cff1f315 100644 --- a/lib/Sema/TargetAttributesSema.cpp +++ b/lib/Sema/TargetAttributesSema.cpp @@ -79,14 +79,12 @@ static void HandleX86ForceAlignArgPointerAttr(Decl *D, return; } - // If we try to apply it to a function pointer, warn. This is a special - // instance of the warn_attribute_ignored warning that can be turned - // off with -Wno-force-align-arg-pointer. + // If we try to apply it to a function pointer, don't warn, but don't + // do anything, either. It doesn't matter anyway, because there's nothing + // special about calling a force_align_arg_pointer function. ValueDecl* VD = dyn_cast(D); - if (VD && VD->getType()->isFunctionPointerType()) { - S.Diag(Attr.getLoc(), diag::warn_faap_attribute_ignored); + if (VD && VD->getType()->isFunctionPointerType()) return; - } // Attribute can only be applied to function types. if (!isa(D)) { S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) diff --git a/test/Sema/x86-attr-force-align-arg-pointer.c b/test/Sema/x86-attr-force-align-arg-pointer.c index 9609fadf7f..1470544a69 100644 --- a/test/Sema/x86-attr-force-align-arg-pointer.c +++ b/test/Sema/x86-attr-force-align-arg-pointer.c @@ -14,5 +14,5 @@ void d(void); void __attribute__((force_align_arg_pointer)) d(void) {} // Attribute is ignored on function pointer types. -void (__attribute__((force_align_arg_pointer)) *p)(); //expected-warning{{force_align_arg_pointer used on function pointer; attribute ignored}} +void (__attribute__((force_align_arg_pointer)) *p)();