diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog
index af83cd24fce299c14ed38ca4d132e8480116eecd..ae9f862fe3056bc7870525885fccce303d25882b 100644
--- a/gcc/c/ChangeLog
+++ b/gcc/c/ChangeLog
@@ -1,3 +1,9 @@
+2015-06-11  Jan Hubicka  <hubicka@ucw.cz>
+
+	PR middle-end/66325
+	* c-decl.c (start_enum): Set TYPE_PACKED consistently among type
+	variants.
+
 2015-06-11  Pierre-Marie de Rodat  <derodat@adacore.com>
 
 	* c-decl.c (pop_scope): Register the main translation unit
diff --git a/gcc/c/c-decl.c b/gcc/c/c-decl.c
index 3fde22fba94831bccbb9d36b17c811a052c4786a..b124feb37d67170aa7fe371afa4944b9bd25b4e6 100644
--- a/gcc/c/c-decl.c
+++ b/gcc/c/c-decl.c
@@ -7947,7 +7947,8 @@ start_enum (location_t loc, struct c_enum_contents *the_enum, tree name)
   the_enum->enum_overflow = 0;
 
   if (flag_short_enums)
-    TYPE_PACKED (enumtype) = 1;
+    for (tree v = TYPE_MAIN_VARIANT (enumtype); v; v = TYPE_NEXT_VARIANT (v))
+      TYPE_PACKED (v) = 1;
 
   /* FIXME: This will issue a warning for a use of a type defined
      within sizeof in a statement expr.  This is not terribly serious