forked from OSchip/llvm-project
Followed up on Ed Maste's patch with a few more
User fixes. Also changed our iterations across global variables and instruction operands to reflect the new C++11 approach. llvm-svn: 203599
This commit is contained in:
parent
0c325319cf
commit
339f61549f
|
@ -332,7 +332,7 @@ IRForTarget::ResolveFunctionPointers(llvm::Module &llvm_module)
|
|||
if (!is_decl)
|
||||
continue;
|
||||
|
||||
if (fun->hasNUses(0))
|
||||
if (fun->use_empty())
|
||||
continue; // ignore
|
||||
|
||||
uint64_t addr = LLDB_INVALID_ADDRESS;
|
||||
|
@ -639,7 +639,7 @@ IRForTarget::CreateResultVariable (llvm::Function &llvm_function)
|
|||
PrintValue(result_global).c_str(),
|
||||
PrintValue(new_result_global).c_str());
|
||||
|
||||
if (result_global->hasNUses(0))
|
||||
if (result_global->use_empty())
|
||||
{
|
||||
// We need to synthesize a store for this variable, because otherwise
|
||||
// there's nothing to put into its equivalent persistent variable.
|
||||
|
@ -687,7 +687,6 @@ IRForTarget::CreateResultVariable (llvm::Function &llvm_function)
|
|||
return true;
|
||||
}
|
||||
|
||||
#if 0
|
||||
static void DebugUsers(lldb_private::Log *log, Value *value, uint8_t depth)
|
||||
{
|
||||
if (!depth)
|
||||
|
@ -708,7 +707,6 @@ static void DebugUsers(lldb_private::Log *log, Value *value, uint8_t depth)
|
|||
if (log)
|
||||
log->Printf(" <End uses>");
|
||||
}
|
||||
#endif
|
||||
|
||||
bool
|
||||
IRForTarget::RewriteObjCConstString (llvm::GlobalVariable *ns_str,
|
||||
|
@ -1753,28 +1751,18 @@ IRForTarget::ResolveExternals (Function &llvm_function)
|
|||
{
|
||||
lldb_private::Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_EXPRESSIONS));
|
||||
|
||||
for (Module::global_iterator global = m_module->global_begin(), end = m_module->global_end();
|
||||
global != end;
|
||||
++global)
|
||||
for (GlobalVariable &global_var : m_module->globals())
|
||||
{
|
||||
if (!global)
|
||||
{
|
||||
if (m_error_stream)
|
||||
m_error_stream->Printf("Internal error [IRForTarget]: global variable is NULL");
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
std::string global_name = (*global).getName().str();
|
||||
std::string global_name = global_var.getName().str();
|
||||
|
||||
if (log)
|
||||
log->Printf("Examining %s, DeclForGlobalValue returns %p",
|
||||
global_name.c_str(),
|
||||
DeclForGlobal(global));
|
||||
DeclForGlobal(&global_var));
|
||||
|
||||
if (global_name.find("OBJC_IVAR") == 0)
|
||||
{
|
||||
if (!HandleSymbol(global))
|
||||
if (!HandleSymbol(&global_var))
|
||||
{
|
||||
if (m_error_stream)
|
||||
m_error_stream->Printf("Error [IRForTarget]: Couldn't find Objective-C indirect ivar symbol %s\n", global_name.c_str());
|
||||
|
@ -1784,7 +1772,7 @@ IRForTarget::ResolveExternals (Function &llvm_function)
|
|||
}
|
||||
else if (global_name.find("OBJC_CLASSLIST_REFERENCES_$") != global_name.npos)
|
||||
{
|
||||
if (!HandleObjCClass(global))
|
||||
if (!HandleObjCClass(&global_var))
|
||||
{
|
||||
if (m_error_stream)
|
||||
m_error_stream->Printf("Error [IRForTarget]: Couldn't resolve the class for an Objective-C static method call\n");
|
||||
|
@ -1794,7 +1782,7 @@ IRForTarget::ResolveExternals (Function &llvm_function)
|
|||
}
|
||||
else if (global_name.find("OBJC_CLASSLIST_SUP_REFS_$") != global_name.npos)
|
||||
{
|
||||
if (!HandleObjCClass(global))
|
||||
if (!HandleObjCClass(&global_var))
|
||||
{
|
||||
if (m_error_stream)
|
||||
m_error_stream->Printf("Error [IRForTarget]: Couldn't resolve the class for an Objective-C static method call\n");
|
||||
|
@ -1802,9 +1790,9 @@ IRForTarget::ResolveExternals (Function &llvm_function)
|
|||
return false;
|
||||
}
|
||||
}
|
||||
else if (DeclForGlobal(global))
|
||||
else if (DeclForGlobal(&global_var))
|
||||
{
|
||||
if (!MaybeHandleVariable (global))
|
||||
if (!MaybeHandleVariable (&global_var))
|
||||
{
|
||||
if (m_error_stream)
|
||||
m_error_stream->Printf("Internal error [IRForTarget]: Couldn't rewrite external variable %s\n", global_name.c_str());
|
||||
|
@ -1826,16 +1814,12 @@ IRForTarget::ReplaceStrings ()
|
|||
|
||||
OffsetsTy offsets;
|
||||
|
||||
for (Module::global_iterator gi = m_module->global_begin(), ge = m_module->global_end();
|
||||
gi != ge;
|
||||
++gi)
|
||||
for (GlobalVariable &gv : m_module->globals())
|
||||
{
|
||||
GlobalVariable *gv = gi;
|
||||
|
||||
if (!gv->hasInitializer())
|
||||
if (!gv.hasInitializer())
|
||||
continue;
|
||||
|
||||
Constant *gc = gv->getInitializer();
|
||||
Constant *gc = gv.getInitializer();
|
||||
|
||||
std::string str;
|
||||
|
||||
|
@ -1873,7 +1857,7 @@ IRForTarget::ReplaceStrings ()
|
|||
str = gc_array->getAsString();
|
||||
}
|
||||
|
||||
offsets[gv] = m_data_allocator.GetStream().GetSize();
|
||||
offsets[&gv] = m_data_allocator.GetStream().GetSize();
|
||||
|
||||
m_data_allocator.GetStream().Write(str.c_str(), str.length() + 1);
|
||||
}
|
||||
|
@ -1955,12 +1939,8 @@ IRForTarget::ReplaceStaticLiterals (llvm::BasicBlock &basic_block)
|
|||
{
|
||||
llvm::Instruction &inst = *ii;
|
||||
|
||||
for (Instruction::op_iterator oi = inst.op_begin(), oe = inst.op_end();
|
||||
oi != oe;
|
||||
++oi)
|
||||
for (Value *operand_val : inst.operand_values())
|
||||
{
|
||||
Value *operand_val = oi->get();
|
||||
|
||||
ConstantFP *operand_constant_fp = dyn_cast<ConstantFP>(operand_val);
|
||||
|
||||
if (operand_constant_fp/* && operand_constant_fp->getType()->isX86_FP80Ty()*/)
|
||||
|
@ -2527,37 +2507,29 @@ IRForTarget::StripAllGVs (Module &llvm_module)
|
|||
{
|
||||
erased = false;
|
||||
|
||||
for (Module::global_iterator gi = llvm_module.global_begin(), ge = llvm_module.global_end();
|
||||
gi != ge;
|
||||
++gi)
|
||||
for (GlobalVariable &global_var : llvm_module.globals())
|
||||
{
|
||||
GlobalVariable *global_var = dyn_cast<GlobalVariable>(gi);
|
||||
|
||||
global_var->removeDeadConstantUsers();
|
||||
global_var.removeDeadConstantUsers();
|
||||
|
||||
if (global_var->use_empty())
|
||||
if (global_var.use_empty())
|
||||
{
|
||||
if (log)
|
||||
log->Printf("Did remove %s",
|
||||
PrintValue(global_var).c_str());
|
||||
global_var->eraseFromParent();
|
||||
PrintValue(&global_var).c_str());
|
||||
global_var.eraseFromParent();
|
||||
erased = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (Module::global_iterator gi = llvm_module.global_begin(), ge = llvm_module.global_end();
|
||||
gi != ge;
|
||||
++gi)
|
||||
for (GlobalVariable &global_var : llvm_module.globals())
|
||||
{
|
||||
GlobalVariable *global_var = dyn_cast<GlobalVariable>(gi);
|
||||
|
||||
GlobalValue::user_iterator ui = global_var->user_begin();
|
||||
GlobalValue::user_iterator ui = global_var.user_begin();
|
||||
|
||||
if (log)
|
||||
log->Printf("Couldn't remove %s because of %s",
|
||||
PrintValue(global_var).c_str(),
|
||||
PrintValue(&global_var).c_str(),
|
||||
PrintValue(*ui).c_str());
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue