1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-26 04:32:44 +01:00

If we are linking two global variables and they have the same size, do not

spew warnings, even if the types don't match.

llvm-svn: 15933
This commit is contained in:
Chris Lattner 2004-08-20 00:30:39 +00:00
parent 8bfcf0d2e9
commit 9f60c755f8

View File

@ -236,14 +236,15 @@ static bool ProcessGlobalsWithSameName(Module &M, TargetData &TD,
// size of 0, and the concrete global is an array with a real size, don't
// warn. This occurs due to declaring 'extern int A[];'.
if (GlobalVariable *ConcreteGV = dyn_cast<GlobalVariable>(Concrete))
if (GlobalVariable *OtherGV = dyn_cast<GlobalVariable>(Other))
if (const ArrayType *OtherAT =
dyn_cast<ArrayType>(OtherGV->getType()->getElementType()))
if (const ArrayType *ConcreteAT =
dyn_cast<ArrayType>(ConcreteGV->getType()->getElementType()))
if (OtherAT->getElementType() == ConcreteAT->getElementType() &&
OtherAT->getNumElements() == 0)
DontPrintWarning = true;
if (GlobalVariable *OtherGV = dyn_cast<GlobalVariable>(Other)) {
const Type *CTy = ConcreteGV->getType();
const Type *OTy = OtherGV->getType();
if (CTy->isSized())
if (!OTy->isSized() || !TD.getTypeSize(OTy) ||
TD.getTypeSize(OTy) == TD.getTypeSize(CTy))
DontPrintWarning = true;
}
}
if (!DontPrintWarning) {