From: Evan Cheng Date: Fri, 29 Jun 2007 21:36:04 +0000 (+0000) Subject: Fix a vector FP constant CSE bug. X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=c908dcde45c6d7ddff0443cbc174a7cbfec21d1b;p=oota-llvm.git Fix a vector FP constant CSE bug. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37814 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/lib/CodeGen/SelectionDAG/SelectionDAG.cpp index 6dcba0d9d6b..9eee1984af7 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp +++ b/lib/CodeGen/SelectionDAG/SelectionDAG.cpp @@ -686,11 +686,16 @@ SDOperand SelectionDAG::getConstantFP(double Val, MVT::ValueType VT, AddNodeIDNode(ID, Opc, getVTList(EltVT), 0, 0); ID.AddDouble(Val); void *IP = 0; - if (SDNode *E = CSEMap.FindNodeOrInsertPos(ID, IP)) - return SDOperand(E, 0); - SDNode *N = new ConstantFPSDNode(isTarget, Val, EltVT); - CSEMap.InsertNode(N, IP); - AllNodes.push_back(N); + SDNode *N = NULL; + if ((N = CSEMap.FindNodeOrInsertPos(ID, IP))) + if (!MVT::isVector(VT)) + return SDOperand(N, 0); + if (!N) { + N = new ConstantFPSDNode(isTarget, Val, EltVT); + CSEMap.InsertNode(N, IP); + AllNodes.push_back(N); + } + SDOperand Result(N, 0); if (MVT::isVector(VT)) { SmallVector Ops;