Prechádzať zdrojové kódy

Fix (#3445)

Co-authored-by: Jeff Noyle <[email protected]>
Jeff Noyle 4 rokov pred
rodič
commit
4c998a5e7e
1 zmenil súbory, kde vykonal 9 pridanie a 10 odobranie
  1. 9 10
      lib/DXIL/DxilCounters.cpp

+ 9 - 10
lib/DXIL/DxilCounters.cpp

@@ -50,28 +50,27 @@ PointerInfo GetPointerInfo(Value* V, PointerInfoMap &ptrInfoMap) {
   if (it != ptrInfoMap.end())
     return it->second;
 
-  PointerInfo &PI = ptrInfoMap[V];
   Type *Ty = V->getType()->getPointerElementType();
-  PI.isArray = Ty->isArrayTy();
+  ptrInfoMap[V].isArray = Ty->isArrayTy();
 
   if (GlobalVariable *GV = dyn_cast<GlobalVariable>(V)) {
     if (GV->getType()->getPointerAddressSpace() == DXIL::kTGSMAddrSpace)
-      PI.memType = PointerInfo::MemType::Global_TGSM;
+      ptrInfoMap[V].memType = PointerInfo::MemType::Global_TGSM;
     else if (!GV->isConstant() &&
              GV->getLinkage() == GlobalVariable::LinkageTypes::InternalLinkage &&
              GV->getType()->getPointerAddressSpace() == DXIL::kDefaultAddrSpace)
-      PI.memType = PointerInfo::MemType::Global_Static;
+      ptrInfoMap[V].memType = PointerInfo::MemType::Global_Static;
   } else if (AllocaInst *AI = dyn_cast<AllocaInst>(V)) {
-    PI.memType = PointerInfo::MemType::Alloca;
+      ptrInfoMap[V].memType = PointerInfo::MemType::Alloca;
   } else if (GEPOperator *GEP = dyn_cast<GEPOperator>(V)) {
-    PI = GetPointerInfo(GEP->getPointerOperand(), ptrInfoMap);
+    ptrInfoMap[V] = GetPointerInfo(GEP->getPointerOperand(), ptrInfoMap);
   } else if (BitCastOperator *BC = dyn_cast<BitCastOperator>(V)) {
-    PI = GetPointerInfo(BC->getOperand(0), ptrInfoMap);
+    ptrInfoMap[V] = GetPointerInfo(BC->getOperand(0), ptrInfoMap);
   } else if (AddrSpaceCastInst *AC = dyn_cast<AddrSpaceCastInst>(V)) {
-    PI = GetPointerInfo(AC->getOperand(0), ptrInfoMap);
+    ptrInfoMap[V] = GetPointerInfo(AC->getOperand(0), ptrInfoMap);
   } else if (ConstantExpr *CE = dyn_cast<ConstantExpr>(V)) {
     if (CE->getOpcode() == LLVMAddrSpaceCast)
-      PI = GetPointerInfo(AC->getOperand(0), ptrInfoMap);
+      ptrInfoMap[V] = GetPointerInfo(AC->getOperand(0), ptrInfoMap);
   //} else if (PHINode *PN = dyn_cast<PHINode>(V)) {
   //  for (auto it = PN->value_op_begin(), e = PN->value_op_end(); it != e; ++it) {
   //    PI = GetPointerInfo(*it, ptrInfoMap);
@@ -79,7 +78,7 @@ PointerInfo GetPointerInfo(Value* V, PointerInfoMap &ptrInfoMap) {
   //      break;
   //  }
   }
-  return PI;
+  return ptrInfoMap[V];
 };
 
 struct ValueInfo {