avr.c (avr_arch_types): Rearranging array.
authorAnatoly Sokolov <aesok@post.ru>
Mon, 16 Apr 2007 17:50:26 +0000 (21:50 +0400)
committerAnatoly Sokolov <aesok@gcc.gnu.org>
Mon, 16 Apr 2007 17:50:26 +0000 (21:50 +0400)
* config/avr/avr.c (avr_arch_types): Rearranging  array.
(enum avr_arch): Add.
(avr_mcu_types): Use avr_arch enumeration constants instead of
numbers.
* config/avr/avr.h (LINK_SPEC): Simplify.

From-SVN: r123882

gcc/ChangeLog
gcc/config/avr/avr.c
gcc/config/avr/avr.h

index 9a7c3cc85ef8ea642ebb2b950cadc5da01ae638d..f94cf97baaf9101feabc4810da4d449c5415fc1f 100644 (file)
@@ -1,3 +1,11 @@
+2007-04-16  Anatoly Sokolov <aesok@post.ru>
+
+       * config/avr/avr.c (avr_arch_types): Rearranging  array.
+       (enum avr_arch): Add.
+       (avr_mcu_types): Use avr_arch enumeration constants instead of 
+       numbers.
+       * config/avr/avr.h (LINK_SPEC): Simplify.
+
 2007-04-16  Kazu Hirata  <kazu@codesourcery.com>
 
        * config/m68k/m68k.c (m68k_libcall_value,
index bafaa5d4babebcae520761423d7a975726262f92..3980ca98d47a1264a5dc6cb126844ab09273f81a 100644 (file)
@@ -141,10 +141,24 @@ static const struct base_arch_s avr_arch_types[] = {
   { 1, 0, 0, 0,  NULL },  /* unknown device specified */
   { 1, 0, 0, 0, "__AVR_ARCH__=1" },
   { 0, 0, 0, 0, "__AVR_ARCH__=2" },
+  { 0, 0, 0, 1, "__AVR_ARCH__=25"},
   { 0, 0, 1, 0, "__AVR_ARCH__=3" },
   { 0, 1, 0, 1, "__AVR_ARCH__=4" },
-  { 0, 1, 1, 1, "__AVR_ARCH__=5" },
-  { 0, 0, 0, 1, "__AVR_ARCH__=25"}
+  { 0, 1, 1, 1, "__AVR_ARCH__=5" }
+};
+
+/* These names are used as the index into the avr_arch_types[] table 
+   above.  */
+
+enum avr_arch
+{
+  ARCH_UNKNOWN,
+  ARCH_AVR1,
+  ARCH_AVR2,
+  ARCH_AVR25,
+  ARCH_AVR3,
+  ARCH_AVR4,
+  ARCH_AVR5
 };
 
 struct mcu_type_s {
@@ -164,103 +178,103 @@ struct mcu_type_s {
 
 static const struct mcu_type_s avr_mcu_types[] = {
     /* Classic, <= 8K.  */
-  { "avr2",      2, NULL },
-  { "at90s2313", 2, "__AVR_AT90S2313__" },
-  { "at90s2323", 2, "__AVR_AT90S2323__" },
-  { "at90s2333", 2, "__AVR_AT90S2333__" },
-  { "at90s2343", 2, "__AVR_AT90S2343__" },
-  { "attiny22",  2, "__AVR_ATtiny22__" },
-  { "attiny26",  2, "__AVR_ATtiny26__" },
-  { "at90s4414", 2, "__AVR_AT90S4414__" },
-  { "at90s4433", 2, "__AVR_AT90S4433__" },
-  { "at90s4434", 2, "__AVR_AT90S4434__" },
-  { "at90s8515", 2, "__AVR_AT90S8515__" },
-  { "at90c8534", 2, "__AVR_AT90C8534__" },
-  { "at90s8535", 2, "__AVR_AT90S8535__" },
+  { "avr2",         ARCH_AVR2, NULL },
+  { "at90s2313",    ARCH_AVR2, "__AVR_AT90S2313__" },
+  { "at90s2323",    ARCH_AVR2, "__AVR_AT90S2323__" },
+  { "at90s2333",    ARCH_AVR2, "__AVR_AT90S2333__" },
+  { "at90s2343",    ARCH_AVR2, "__AVR_AT90S2343__" },
+  { "attiny22",     ARCH_AVR2, "__AVR_ATtiny22__" },
+  { "attiny26",     ARCH_AVR2, "__AVR_ATtiny26__" },
+  { "at90s4414",    ARCH_AVR2, "__AVR_AT90S4414__" },
+  { "at90s4433",    ARCH_AVR2, "__AVR_AT90S4433__" },
+  { "at90s4434",    ARCH_AVR2, "__AVR_AT90S4434__" },
+  { "at90s8515",    ARCH_AVR2, "__AVR_AT90S8515__" },
+  { "at90c8534",    ARCH_AVR2, "__AVR_AT90C8534__" },
+  { "at90s8535",    ARCH_AVR2, "__AVR_AT90S8535__" },
     /* Classic + MOVW, <= 8K.  */
-  { "avr25",      6, NULL },
-  { "attiny13",   6, "__AVR_ATtiny13__" },
-  { "attiny2313", 6, "__AVR_ATtiny2313__" },
-  { "attiny24",   6, "__AVR_ATtiny24__" },
-  { "attiny44",   6, "__AVR_ATtiny44__" },
-  { "attiny84",   6, "__AVR_ATtiny84__" },
-  { "attiny25",   6, "__AVR_ATtiny25__" },
-  { "attiny45",   6, "__AVR_ATtiny45__" },
-  { "attiny85",   6, "__AVR_ATtiny85__" },
-  { "attiny261",  6, "__AVR_ATtiny261__" },
-  { "attiny461",  6, "__AVR_ATtiny461__" },
-  { "attiny861",  6, "__AVR_ATtiny861__" },
-  { "at86rf401",  6, "__AVR_AT86RF401__" },
+  { "avr25",        ARCH_AVR25, NULL },
+  { "attiny13",     ARCH_AVR25, "__AVR_ATtiny13__" },
+  { "attiny2313",   ARCH_AVR25, "__AVR_ATtiny2313__" },
+  { "attiny24",     ARCH_AVR25, "__AVR_ATtiny24__" },
+  { "attiny44",     ARCH_AVR25, "__AVR_ATtiny44__" },
+  { "attiny84",     ARCH_AVR25, "__AVR_ATtiny84__" },
+  { "attiny25",     ARCH_AVR25, "__AVR_ATtiny25__" },
+  { "attiny45",     ARCH_AVR25, "__AVR_ATtiny45__" },
+  { "attiny85",     ARCH_AVR25, "__AVR_ATtiny85__" },
+  { "attiny261",    ARCH_AVR25, "__AVR_ATtiny261__" },
+  { "attiny461",    ARCH_AVR25, "__AVR_ATtiny461__" },
+  { "attiny861",    ARCH_AVR25, "__AVR_ATtiny861__" },
+  { "at86rf401",    ARCH_AVR25, "__AVR_AT86RF401__" },
     /* Classic, > 8K.  */
-  { "avr3",      3, NULL },
-  { "atmega103", 3, "__AVR_ATmega103__" },
-  { "atmega603", 3, "__AVR_ATmega603__" },
-  { "at43usb320", 3, "__AVR_AT43USB320__" },
-  { "at43usb355", 3, "__AVR_AT43USB355__" },
-  { "at76c711",  3, "__AVR_AT76C711__" },
+  { "avr3",         ARCH_AVR3, NULL },
+  { "atmega103",    ARCH_AVR3, "__AVR_ATmega103__" },
+  { "atmega603",    ARCH_AVR3, "__AVR_ATmega603__" },
+  { "at43usb320",   ARCH_AVR3, "__AVR_AT43USB320__" },
+  { "at43usb355",   ARCH_AVR3, "__AVR_AT43USB355__" },
+  { "at76c711",     ARCH_AVR3, "__AVR_AT76C711__" },
     /* Enhanced, <= 8K.  */
-  { "avr4",      4, NULL },
-  { "atmega8",   4, "__AVR_ATmega8__" },
-  { "atmega48",   4, "__AVR_ATmega48__" },
-  { "atmega88",   4, "__AVR_ATmega88__" },
-  { "atmega8515", 4, "__AVR_ATmega8515__" },
-  { "atmega8535", 4, "__AVR_ATmega8535__" },
-  { "at90pwm1",  4, "__AVR_AT90PWM1__" },
-  { "at90pwm2",  4, "__AVR_AT90PWM2__" },
-  { "at90pwm3",  4, "__AVR_AT90PWM3__" },
-  { "at90usb82",   4, "__AVR_AT90USB82__" },
+  { "avr4",         ARCH_AVR4, NULL },
+  { "atmega8",      ARCH_AVR4, "__AVR_ATmega8__" },
+  { "atmega48",     ARCH_AVR4, "__AVR_ATmega48__" },
+  { "atmega88",     ARCH_AVR4, "__AVR_ATmega88__" },
+  { "atmega8515",   ARCH_AVR4, "__AVR_ATmega8515__" },
+  { "atmega8535",   ARCH_AVR4, "__AVR_ATmega8535__" },
+  { "at90pwm1",     ARCH_AVR4, "__AVR_AT90PWM1__" },
+  { "at90pwm2",     ARCH_AVR4, "__AVR_AT90PWM2__" },
+  { "at90pwm3",     ARCH_AVR4, "__AVR_AT90PWM3__" },
+  { "at90usb82",    ARCH_AVR4, "__AVR_AT90USB82__" },
     /* Enhanced, > 8K.  */
-  { "avr5",      5, NULL },
-  { "atmega16",  5, "__AVR_ATmega16__" },
-  { "atmega161", 5, "__AVR_ATmega161__" },
-  { "atmega162", 5, "__AVR_ATmega162__" },
-  { "atmega163", 5, "__AVR_ATmega163__" },
-  { "atmega164p",5, "__AVR_ATmega164P__" },
-  { "atmega165", 5, "__AVR_ATmega165__" },
-  { "atmega165p",5, "__AVR_ATmega165P__" },
-  { "atmega168", 5, "__AVR_ATmega168__" },
-  { "atmega169", 5, "__AVR_ATmega169__" },
-  { "atmega169p",5, "__AVR_ATmega169P__" },
-  { "atmega32",  5, "__AVR_ATmega32__" },
-  { "atmega323", 5, "__AVR_ATmega323__" },
-  { "atmega324p",5, "__AVR_ATmega324P__" },
-  { "atmega325", 5, "__AVR_ATmega325__" },
-  { "atmega325p",  5, "__AVR_ATmega325P__" },
-  { "atmega3250", 5, "__AVR_ATmega3250__" },
-  { "atmega3250p", 5, "__AVR_ATmega3250P__" },
-  { "atmega329", 5, "__AVR_ATmega329__" },
-  { "atmega329p",  5, "__AVR_ATmega329P__" },
-  { "atmega3290", 5, "__AVR_ATmega3290__" },
-  { "atmega3290p", 5, "__AVR_ATmega3290P__" },
-  { "atmega406", 5, "__AVR_ATmega406__" },
-  { "atmega64",  5, "__AVR_ATmega64__" },
-  { "atmega640", 5, "__AVR_ATmega640__" },
-  { "atmega644", 5, "__AVR_ATmega644__" },
-  { "atmega644p",5, "__AVR_ATmega644P__" },
-  { "atmega645", 5, "__AVR_ATmega645__" },
-  { "atmega6450", 5, "__AVR_ATmega6450__" },
-  { "atmega649", 5, "__AVR_ATmega649__" },
-  { "atmega6490", 5, "__AVR_ATmega6490__" },
-  { "atmega128", 5, "__AVR_ATmega128__" },
-  { "atmega1280",5, "__AVR_ATmega1280__" },
-  { "atmega1281",5, "__AVR_ATmega1281__" },
-  { "at90can32", 5, "__AVR_AT90CAN32__" },
-  { "at90can64", 5, "__AVR_AT90CAN64__" },
-  { "at90can128", 5, "__AVR_AT90CAN128__" },
-  { "at90usb162",  5, "__AVR_AT90USB162__" },
-  { "at90usb646", 5, "__AVR_AT90USB646__" },
-  { "at90usb647", 5, "__AVR_AT90USB647__" },
-  { "at90usb1286", 5, "__AVR_AT90USB1286__" },
-  { "at90usb1287", 5, "__AVR_AT90USB1287__" },
-  { "at94k",     5, "__AVR_AT94K__" },
+  { "avr5",         ARCH_AVR5, NULL },
+  { "atmega16",     ARCH_AVR5, "__AVR_ATmega16__" },
+  { "atmega161",    ARCH_AVR5, "__AVR_ATmega161__" },
+  { "atmega162",    ARCH_AVR5, "__AVR_ATmega162__" },
+  { "atmega163",    ARCH_AVR5, "__AVR_ATmega163__" },
+  { "atmega164p",   ARCH_AVR5, "__AVR_ATmega164P__" },
+  { "atmega165",    ARCH_AVR5, "__AVR_ATmega165__" },
+  { "atmega165p",   ARCH_AVR5, "__AVR_ATmega165P__" },
+  { "atmega168",    ARCH_AVR5, "__AVR_ATmega168__" },
+  { "atmega169",    ARCH_AVR5, "__AVR_ATmega169__" },
+  { "atmega169p",   ARCH_AVR5, "__AVR_ATmega169P__" },
+  { "atmega32",     ARCH_AVR5, "__AVR_ATmega32__" },
+  { "atmega323",    ARCH_AVR5, "__AVR_ATmega323__" },
+  { "atmega324p",   ARCH_AVR5, "__AVR_ATmega324P__" },
+  { "atmega325",    ARCH_AVR5, "__AVR_ATmega325__" },
+  { "atmega325p",   ARCH_AVR5, "__AVR_ATmega325P__" },
+  { "atmega3250",   ARCH_AVR5, "__AVR_ATmega3250__" },
+  { "atmega3250p",  ARCH_AVR5, "__AVR_ATmega3250P__" },
+  { "atmega329",    ARCH_AVR5, "__AVR_ATmega329__" },
+  { "atmega329p",   ARCH_AVR5, "__AVR_ATmega329P__" },
+  { "atmega3290",   ARCH_AVR5, "__AVR_ATmega3290__" },
+  { "atmega3290p",  ARCH_AVR5, "__AVR_ATmega3290P__" },
+  { "atmega406",    ARCH_AVR5, "__AVR_ATmega406__" },
+  { "atmega64",     ARCH_AVR5, "__AVR_ATmega64__" },
+  { "atmega640",    ARCH_AVR5, "__AVR_ATmega640__" },
+  { "atmega644",    ARCH_AVR5, "__AVR_ATmega644__" },
+  { "atmega644p",   ARCH_AVR5, "__AVR_ATmega644P__" },
+  { "atmega645",    ARCH_AVR5, "__AVR_ATmega645__" },
+  { "atmega6450",   ARCH_AVR5, "__AVR_ATmega6450__" },
+  { "atmega649",    ARCH_AVR5, "__AVR_ATmega649__" },
+  { "atmega6490",   ARCH_AVR5, "__AVR_ATmega6490__" },
+  { "atmega128",    ARCH_AVR5, "__AVR_ATmega128__" },
+  { "atmega1280",   ARCH_AVR5, "__AVR_ATmega1280__" },
+  { "atmega1281",   ARCH_AVR5, "__AVR_ATmega1281__" },
+  { "at90can32",    ARCH_AVR5, "__AVR_AT90CAN32__" },
+  { "at90can64",    ARCH_AVR5, "__AVR_AT90CAN64__" },
+  { "at90can128",   ARCH_AVR5, "__AVR_AT90CAN128__" },
+  { "at90usb162",   ARCH_AVR5, "__AVR_AT90USB162__" },
+  { "at90usb646",   ARCH_AVR5, "__AVR_AT90USB646__" },
+  { "at90usb647",   ARCH_AVR5, "__AVR_AT90USB647__" },
+  { "at90usb1286",  ARCH_AVR5, "__AVR_AT90USB1286__" },
+  { "at90usb1287",  ARCH_AVR5, "__AVR_AT90USB1287__" },
+  { "at94k",        ARCH_AVR5, "__AVR_AT94K__" },
     /* Assembler only.  */
-  { "avr1",      1, NULL },
-  { "at90s1200", 1, "__AVR_AT90S1200__" },
-  { "attiny11",  1, "__AVR_ATtiny11__" },
-  { "attiny12",  1, "__AVR_ATtiny12__" },
-  { "attiny15",  1, "__AVR_ATtiny15__" },
-  { "attiny28",  1, "__AVR_ATtiny28__" },
-  { NULL,        0, NULL }
+  { "avr1",         ARCH_AVR1, NULL },
+  { "at90s1200",    ARCH_AVR1, "__AVR_AT90S1200__" },
+  { "attiny11",     ARCH_AVR1, "__AVR_ATtiny11__" },
+  { "attiny12",     ARCH_AVR1, "__AVR_ATtiny12__" },
+  { "attiny15",     ARCH_AVR1, "__AVR_ATtiny15__" },
+  { "attiny28",     ARCH_AVR1, "__AVR_ATtiny28__" },
+  { NULL,           ARCH_UNKNOWN, NULL }
 };
 
 int avr_case_values_threshold = 30000;
index 1dba48dfe8e25a349acdafcfdd923349d2b52f34..640adadac46076c3bd4a91a029ce56e6f3908160 100644 (file)
@@ -757,9 +757,7 @@ mmcu=*:-mmcu=%*}"
   mmcu=at76*:-m avr3}\
 %{mmcu=atmega8*|\
   mmcu=atmega48|\
-  mmcu=at90pwm1|\
-  mmcu=at90pwm2|\
-  mmcu=at90pwm3:-m avr4}\
+  mmcu=at90pwm*:-m avr4}\
 %{mmcu=atmega16*|\
   mmcu=atmega32*|\
   mmcu=atmega406|\
@@ -770,18 +768,14 @@ mmcu=*:-mmcu=%*}"
   mmcu=at94k:-m avr5}\
 %{mmcu=atmega324*|\
   mmcu=atmega325*|\
-  mmcu=atmega3250*|\
   mmcu=atmega329*|\
-  mmcu=atmega3290*|\
   mmcu=atmega406|\
   mmcu=atmega48|\
   mmcu=atmega88|\
   mmcu=atmega64|\
   mmcu=atmega644*|\
-  mmcu=atmega645|\
-  mmcu=atmega6450|\
-  mmcu=atmega649|\
-  mmcu=atmega6490|\
+  mmcu=atmega645*|\
+  mmcu=atmega649*|\
   mmcu=atmega128|\
   mmcu=atmega162|\
   mmcu=atmega164*|\