Skip to content

Commit 9dc6b2e

Browse files
authored
Merge pull request #16455 from argotorg/create_ssa_cfg_dot_exporter_base
Introduce DotExporterBase for SSA CFG dot export
2 parents 7994118 + e3c73c2 commit 9dc6b2e

24 files changed

Lines changed: 454 additions & 282 deletions

libyul/CMakeLists.txt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -82,18 +82,20 @@ add_library(yul
8282
backends/evm/ssa/LivenessAnalysis.h
8383
backends/evm/ssa/SSACFGLoopNestingForest.cpp
8484
backends/evm/ssa/SSACFGLoopNestingForest.h
85-
backends/evm/ssa/SSACFGTopologicalSort.cpp
86-
backends/evm/ssa/SSACFGTopologicalSort.h
8785
backends/evm/ssa/SSACFG.cpp
8886
backends/evm/ssa/SSACFG.h
8987
backends/evm/ssa/SSACFGBuilder.cpp
9088
backends/evm/ssa/SSACFGBuilder.h
91-
backends/evm/ssa/SSACFGJsonExporter.cpp
92-
backends/evm/ssa/SSACFGJsonExporter.h
9389
backends/evm/ssa/Stack.cpp
9490
backends/evm/ssa/Stack.h
9591
backends/evm/ssa/StackShuffler.cpp
9692
backends/evm/ssa/StackShuffler.h
93+
backends/evm/ssa/io/DotExporterBase.cpp
94+
backends/evm/ssa/io/DotExporterBase.h
95+
backends/evm/ssa/io/JSONExporter.cpp
96+
backends/evm/ssa/io/JSONExporter.h
97+
backends/evm/ssa/traversal/ForwardTopologicalSort.cpp
98+
backends/evm/ssa/traversal/ForwardTopologicalSort.h
9799
optimiser/ASTCopier.cpp
98100
optimiser/ASTCopier.h
99101
optimiser/ASTWalker.cpp

libyul/YulStack.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
#include <libyul/AsmAnalysis.h>
2222
#include <libyul/AsmAnalysisInfo.h>
2323
#include <libyul/backends/evm/ssa/SSACFGBuilder.h>
24-
#include <libyul/backends/evm/ssa/SSACFGJsonExporter.h>
24+
#include <libyul/backends/evm/ssa/io/JSONExporter.h>
2525
#include <libyul/backends/evm/EthAssemblyAdapter.h>
2626
#include <libyul/backends/evm/EVMCodeTransform.h>
2727
#include <libyul/backends/evm/EVMDialect.h>
@@ -405,7 +405,7 @@ Json YulStack::cfgJson() const
405405
keepLiteralAssignments
406406
);
407407
std::unique_ptr<ssa::ControlFlowLiveness> liveness = std::make_unique<ssa::ControlFlowLiveness>(*controlFlow);
408-
return ssa::json::exportControlFlow(*controlFlow, liveness.get());
408+
return ssa::io::json::exportControlFlow(*controlFlow, liveness.get());
409409
};
410410

411411
std::function<Json(std::vector<std::shared_ptr<ObjectNode>>)> exportCFGFromSubObjects;

libyul/backends/evm/ssa/JunkAdmittingBlocksFinder.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
namespace solidity::yul::ssa
2424
{
2525

26-
JunkAdmittingBlocksFinder::JunkAdmittingBlocksFinder(SSACFG const& _cfg, ForwardSSACFGTopologicalSort const& _topologicalSort):
26+
JunkAdmittingBlocksFinder::JunkAdmittingBlocksFinder(SSACFG const& _cfg, traversal::ForwardTopologicalSort const& _topologicalSort):
2727
m_blockAllowsJunk(_cfg.numBlocks(), false)
2828
{
2929
// special case: only one block here, we mark it as junkable in case it's not a function return

libyul/backends/evm/ssa/JunkAdmittingBlocksFinder.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919
#pragma once
2020

21-
#include <libyul/backends/evm/ssa/SSACFGTopologicalSort.h>
21+
#include <libyul/backends/evm/ssa/traversal/ForwardTopologicalSort.h>
2222
#include <libyul/backends/evm/ssa/SSACFG.h>
2323

2424
#include <cstdint>
@@ -37,7 +37,7 @@ namespace solidity::yul::ssa
3737
class JunkAdmittingBlocksFinder
3838
{
3939
public:
40-
explicit JunkAdmittingBlocksFinder(SSACFG const& _cfg, ForwardSSACFGTopologicalSort const& _topologicalSort);
40+
explicit JunkAdmittingBlocksFinder(SSACFG const& _cfg, traversal::ForwardTopologicalSort const& _topologicalSort);
4141
bool allowsAdditionOfJunk(SSACFG::BlockId const& _blockId) const;
4242
private:
4343
std::vector<std::uint8_t> m_blockAllowsJunk;

libyul/backends/evm/ssa/LivenessAnalysis.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919
#pragma once
2020

21-
#include <libyul/backends/evm/ssa/SSACFGTopologicalSort.h>
21+
#include <libyul/backends/evm/ssa/traversal/ForwardTopologicalSort.h>
2222
#include <libyul/backends/evm/ssa/SSACFG.h>
2323
#include <libyul/backends/evm/ssa/SSACFGLoopNestingForest.h>
2424

@@ -107,7 +107,7 @@ class LivenessAnalysis
107107
LivenessData const& liveOut(SSACFG::BlockId const _blockId) const { return m_liveOuts[_blockId.value]; }
108108
LivenessData used(SSACFG::BlockId _blockId) const;
109109
std::vector<LivenessData> const& operationsLiveOut(SSACFG::BlockId _blockId) const { return m_operationLiveOuts[_blockId.value]; }
110-
ForwardSSACFGTopologicalSort const& topologicalSort() const { return m_topologicalSort; }
110+
traversal::ForwardTopologicalSort const& topologicalSort() const { return m_topologicalSort; }
111111
SSACFG const& cfg() const { return m_cfg; }
112112

113113
private:
@@ -117,7 +117,7 @@ class LivenessAnalysis
117117
LivenessData blockExitValues(SSACFG::BlockId const& _blockId) const;
118118

119119
SSACFG const& m_cfg;
120-
ForwardSSACFGTopologicalSort m_topologicalSort;
120+
traversal::ForwardTopologicalSort m_topologicalSort;
121121
SSACFGLoopNestingForest m_loopNestingForest;
122122
std::vector<LivenessData> m_liveIns;
123123
std::vector<LivenessData> m_liveOuts;

0 commit comments

Comments
 (0)