summaryrefslogtreecommitdiffstats
path: root/llvm/lib/MC/MCObjectDisassembler.cpp
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2014-01-30 02:49:50 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2014-01-30 02:49:50 +0000
commit5e812afaeb3db56db706e81e448db46c08298abd (patch)
tree86d091fea3f71879287f607d9f616e410866099c /llvm/lib/MC/MCObjectDisassembler.cpp
parent980f2dc4fc9a27fa950f6f9c6baf554aa7cef351 (diff)
downloadbcm5719-llvm-5e812afaeb3db56db706e81e448db46c08298abd.tar.gz
bcm5719-llvm-5e812afaeb3db56db706e81e448db46c08298abd.zip
Simplify the handling of iterators in ObjectFile.
None of the object file formats reported error on iterator increment. In retrospect, that is not too surprising: no object format stores symbols or sections in a linked list or other structure that requires chasing pointers. As a consequence, all error checking can be done on begin() and end(). This reduces the text segment of bin/llvm-readobj in my machine from 521233 to 518526 bytes. llvm-svn: 200442
Diffstat (limited to 'llvm/lib/MC/MCObjectDisassembler.cpp')
-rw-r--r--llvm/lib/MC/MCObjectDisassembler.cpp24
1 files changed, 5 insertions, 19 deletions
diff --git a/llvm/lib/MC/MCObjectDisassembler.cpp b/llvm/lib/MC/MCObjectDisassembler.cpp
index 16a110f09bf..85de4111b7f 100644
--- a/llvm/lib/MC/MCObjectDisassembler.cpp
+++ b/llvm/lib/MC/MCObjectDisassembler.cpp
@@ -37,11 +37,8 @@ MCObjectDisassembler::MCObjectDisassembler(const ObjectFile &Obj,
: Obj(Obj), Dis(Dis), MIA(MIA), MOS(0) {}
uint64_t MCObjectDisassembler::getEntrypoint() {
- error_code ec;
for (symbol_iterator SI = Obj.begin_symbols(), SE = Obj.end_symbols();
- SI != SE; SI.increment(ec)) {
- if (ec)
- break;
+ SI != SE; ++SI) {
StringRef Name;
SI->getName(Name);
if (Name == "main" || Name == "_main") {
@@ -90,13 +87,8 @@ MCModule *MCObjectDisassembler::buildModule(bool withCFG) {
}
void MCObjectDisassembler::buildSectionAtoms(MCModule *Module) {
- error_code ec;
- for (section_iterator SI = Obj.begin_sections(),
- SE = Obj.end_sections();
- SI != SE;
- SI.increment(ec)) {
- if (ec) break;
-
+ for (section_iterator SI = Obj.begin_sections(), SE = Obj.end_sections();
+ SI != SE; ++SI) {
bool isText; SI->isText(isText);
bool isData; SI->isData(isData);
if (!isData && !isText)
@@ -184,11 +176,8 @@ void MCObjectDisassembler::buildCFG(MCModule *Module) {
AddressSetTy Splits;
AddressSetTy Calls;
- error_code ec;
for (symbol_iterator SI = Obj.begin_symbols(), SE = Obj.end_symbols();
- SI != SE; SI.increment(ec)) {
- if (ec)
- break;
+ SI != SE; ++SI) {
SymbolRef::Type SymType;
SI->getType(SymType);
if (SymType == SymbolRef::ST_Function) {
@@ -506,11 +495,8 @@ MCMachOObjectDisassembler::MCMachOObjectDisassembler(
: MCObjectDisassembler(MOOF, Dis, MIA), MOOF(MOOF),
VMAddrSlide(VMAddrSlide), HeaderLoadAddress(HeaderLoadAddress) {
- error_code ec;
for (section_iterator SI = MOOF.begin_sections(), SE = MOOF.end_sections();
- SI != SE; SI.increment(ec)) {
- if (ec)
- break;
+ SI != SE; ++SI) {
StringRef Name;
SI->getName(Name);
// FIXME: We should use the S_ section type instead of the name.
OpenPOWER on IntegriCloud