Index: src/IceCfg.cpp |
diff --git a/src/IceCfg.cpp b/src/IceCfg.cpp |
index a44e6b3b4a8a125149150e7ed4326eeaf4e92969..bfc63a57b145c14fa6d9151171fbb2681d2535ea 100644 |
--- a/src/IceCfg.cpp |
+++ b/src/IceCfg.cpp |
@@ -122,46 +122,43 @@ bool Cfg::hasComputedFrame() const { return getTarget()->hasComputedFrame(); } |
namespace { |
constexpr char BlockNameGlobalPrefix[] = ".L$profiler$block_name$"; |
constexpr char BlockStatsGlobalPrefix[] = ".L$profiler$block_info$"; |
+} // end of anonymous namespace |
-VariableDeclaration *nodeNameDeclaration(GlobalContext *Ctx, |
- const IceString &NodeAsmName) { |
- auto *Var = VariableDeclaration::create(Ctx); |
+void Cfg::createNodeNameDeclaration(const IceString &NodeAsmName) { |
+ auto *Var = VariableDeclaration::create(GlobalInits.get()); |
Var->setName(BlockNameGlobalPrefix + NodeAsmName); |
Var->setIsConstant(true); |
Var->addInitializer(VariableDeclaration::DataInitializer::create( |
- NodeAsmName.data(), NodeAsmName.size() + 1)); |
+ GlobalInits.get(), NodeAsmName.data(), NodeAsmName.size() + 1)); |
const SizeT Int64ByteSize = typeWidthInBytes(IceType_i64); |
Var->setAlignment(Int64ByteSize); // Wasteful, 32-bit could use 4 bytes. |
- return Var; |
+ GlobalInits->push_back(Var); |
} |
-VariableDeclaration * |
-blockProfilingInfoDeclaration(GlobalContext *Ctx, const IceString &NodeAsmName, |
- VariableDeclaration *NodeNameDeclaration) { |
- auto *Var = VariableDeclaration::create(Ctx); |
+void Cfg::createBlockProfilingInfoDeclaration( |
+ const IceString &NodeAsmName, VariableDeclaration *NodeNameDeclaration) { |
+ auto *Var = VariableDeclaration::create(GlobalInits.get()); |
Var->setName(BlockStatsGlobalPrefix + NodeAsmName); |
const SizeT Int64ByteSize = typeWidthInBytes(IceType_i64); |
- Var->addInitializer( |
- VariableDeclaration::ZeroInitializer::create(Int64ByteSize)); |
+ Var->addInitializer(VariableDeclaration::ZeroInitializer::create( |
+ GlobalInits.get(), Int64ByteSize)); |
const RelocOffsetT NodeNameDeclarationOffset = 0; |
Var->addInitializer(VariableDeclaration::RelocInitializer::create( |
- NodeNameDeclaration, |
+ GlobalInits.get(), NodeNameDeclaration, |
{RelocOffset::create(Ctx, NodeNameDeclarationOffset)})); |
Var->setAlignment(Int64ByteSize); |
- return Var; |
+ GlobalInits->push_back(Var); |
} |
-} // end of anonymous namespace |
void Cfg::profileBlocks() { |
if (GlobalInits == nullptr) |
GlobalInits.reset(new VariableDeclarationList()); |
for (CfgNode *Node : Nodes) { |
- IceString NodeAsmName = Node->getAsmName(); |
- GlobalInits->push_back(nodeNameDeclaration(Ctx, NodeAsmName)); |
- GlobalInits->push_back( |
- blockProfilingInfoDeclaration(Ctx, NodeAsmName, GlobalInits->back())); |
+ const IceString NodeAsmName = Node->getAsmName(); |
+ createNodeNameDeclaration(NodeAsmName); |
+ createBlockProfilingInfoDeclaration(NodeAsmName, GlobalInits->back()); |
Node->profileExecutionCount(GlobalInits->back()); |
} |
} |