From 9c570ee12904cfca974372dfda5fe9c75cee83b4 Mon Sep 17 00:00:00 2001 From: "Vikram S. Adve" Date: Sun, 6 Jul 2003 22:50:31 +0000 Subject: [PATCH] Correction to last fix: Pointer types do not return true in Type::IsIntegral(). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7113 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/SparcV9/SparcV9RegClassInfo.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/lib/Target/SparcV9/SparcV9RegClassInfo.cpp b/lib/Target/SparcV9/SparcV9RegClassInfo.cpp index 1640dcab6c6..8c20ab04c82 100644 --- a/lib/Target/SparcV9/SparcV9RegClassInfo.cpp +++ b/lib/Target/SparcV9/SparcV9RegClassInfo.cpp @@ -136,17 +136,20 @@ void SparcIntCCRegClass::colorIGNode(IGNode *Node, // Choose whether to use %xcc or %icc based on type of value compared const LiveRange* ccLR = Node->getParentLR(); const Type* setCCType = (* ccLR->begin())->getType(); // any Value in LR - assert(setCCType->isIntegral()); - int ccReg = (setCCType == Type::LongTy)? xcc : icc; + assert(setCCType->isIntegral() || isa(setCCType)); + int ccReg = ((isa(setCCType) || setCCType == Type::LongTy) + ? xcc : icc); #ifndef NDEBUG // Let's just make sure values of two different types have not been // coalesced into this LR. - for (ValueSet::const_iterator I=ccLR->begin(), E=ccLR->end(); I != E; ++I) - assert(setCCType->isIntegral() && - ((ccReg == xcc && (*I)->getType() == Type::LongTy) || - (ccReg == icc && (*I)->getType() != Type::LongTy)) + for (ValueSet::const_iterator I=ccLR->begin(), E=ccLR->end(); I!=E; ++I) { + const Type* ccType = (*I)->getType(); + assert((ccReg == xcc && (isa(ccType) + || ccType == Type::LongTy)) || + (ccReg == icc && ccType->isIntegral() && ccType != Type::LongTy) && "Comparisons needing different intCC regs coalesced in LR!"); + } #endif Node->setColor(ccReg); // only one int cc reg is available -- 2.34.1