Is it possible to get a fix-it here? Or is that best saved for after Aaron's refactoring?
On Sep 9, 2013, at 8:08 , Benjamin Kramer <[email protected]> wrote: > Author: d0k > Date: Mon Sep 9 10:08:57 2013 > New Revision: 190312 > > URL: http://llvm.org/viewvc/llvm-project?rev=190312&view=rev > Log: > Sema: Don't crash on visibility attributes with an identifier argument. > > PR17105. > > Modified: > cfe/trunk/lib/Sema/SemaDeclAttr.cpp > cfe/trunk/test/Sema/attr-visibility.c > > Modified: cfe/trunk/lib/Sema/SemaDeclAttr.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclAttr.cpp?rev=190312&r1=190311&r2=190312&view=diff > ============================================================================== > --- cfe/trunk/lib/Sema/SemaDeclAttr.cpp (original) > +++ cfe/trunk/lib/Sema/SemaDeclAttr.cpp Mon Sep 9 10:08:57 2013 > @@ -2438,9 +2438,10 @@ static void handleVisibilityAttr(Sema &S > if (!checkAttributeNumArgs(S, Attr, 1)) > return; > > - Expr *Arg = Attr.getArgAsExpr(0); > - Arg = Arg->IgnoreParenCasts(); > - StringLiteral *Str = dyn_cast<StringLiteral>(Arg); > + // Check that the argument is a string literal. > + StringLiteral *Str = 0; > + if (Attr.isArgExpr(0)) > + Str = dyn_cast<StringLiteral>(Attr.getArgAsExpr(0)->IgnoreParenCasts()); > > if (!Str || !Str->isAscii()) { > S.Diag(Attr.getLoc(), diag::err_attribute_argument_type) > > Modified: cfe/trunk/test/Sema/attr-visibility.c > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/attr-visibility.c?rev=190312&r1=190311&r2=190312&view=diff > ============================================================================== > --- cfe/trunk/test/Sema/attr-visibility.c (original) > +++ cfe/trunk/test/Sema/attr-visibility.c Mon Sep 9 10:08:57 2013 > @@ -24,3 +24,5 @@ extern int test7 __attribute__((visibili > typedef int __attribute__((visibility("default"))) bar; // expected-warning > {{'visibility' attribute ignored}} > > int x __attribute__((type_visibility("default"))); // expected-error > {{'type_visibility' attribute only applies to types and namespaces}} > + > +int PR17105 __attribute__((visibility(hidden))); // expected-error > {{'visibility' attribute requires a string}} > > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
