Skip to content

Commit c54d21c

Browse files
committed
[lldb][NFC] Early exit in IRExecutionUnit::GetStaticInitializers
1 parent b696b9d commit c54d21c

File tree

1 file changed

+28
-24
lines changed

1 file changed

+28
-24
lines changed

lldb/source/Expression/IRExecutionUnit.cpp

Lines changed: 28 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -977,30 +977,34 @@ IRExecutionUnit::FindSymbol(lldb_private::ConstString name, bool &missing_weak)
977977

978978
void IRExecutionUnit::GetStaticInitializers(
979979
std::vector<lldb::addr_t> &static_initializers) {
980-
if (llvm::GlobalVariable *global_ctors =
981-
m_module->getNamedGlobal("llvm.global_ctors")) {
982-
if (llvm::ConstantArray *ctor_array = llvm::dyn_cast<llvm::ConstantArray>(
983-
global_ctors->getInitializer())) {
984-
for (llvm::Use &ctor_use : ctor_array->operands()) {
985-
if (llvm::ConstantStruct *ctor_struct =
986-
llvm::dyn_cast<llvm::ConstantStruct>(ctor_use)) {
987-
lldbassert(ctor_struct->getNumOperands() ==
988-
3); // this is standardized
989-
if (llvm::Function *ctor_function =
990-
llvm::dyn_cast<llvm::Function>(ctor_struct->getOperand(1))) {
991-
ConstString ctor_function_name_cs(ctor_function->getName().str());
992-
993-
for (JittedFunction &jitted_function : m_jitted_functions) {
994-
if (ctor_function_name_cs == jitted_function.m_name) {
995-
if (jitted_function.m_remote_addr != LLDB_INVALID_ADDRESS) {
996-
static_initializers.push_back(jitted_function.m_remote_addr);
997-
}
998-
break;
999-
}
1000-
}
1001-
}
1002-
}
1003-
}
980+
llvm::GlobalVariable *global_ctors =
981+
m_module->getNamedGlobal("llvm.global_ctors");
982+
if (!global_ctors)
983+
return;
984+
auto *ctor_array =
985+
llvm::dyn_cast<llvm::ConstantArray>(global_ctors->getInitializer());
986+
if (!ctor_array)
987+
return;
988+
989+
for (llvm::Use &ctor_use : ctor_array->operands()) {
990+
auto *ctor_struct = llvm::dyn_cast<llvm::ConstantStruct>(ctor_use);
991+
if (!ctor_struct)
992+
continue;
993+
// this is standardized
994+
lldbassert(ctor_struct->getNumOperands() == 3);
995+
auto *ctor_function =
996+
llvm::dyn_cast<llvm::Function>(ctor_struct->getOperand(1));
997+
if (!ctor_function)
998+
continue;
999+
ConstString ctor_function_name_cs(ctor_function->getName().str());
1000+
1001+
for (JittedFunction &jitted_function : m_jitted_functions) {
1002+
if (ctor_function_name_cs != jitted_function.m_name)
1003+
continue;
1004+
if (jitted_function.m_remote_addr == LLDB_INVALID_ADDRESS)
1005+
continue;
1006+
static_initializers.push_back(jitted_function.m_remote_addr);
1007+
break;
10041008
}
10051009
}
10061010
}

0 commit comments

Comments
 (0)