Visibility attributes should only be set on definition.

llvm-svn: 68561
This commit is contained in:
Daniel Dunbar
2009-04-07 22:36:33 +00:00
parent 4aa25b79f9
commit ea10ab668f
3 changed files with 36 additions and 10 deletions

View File

@@ -272,10 +272,12 @@ void CodeGenModule::SetGlobalValueAttributes(const Decl *D,
// FIXME: Figure out the relative priority of the attribute,
// -fvisibility, and private_extern.
if (const VisibilityAttr *attr = D->getAttr<VisibilityAttr>())
setGlobalVisibility(GV, attr->getVisibility());
else
setGlobalOptionVisibility(GV, getLangOptions().getVisibilityMode());
if (ForDefinition) {
if (const VisibilityAttr *attr = D->getAttr<VisibilityAttr>())
setGlobalVisibility(GV, attr->getVisibility());
else
setGlobalOptionVisibility(GV, getLangOptions().getVisibilityMode());
}
if (const SectionAttr *SA = D->getAttr<SectionAttr>())
GV->setSection(SA->getName());