Skip to content

Commit ae6b298

Browse files
committed
Yul: optimizer tests assert that there are no subobjects but Data
1 parent d067964 commit ae6b298

File tree

3 files changed

+16
-14
lines changed

3 files changed

+16
-14
lines changed

test/libyul/YulOptimizerTestCommon.cpp

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -74,11 +74,19 @@ using namespace solidity::yul::test;
7474
using namespace solidity::frontend;
7575

7676
YulOptimizerTestCommon::YulOptimizerTestCommon(
77-
std::shared_ptr<Object> _obj,
77+
std::shared_ptr<Object const> _obj,
7878
Dialect const& _dialect
79-
): m_dialect(&_dialect), m_object(_obj), m_optimizedObject(std::make_shared<Object>()), m_analysisInfo(m_object->analysisInfo)
79+
): m_dialect(&_dialect), m_object(_obj), m_optimizedObject(std::make_shared<Object>(*_obj))
8080
{
81-
*m_optimizedObject = *m_object;
81+
if (
82+
std::any_of(
83+
m_object->subObjects.begin(),
84+
m_object->subObjects.end(),
85+
[](auto const& subObject) { return dynamic_cast<Data*>(subObject.get()) == nullptr;}
86+
)
87+
)
88+
solUnimplementedAssert(false, "The current implementation of YulOptimizerTests ignores subobjects that are not Data.");
89+
8290
m_namedSteps = {
8391
{"disambiguator", [&]() { return disambiguate(); }},
8492
{"nameDisplacer", [&]() {
@@ -536,8 +544,7 @@ Block const* YulOptimizerTestCommon::run()
536544

537545
Block YulOptimizerTestCommon::disambiguate()
538546
{
539-
auto block = std::get<Block>(Disambiguator(*m_dialect, *m_analysisInfo)(m_object->code()->root()));
540-
m_analysisInfo.reset();
547+
auto block = std::get<Block>(Disambiguator(*m_dialect, *m_object->analysisInfo)(m_object->code()->root()));
541548
return block;
542549
}
543550

test/libyul/YulOptimizerTestCommon.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ class YulOptimizerTestCommon
4040
{
4141
public:
4242
explicit YulOptimizerTestCommon(
43-
std::shared_ptr<Object> _obj,
43+
std::shared_ptr<Object const> _obj,
4444
Dialect const& _dialect
4545
);
4646
/// Sets optimiser step to be run to @param
@@ -70,9 +70,8 @@ class YulOptimizerTestCommon
7070
std::unique_ptr<NameDispenser> m_nameDispenser;
7171
std::unique_ptr<OptimiserStepContext> m_context;
7272

73-
std::shared_ptr<Object> m_object;
73+
std::shared_ptr<Object const> m_object;
7474
std::shared_ptr<Object> m_optimizedObject;
75-
std::shared_ptr<AsmAnalysisInfo> m_analysisInfo;
7675
std::map<std::string, std::function<Block(void)>> m_namedSteps;
7776
};
7877

test/libyul/yulOptimizerTests/commonSubexpressionEliminator/long_literals_as_builtin_args.yul

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,7 @@ object "AccessControlDefaultAdminRules4233_14" {
77
let j := datasize("AccessControlDefaultAdminRules4233_14_deployed")
88
codecopy(i, dataoffset("AccessControlDefaultAdminRules4233_14_deployed"), j)
99
}
10-
object "AccessControlDefaultAdminRules4233_14_deployed" {
11-
code {}
12-
}
10+
data "AccessControlDefaultAdminRules4233_14_deployed" "AccessControlDefaultAdminRules4233_14_deployed"
1311

1412
}
1513
// ----
@@ -22,7 +20,5 @@ object "AccessControlDefaultAdminRules4233_14" {
2220
// let j := datasize("AccessControlDefaultAdminRules4233_14_deployed")
2321
// codecopy(i, dataoffset("AccessControlDefaultAdminRules4233_14_deployed"), j)
2422
// }
25-
// object "AccessControlDefaultAdminRules4233_14_deployed" {
26-
// code { }
27-
// }
23+
// data "AccessControlDefaultAdminRules4233_14_deployed" hex"416363657373436f6e74726f6c44656661756c7441646d696e52756c6573343233335f31345f6465706c6f796564"
2824
// }

0 commit comments

Comments
 (0)