[llvm] r269112 - SDAG: Avoid relying on the return value of SelectCode in Hexagon. NFC

Justin Bogner via llvm-commits llvm-commits at lists.llvm.org
Tue May 10 13:31:54 PDT 2016


Author: bogner
Date: Tue May 10 15:31:53 2016
New Revision: 269112

URL: http://llvm.org/viewvc/llvm-project?rev=269112&view=rev
Log:
SDAG: Avoid relying on the return value of SelectCode in Hexagon. NFC

This is a bit of a spot fix for now. I'll try to fix this up more
comprehensively soon.

This is part of the work to have Select return void instead of an
SDNode *, which is in turn part of llvm.org/pr26808.

Modified:
    llvm/trunk/lib/Target/Hexagon/HexagonISelDAGToDAG.cpp

Modified: llvm/trunk/lib/Target/Hexagon/HexagonISelDAGToDAG.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Hexagon/HexagonISelDAGToDAG.cpp?rev=269112&r1=269111&r2=269112&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Hexagon/HexagonISelDAGToDAG.cpp (original)
+++ llvm/trunk/lib/Target/Hexagon/HexagonISelDAGToDAG.cpp Tue May 10 15:31:53 2016
@@ -570,7 +570,13 @@ SDNode *HexagonDAGToDAGISel::StoreInstrF
   else
     TS = CurDAG->getTruncStore(SDValue(LoadN,2), dl, SDValue(LoadN,0), Loc, PI,
                                MVT::getIntegerVT(Size*8), false, false, Size);
-  SDNode *StoreN = SelectStore(TS.getNode());
+
+  SDNode *StoreN;
+  {
+    HandleSDNode Handle(TS);
+    SelectStore(TS.getNode());
+    StoreN = Handle.getValue().getNode();
+  }
 
   // Load's results are { Loaded value, Updated pointer, Chain }
   ReplaceUses(SDValue(IntN, 0), SDValue(LoadN, 1));
@@ -720,7 +726,8 @@ SDNode *HexagonDAGToDAGISel::SelectIndex
 
     ReplaceUses(ST, Result);
     ReplaceUses(SDValue(ST,1), SDValue(Result,1));
-    return Result;
+    CurDAG->RemoveDeadNode(ST);
+    return nullptr;
   }
 
   // Note: Order of operands matches the def of instruction:
@@ -767,7 +774,8 @@ SDNode *HexagonDAGToDAGISel::SelectIndex
 
   ReplaceUses(SDValue(ST,0), SDValue(Result_2,0));
   ReplaceUses(SDValue(ST,1), SDValue(Result_1,0));
-  return Result_2;
+  CurDAG->RemoveDeadNode(ST);
+  return nullptr;
 }
 
 SDNode *HexagonDAGToDAGISel::SelectStore(SDNode *N) {




More information about the llvm-commits mailing list