Subzero: Don't store std::string objects inside Variable. Instead, extend 668a7a333d6ddc3102b5b7c7c07448f6d259113c to include both CfgNode and Variable, keeping a pool of strings in the Cfg. BUG= none R=jvoung@chromium.org Review URL: https://codereview.chromium.org/798693003
diff --git a/src/IceTargetLoweringX8632.cpp b/src/IceTargetLoweringX8632.cpp index 1288c20..d049cbd 100644 --- a/src/IceTargetLoweringX8632.cpp +++ b/src/IceTargetLoweringX8632.cpp
@@ -555,8 +555,9 @@ // to the assigned location of Arg. int32_t RegNum = RegX8632::Reg_xmm0 + NumXmmArgs; ++NumXmmArgs; - IceString Name = "home_reg:" + Arg->getName(); - Variable *RegisterArg = Func->makeVariable(Ty, Name); + Variable *RegisterArg = Func->makeVariable(Ty); + if (ALLOW_DUMP) + RegisterArg->setName(Func, "home_reg:" + Arg->getName(Func)); RegisterArg->setRegNum(RegNum); RegisterArg->setIsArg(); Arg->setIsArg(false); @@ -1050,8 +1051,12 @@ return; } assert(Hi == NULL); - Lo = Func->makeVariable(IceType_i32, Var->getName() + "__lo"); - Hi = Func->makeVariable(IceType_i32, Var->getName() + "__hi"); + Lo = Func->makeVariable(IceType_i32); + Hi = Func->makeVariable(IceType_i32); + if (ALLOW_DUMP) { + Lo->setName(Func, Var->getName(Func) + "__lo"); + Hi->setName(Func, Var->getName(Func) + "__hi"); + } Var->setLoHi(Lo, Hi); if (Var->getIsArg()) { Lo->setIsArg();