Code cleanup: Refactor abbrev_table_read_table cycle
authorJan Kratochvil <jan.kratochvil@redhat.com>
Mon, 20 Feb 2017 19:53:20 +0000 (20:53 +0100)
committerJan Kratochvil <jan.kratochvil@redhat.com>
Mon, 20 Feb 2017 19:59:40 +0000 (20:59 +0100)
I find it as an improvement on its own, it prevents more code duplication in
a future patch.

gdb/ChangeLog
2017-02-20  Jan Kratochvil  <jan.kratochvil@redhat.com>

* dwarf2read.c (abbrev_table_read_table): Read the data only once.

gdb/ChangeLog
gdb/dwarf2read.c

index 99fcca075ae7f5be98a2288aaadb5d8dcf70656a..75f1b02f3edc4b487ccc9c31e2c3e023eef91352 100644 (file)
@@ -1,3 +1,7 @@
+2017-02-20  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+       * dwarf2read.c (abbrev_table_read_table): Read the data only once.
+
 2017-02-20  Jan Kratochvil  <jan.kratochvil@redhat.com>
 
        * dwarf2read.c (dwarf2_ranges_process): New function from
index e0ede18ceed4db1003d7ef9f818c19fb3b314960..a987e0eeff5edbc744790fe2ba044f2df769a122 100644 (file)
@@ -15339,12 +15339,16 @@ abbrev_table_read_table (struct dwarf2_section_info *section,
       abbrev_ptr += 1;
 
       /* now read in declarations */
-      abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
-      abbrev_ptr += bytes_read;
-      abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
-      abbrev_ptr += bytes_read;
-      while (abbrev_name)
+      for (;;)
        {
+         abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
+         abbrev_ptr += bytes_read;
+         abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
+         abbrev_ptr += bytes_read;
+
+         if (abbrev_name == 0)
+           break;
+
          if (cur_abbrev->num_attrs == allocated_attrs)
            {
              allocated_attrs += ATTR_ALLOC_CHUNK;
@@ -15354,12 +15358,9 @@ abbrev_table_read_table (struct dwarf2_section_info *section,
 
          cur_attrs[cur_abbrev->num_attrs].name
            = (enum dwarf_attribute) abbrev_name;
-         cur_attrs[cur_abbrev->num_attrs++].form
+         cur_attrs[cur_abbrev->num_attrs].form
            = (enum dwarf_form) abbrev_form;
-         abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
-         abbrev_ptr += bytes_read;
-         abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
-         abbrev_ptr += bytes_read;
+         ++cur_abbrev->num_attrs;
        }
 
       cur_abbrev->attrs =