From: Chandler Carruth Date: Fri, 7 Oct 2011 18:40:27 +0000 (+0000) Subject: Hack in a workaround for PR11082 until we have a proper fix. This X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=682eae243ae3d96fe3dc302091034e08c414db10;p=clang Hack in a workaround for PR11082 until we have a proper fix. This un-breaks every glib-dependent compile with Clang. I'm not sure this is even the best workaround, so suggestions welcome. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141381 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/SemaType.cpp b/lib/Sema/SemaType.cpp index 2b863a735a..1e0c2d60c4 100644 --- a/lib/Sema/SemaType.cpp +++ b/lib/Sema/SemaType.cpp @@ -3779,6 +3779,11 @@ static void processTypeAttrs(TypeProcessingState &state, QualType &type, switch (attr.getKind()) { default: break; + case AttributeList::AT_may_alias: + // FIXME: This attribute needs to actually be handled, but if we ignore + // it it breaks large amounts of Linux software. + attr.setUsedAsTypeAttr(); + break; case AttributeList::AT_address_space: HandleAddressSpaceTypeAttribute(type, attr, state.getSema()); attr.setUsedAsTypeAttr(); diff --git a/test/Sema/types.c b/test/Sema/types.c index 33305abe02..332b525e33 100644 --- a/test/Sema/types.c +++ b/test/Sema/types.c @@ -41,3 +41,12 @@ int __attribute__ ((vector_size (8), vector_size (8))) v; // expected-error {{i void test(int i) { char c = (char __attribute__((align(8)))) i; // expected-error {{'align' attribute ignored when parsing type}} } + +// http://llvm.org/PR11082 +// +// FIXME: This may or may not be the correct approach (no warning or error), +// but large amounts of Linux and FreeBSD code need this attribute to not be +// a hard error in order to work correctly. +void test2(int i) { + char c = (char __attribute__((may_alias))) i; +}