Skip to content

Commit fe1791f

Browse files
Jinkelahydai
authored andcommitted
[CodeGen] fix yul top object access bug.
1 parent 6b3774a commit fe1791f

File tree

2 files changed

+14
-14
lines changed

2 files changed

+14
-14
lines changed

lib/CodeGen/CodeGenModule.cpp

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1586,22 +1586,22 @@ void CodeGenModule::emitStructDecl(const StructDecl *SD) {
15861586
}
15871587

15881588
void CodeGenModule::emitYulObject(const YulObject *YO) {
1589+
{
1590+
const std::string Name = YO->getUniqueName();
1591+
emitNestedObjectGetter(Name + ".object");
1592+
NestedEntries.emplace_back(Name + ".main", Name + ".object", nullptr);
1593+
/*
1594+
llvm::Function *DataSize = llvm::Function::Create(
1595+
llvm::FunctionType::get(Int256Ty, false),
1596+
llvm::Function::InternalLinkage, ".datasize", TheModule);
1597+
llvm::Function *DataOffset = llvm::Function::Create(
1598+
llvm::FunctionType::get(Int8PtrTy, false),
1599+
llvm::Function::InternalLinkage, ".dataoffset", TheModule);
1600+
*/
1601+
}
15891602
assert(nullptr != YO->getCode());
15901603
for (const auto *O : YO->getObjectList()) {
15911604
emitYulObject(O);
1592-
{
1593-
const std::string Name = O->getUniqueName();
1594-
emitNestedObjectGetter(Name + ".object");
1595-
NestedEntries.emplace_back(Name + ".main", Name + ".object", nullptr);
1596-
/*
1597-
llvm::Function *DataSize = llvm::Function::Create(
1598-
llvm::FunctionType::get(Int256Ty, false),
1599-
llvm::Function::InternalLinkage, ".datasize", TheModule);
1600-
llvm::Function *DataOffset = llvm::Function::Create(
1601-
llvm::FunctionType::get(Int8PtrTy, false),
1602-
llvm::Function::InternalLinkage, ".dataoffset", TheModule);
1603-
*/
1604-
}
16051605
getEntry().clear();
16061606
getEntry().resize(1);
16071607
}

test/yul/subobject_access.yul

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ object "Contract1" {
77
let C := datasize("Contract2.runtime")
88
let D := datasize("Contract2.runtime.Table2")
99
let E := datasize("Contract1.Contract2.runtime.Table2")
10-
// let F := datasize("Contract1")
10+
let F := datasize("Contract1")
1111
}
1212
object "Contract2" {
1313
code {

0 commit comments

Comments
 (0)