diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 046c1efe67952007b3875d5b418302adf092b45a..264f65f3294b9996d07493409fb1cc408c5cc4a2 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2009-07-17  Anatoly Sokolov  <aesok@post.ru>
+
+	* config/avr/avr-devices.c (avr_mcu_t): Add atmega8u2, atmega16u2 and
+	atmega32u2 devices.
+	* config/avr/t-avr (MULTILIB_MATCHES): (Ditto.).
+
 2009-07-17  Richard Guenther  <rguenther@suse.de>
 
 	PR c/40401
diff --git a/gcc/config/avr/avr-devices.c b/gcc/config/avr/avr-devices.c
index f422b4e78769fa37fb14262c5fabd595ecb57a62..ad58772b2a1daebdc8225e3e7fe4618dadb9ce44 100755
--- a/gcc/config/avr/avr-devices.c
+++ b/gcc/config/avr/avr-devices.c
@@ -93,6 +93,9 @@ const struct mcu_type_s avr_mcu_types[] = {
   { "avr35",                ARCH_AVR35, NULL,                       0, 0x0100, "usb162" },
   { "at90usb82",            ARCH_AVR35, "__AVR_AT90USB82__",        0, 0x0100, "usb82" },
   { "at90usb162",           ARCH_AVR35, "__AVR_AT90USB162__",       0, 0x0100, "usb162" },
+  { "atmega8u2",            ARCH_AVR35, "__AVR_ATmega8U2__",        0, 0x0100, "m8u2" },
+  { "atmega16u2",           ARCH_AVR35, "__AVR_ATmega16U2__",       0, 0x0100, "m16u2" },
+  { "atmega32u2",           ARCH_AVR35, "__AVR_ATmega32U2__",       0, 0x0100, "m32u2" },
   { "attiny167",            ARCH_AVR35, "__AVR_ATtiny167__",        0, 0x0100, "tn167" },
   { "attiny327",            ARCH_AVR35, "__AVR_ATtiny327__",        0, 0x0100, "tn327" },
     /* Enhanced, <= 8K.  */
diff --git a/gcc/config/avr/t-avr b/gcc/config/avr/t-avr
index c27118e22d46a1b305f0a4ff38d719c7c55cea3f..58656179b8a2b2ad43c0530992e193f65a9c40ec 100644
--- a/gcc/config/avr/t-avr
+++ b/gcc/config/avr/t-avr
@@ -94,6 +94,9 @@ MULTILIB_MATCHES = \
 	mmcu?avr31=mmcu?at43usb320 \
 	mmcu?avr35=mmcu?at90usb82 \
 	mmcu?avr35=mmcu?at90usb162 \
+	mmcu?avr35=mmcu?atmega8u2 \
+	mmcu?avr35=mmcu?atmega16u2 \
+	mmcu?avr35=mmcu?atmega32u2 \
 	mmcu?avr35=mmcu?attiny167 \
 	mmcu?avr35=mmcu?attiny327 \
 	mmcu?avr4=mmcu?atmega48 \