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

llvm-svn: 9679
This commit is contained in:
Chris Lattner 2003-11-03 17:35:00 +00:00
parent 8e65bbe451
commit 40b6a81c43

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());
}