[opaque pointer type] Store the value type of an alloca
[oota-llvm.git] / lib / Transforms / Utils / ValueMapper.cpp
index f396b42dabe0fa6ba0ad5f8d40947a257e399ac8..5c1518d72aca011cf5dfeceb5bf41bf5bda8cbcd 100644 (file)
@@ -396,6 +396,9 @@ void llvm::RemapInstruction(Instruction *I, ValueToValueMapTy &VMap,
       Tys.push_back(TypeMapper->remapType(Ty));
     CS.mutateFunctionType(FunctionType::get(
         TypeMapper->remapType(I->getType()), Tys, FTy->isVarArg()));
-  } else
-    I->mutateType(TypeMapper->remapType(I->getType()));
+    return;
+  }
+  if (auto *AI = dyn_cast<AllocaInst>(I))
+    AI->setAllocatedType(TypeMapper->remapType(AI->getAllocatedType()));
+  I->mutateType(TypeMapper->remapType(I->getType()));
 }