forked from OSchip/llvm-project
rdar://7119244 - globals with an explicit section specified don't get
common linkage. llvm-svn: 78158
This commit is contained in:
parent
13b860992a
commit
c0693bc2ea
|
@ -883,7 +883,8 @@ void CodeGenModule::EmitGlobalVarDefinition(const VarDecl *D) {
|
|||
else if (D->hasAttr<WeakAttr>())
|
||||
GV->setLinkage(llvm::GlobalVariable::WeakAnyLinkage);
|
||||
else if (!CompileOpts.NoCommon &&
|
||||
(!D->hasExternalStorage() && !D->getInit()))
|
||||
!D->hasExternalStorage() && !D->getInit() &&
|
||||
!D->getAttr<SectionAttr>())
|
||||
GV->setLinkage(llvm::GlobalVariable::CommonLinkage);
|
||||
else
|
||||
GV->setLinkage(llvm::GlobalVariable::ExternalLinkage);
|
||||
|
|
|
@ -1,7 +1,14 @@
|
|||
// RUN: clang-cc -emit-llvm -o - %s | not grep "common"
|
||||
// RUN: clang-cc -emit-llvm -o - %s | FileCheck %s
|
||||
|
||||
// This checks that the global won't be marked as common.
|
||||
// (It shouldn't because it's being initialized).
|
||||
|
||||
int a;
|
||||
int a = 242;
|
||||
// CHECK: @a = global i32 242
|
||||
|
||||
// This shouldn't be emitted as common because it has an explicit section.
|
||||
// rdar://7119244
|
||||
int b __attribute__((section("foo")));
|
||||
|
||||
// CHECK: @b = global i32 0, section "foo"
|
||||
|
|
Loading…
Reference in New Issue