avr: replace sentinal with iteration from 0 to ARRAY_SIZE
authorTrevor Saunders <tbsaunde+binutils@tbsaunde.org>
Fri, 13 May 2016 06:51:41 +0000 (02:51 -0400)
committerTrevor Saunders <tbsaunde+binutils@tbsaunde.org>
Thu, 2 Jun 2016 01:22:31 +0000 (21:22 -0400)
This seems a little easier to understand than using a sentinal, and will
hopefully let the compiler optimize the loop better.  It also has the effect
that we stop initializing a field of the sentinal that is an enum with zero.

gas/ChangeLog:

2016-06-01  Trevor Saunders  <tbsaunde+binutils@tbsaunde.org>

* config/tc-avr.c (avr_parse_cons_expression): Replace iteration to
sentinal with iteration to array size.

gas/ChangeLog
gas/config/tc-avr.c

index ff6adf3..62e07cd 100644 (file)
@@ -1,5 +1,10 @@
 2016-06-01  Trevor Saunders  <tbsaunde+binutils@tbsaunde.org>
 
+       * config/tc-avr.c (avr_parse_cons_expression): Replace iteration to
+       sentinal with iteration to array size.
+
+2016-06-01  Trevor Saunders  <tbsaunde+binutils@tbsaunde.org>
+
        * config/xtensa-relax.h: Move typedefs of enums to the enums
        definition.
 
index abcbcc7..ee3140d 100644 (file)
@@ -1731,8 +1731,6 @@ const exp_mod_data_t exp_mod_data[] =
   { "hi8",  1, BFD_RELOC_AVR_8_HI,  "`hi8' "  },
   { "hlo8", 1, BFD_RELOC_AVR_8_HLO, "`hlo8' " },
   { "hh8",  1, BFD_RELOC_AVR_8_HLO, "`hh8' "  },
-  /* End of list.  */
-  { NULL, 0, 0, NULL }
 };
 
 /* Parse special CONS expression: pm (expression) or alternatively
@@ -1742,16 +1740,17 @@ const exp_mod_data_t exp_mod_data[] =
 const exp_mod_data_t *
 avr_parse_cons_expression (expressionS *exp, int nbytes)
 {
-  const exp_mod_data_t *pexp = &exp_mod_data[0];
   char *tmp;
+  unsigned int i;
 
   tmp = input_line_pointer = skip_space (input_line_pointer);
 
   /* The first entry of exp_mod_data[] contains an entry if no
      expression modifier is present.  Skip it.  */
 
-  for (pexp++; pexp->name; pexp++)
+  for (i = 0; i < ARRAY_SIZE (exp_mod_data); i++)
     {
+      const exp_mod_data_t *pexp = &exp_mod_data[i];
       int len = strlen (pexp->name);
 
       if (nbytes == pexp->nbytes