Work around a bug in GCC where it can't handle common variables marked weak.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9679 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2003-11-03 17:35:00 +00:00
parent 2580d4f232
commit 5ea326a23b
2 changed files with 16 additions and 2 deletions

View File

@ -693,7 +693,14 @@ void CWriter::printModule(Module *M) {
Out << " __attribute__((common))";
else if (I->hasWeakLinkage())
Out << " __attribute__((weak))";
if (!I->getInitializer()->isNullValue()) {
// If the initializer is not null, emit the initializer. If it is null,
// we try to avoid emitting large amounts of zeros. The problem with
// this, however, occurs when the variable has weak linkage. In this
// case, the assembler will complain about the variable being both weak
// and common, so we disable this optimization.
if (!I->getInitializer()->isNullValue() ||
I->hasWeakLinkage()) {
Out << " = " ;
writeOperand(I->getInitializer());
}

View File

@ -693,7 +693,14 @@ void CWriter::printModule(Module *M) {
Out << " __attribute__((common))";
else if (I->hasWeakLinkage())
Out << " __attribute__((weak))";
if (!I->getInitializer()->isNullValue()) {
// If the initializer is not null, emit the initializer. If it is null,
// we try to avoid emitting large amounts of zeros. The problem with
// this, however, occurs when the variable has weak linkage. In this
// case, the assembler will complain about the variable being both weak
// and common, so we disable this optimization.
if (!I->getInitializer()->isNullValue() ||
I->hasWeakLinkage()) {
Out << " = " ;
writeOperand(I->getInitializer());
}