diff options
| author | Jim Laskey <jlaskey@mac.com> | 2006-10-28 17:25:28 +0000 |
|---|---|---|
| committer | Jim Laskey <jlaskey@mac.com> | 2006-10-28 17:25:28 +0000 |
| commit | eef273a16f23c13c2c2142f557b0a7482f5b8444 (patch) | |
| tree | 6ac3d45bff58e3a74ac157e4aff8c5c60a38cc9a /llvm/lib | |
| parent | 3e6b1c6157dc8a05cb6fe95bee3ee0c5008def05 (diff) | |
| download | bcm5719-llvm-eef273a16f23c13c2c2142f557b0a7482f5b8444.tar.gz bcm5719-llvm-eef273a16f23c13c2c2142f557b0a7482f5b8444.zip | |
Load and stores have not been uniqued properly.
llvm-svn: 31261
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp | 55 |
1 files changed, 42 insertions, 13 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp index e2f8e992370..e1fda39b572 100644 --- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp @@ -363,20 +363,24 @@ static void AddNodeIDNode(FoldingSetNodeID &ID, SDNode *N) { ID.AddDouble(cast<ConstantFPSDNode>(N)->getValue()); break; case ISD::TargetGlobalAddress: - case ISD::GlobalAddress: - ID.AddPointer(cast<GlobalAddressSDNode>(N)->getGlobal()); - ID.AddInteger(cast<GlobalAddressSDNode>(N)->getOffset()); + case ISD::GlobalAddress: { + GlobalAddressSDNode *GA = cast<GlobalAddressSDNode>(N); + ID.AddPointer(GA->getGlobal()); + ID.AddInteger(GA->getOffset()); break; + } case ISD::BasicBlock: ID.AddPointer(cast<BasicBlockSDNode>(N)->getBasicBlock()); break; case ISD::Register: ID.AddInteger(cast<RegisterSDNode>(N)->getReg()); break; - case ISD::SRCVALUE: - ID.AddPointer(cast<SrcValueSDNode>(N)->getValue()); - ID.AddInteger(cast<SrcValueSDNode>(N)->getOffset()); + case ISD::SRCVALUE: { + SrcValueSDNode *SV = cast<SrcValueSDNode>(N); + ID.AddPointer(SV->getValue()); + ID.AddInteger(SV->getOffset()); break; + } case ISD::FrameIndex: case ISD::TargetFrameIndex: ID.AddInteger(cast<FrameIndexSDNode>(N)->getIndex()); @@ -386,16 +390,41 @@ static void AddNodeIDNode(FoldingSetNodeID &ID, SDNode *N) { ID.AddInteger(cast<JumpTableSDNode>(N)->getIndex()); break; case ISD::ConstantPool: - case ISD::TargetConstantPool: - ID.AddInteger(cast<ConstantPoolSDNode>(N)->getAlignment()); - ID.AddInteger(cast<ConstantPoolSDNode>(N)->getOffset()); - if (cast<ConstantPoolSDNode>(N)->isMachineConstantPoolEntry()) - cast<ConstantPoolSDNode>(N)->getMachineCPVal()-> - AddSelectionDAGCSEId(ID); + case ISD::TargetConstantPool: { + ConstantPoolSDNode *CP = cast<ConstantPoolSDNode>(N); + ID.AddInteger(CP->getAlignment()); + ID.AddInteger(CP->getOffset()); + if (CP->isMachineConstantPoolEntry()) + CP->getMachineCPVal()->AddSelectionDAGCSEId(ID); else - ID.AddPointer(cast<ConstantPoolSDNode>(N)->getConstVal()); + ID.AddPointer(CP->getConstVal()); + break; + } + case ISD::VLOAD: + case ISD::EXTLOAD: + case ISD::LOAD: { + LoadSDNode *LD = cast<LoadSDNode>(N); + ID.AddInteger(LD->getAddressingMode()); + ID.AddInteger(LD->getExtensionType()); + ID.AddInteger(LD->getLoadedVT()); + ID.AddPointer(LD->getSrcValue()); + ID.AddInteger(LD->getSrcValueOffset()); + ID.AddInteger(LD->getAlignment()); + ID.AddInteger(LD->isVolatile()); + break; + } + case ISD::STORE: { + StoreSDNode *ST = cast<StoreSDNode>(N); + ID.AddInteger(ST->getAddressingMode()); + ID.AddInteger(ST->isTruncatingStore()); + ID.AddInteger(ST->getStoredVT()); + ID.AddPointer(ST->getSrcValue()); + ID.AddInteger(ST->getSrcValueOffset()); + ID.AddInteger(ST->getAlignment()); + ID.AddInteger(ST->isVolatile()); break; } + } } } |

