mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-17 04:24:00 +00: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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15933 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -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) {
|
||||
|
Reference in New Issue
Block a user