+2018-04-17  Tom Tromey  <tom@tromey.com>
+
+       * dwarf2read.c (quirk_rust_enum): Conditionally drop the
+       discriminant field.
+
 2018-04-17  Tom Tromey  <tom@tromey.com>
 
        * dwarf2read.c (quirk_rust_enum): Handle unions correctly.
 
          if (iter != discriminant_map.end ())
            disc->discriminants[i] = iter->second;
 
-         /* Remove the discriminant field.  */
+         /* Remove the discriminant field, if it exists.  */
          struct type *sub_type = TYPE_FIELD_TYPE (union_type, i);
-         --TYPE_NFIELDS (sub_type);
-         ++TYPE_FIELDS (sub_type);
+         if (TYPE_NFIELDS (sub_type) > 0)
+           {
+             --TYPE_NFIELDS (sub_type);
+             ++TYPE_FIELDS (sub_type);
+           }
          TYPE_FIELD_NAME (union_type, i) = variant_name;
          TYPE_NAME (sub_type)
            = rust_fully_qualify (&objfile->objfile_obstack,