R600: Fix crashes when an illegal type load or store is not handled.
authorMatt Arsenault <Matthew.Arsenault@amd.com>
Wed, 2 Jul 2014 17:44:53 +0000 (17:44 +0000)
committerMatt Arsenault <Matthew.Arsenault@amd.com>
Wed, 2 Jul 2014 17:44:53 +0000 (17:44 +0000)
I don't think anything hits this now, but will be exposed in future
patches.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@212197 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/R600/AMDGPUISelLowering.cpp

index 9258e1569e0499cbce902bdee484084103ffc297..64636de959b44b4d2ba33818e0cef6808109ec97 100644 (file)
@@ -556,6 +556,9 @@ void AMDGPUTargetLowering::ReplaceNodeResults(SDNode *N,
     return;
   case ISD::LOAD: {
     SDNode *Node = LowerLOAD(SDValue(N, 0), DAG).getNode();
+    if (!Node)
+      return;
+
     Results.push_back(SDValue(Node, 0));
     Results.push_back(SDValue(Node, 1));
     // XXX: LLVM seems not to replace Chain Value inside CustomWidenLowerNode
@@ -564,8 +567,9 @@ void AMDGPUTargetLowering::ReplaceNodeResults(SDNode *N,
     return;
   }
   case ISD::STORE: {
-    SDNode *Node = LowerSTORE(SDValue(N, 0), DAG).getNode();
-    Results.push_back(SDValue(Node, 0));
+    SDValue Lowered = LowerSTORE(SDValue(N, 0), DAG);
+    if (Lowered.getNode())
+      Results.push_back(Lowered);
     return;
   }
   default: