mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-09-27 16:17:17 +00:00
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200442 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -111,12 +111,8 @@ static void PrintObjectSectionSizes(ObjectFile *o) {
|
||||
std::size_t max_name_len = strlen("section");
|
||||
std::size_t max_size_len = strlen("size");
|
||||
std::size_t max_addr_len = strlen("addr");
|
||||
error_code ec;
|
||||
for (section_iterator i = o->begin_sections(),
|
||||
e = o->end_sections(); i != e;
|
||||
i.increment(ec)) {
|
||||
if (error(ec))
|
||||
return;
|
||||
for (section_iterator i = o->begin_sections(), e = o->end_sections();
|
||||
i != e; ++i) {
|
||||
uint64_t size = 0;
|
||||
if (error(i->getSize(size)))
|
||||
return;
|
||||
@@ -154,12 +150,8 @@ static void PrintObjectSectionSizes(ObjectFile *o) {
|
||||
<< "%#" << max_addr_len << radix_fmt << "\n";
|
||||
|
||||
// Print each section.
|
||||
for (section_iterator i = o->begin_sections(),
|
||||
e = o->end_sections(); i != e;
|
||||
i.increment(ec)) {
|
||||
if (error(ec))
|
||||
return;
|
||||
|
||||
for (section_iterator i = o->begin_sections(), e = o->end_sections();
|
||||
i != e; ++i) {
|
||||
StringRef name;
|
||||
uint64_t size = 0;
|
||||
uint64_t addr = 0;
|
||||
@@ -189,13 +181,8 @@ static void PrintObjectSectionSizes(ObjectFile *o) {
|
||||
uint64_t total_bss = 0;
|
||||
|
||||
// Make one pass over the section table to calculate sizes.
|
||||
error_code ec;
|
||||
for (section_iterator i = o->begin_sections(),
|
||||
e = o->end_sections(); i != e;
|
||||
i.increment(ec)) {
|
||||
if (error(ec))
|
||||
return;
|
||||
|
||||
for (section_iterator i = o->begin_sections(), e = o->end_sections();
|
||||
i != e; ++i) {
|
||||
uint64_t size = 0;
|
||||
bool isText = false;
|
||||
bool isData = false;
|
||||
|
Reference in New Issue
Block a user