Author: erichkeane Date: Wed Oct 4 15:16:24 2017 New Revision: 314939 URL: http://llvm.org/viewvc/llvm-project?rev=314939&view=rev Log: Fix 'section' warning behavior with tentatively-defined values
As reported on cfe-commits, r314262 resulted in tentatively-defined variables not being excluded for the warning. Patch By: Elizabeth Andrews Modified: cfe/trunk/lib/Sema/SemaDecl.cpp cfe/trunk/test/Sema/attr-section.c Modified: cfe/trunk/lib/Sema/SemaDecl.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDecl.cpp?rev=314939&r1=314938&r2=314939&view=diff ============================================================================== --- cfe/trunk/lib/Sema/SemaDecl.cpp (original) +++ cfe/trunk/lib/Sema/SemaDecl.cpp Wed Oct 4 15:16:24 2017 @@ -2627,7 +2627,7 @@ void Sema::mergeDeclAttributes(NamedDecl // This redeclaration adds a section attribute. if (New->hasAttr<SectionAttr>() && !Old->hasAttr<SectionAttr>()) { if (auto *VD = dyn_cast<VarDecl>(New)) { - if (VD->isThisDeclarationADefinition() != VarDecl::Definition) { + if (VD->isThisDeclarationADefinition() == VarDecl::DeclarationOnly) { Diag(New->getLocation(), diag::warn_attribute_section_on_redeclaration); Diag(Old->getLocation(), diag::note_previous_declaration); } Modified: cfe/trunk/test/Sema/attr-section.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/attr-section.c?rev=314939&r1=314938&r2=314939&view=diff ============================================================================== --- cfe/trunk/test/Sema/attr-section.c (original) +++ cfe/trunk/test/Sema/attr-section.c Wed Oct 4 15:16:24 2017 @@ -23,3 +23,12 @@ enum __attribute__((section("NEAR,x"))) extern int a; // expected-note {{previous declaration is here}} int *b = &a; extern int a __attribute__((section("foo,zed"))); // expected-warning {{section attribute is specified on redeclared variable}} + +// Not a warning. +int c; +int c __attribute__((section("foo,zed"))); + +// Also OK. +struct r_debug {}; +extern struct r_debug _r_debug; +struct r_debug _r_debug __attribute__((nocommon, section(".r_debug,bar"))); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits