reduce rightward drift, add precondition comment
diff --git a/src/librustc_mir/transform/deaggregator.rs b/src/librustc_mir/transform/deaggregator.rs
index ae91123..fccd4a6 100644
--- a/src/librustc_mir/transform/deaggregator.rs
+++ b/src/librustc_mir/transform/deaggregator.rs
@@ -34,6 +34,8 @@
 
         // Do not trigger on constants.  Could be revised in future
         if let MirSource::Fn(_) = source {} else { return; }
+        // In fact, we might not want to trigger in other cases.
+        // Ex: when we could use SROA.  See issue #35259
 
         let mut curr: usize = 0;
         for bb in mir.basic_blocks_mut() {
@@ -90,21 +92,24 @@
     for i in curr..statements.len() {
         let ref statement = statements[i];
         let StatementKind::Assign(_, ref rhs) = statement.kind;
-        if let &Rvalue::Aggregate(ref kind, ref operands) = rhs {
-            if let &AggregateKind::Adt(adt_def, variant, _) = kind {
-                if operands.len() > 0 { // don't deaggregate ()
-                    if adt_def.variants.len() > 1 {
-                        // only deaggrate structs for now
-                        continue;
-                    }
-                    debug!("getting variant {:?}", variant);
-                    debug!("for adt_def {:?}", adt_def);
-                    let variant_def = &adt_def.variants[variant];
-                    if variant_def.kind == VariantKind::Struct {
-                        return Some(i);
-                    }
-                }
-            }
+        let (kind, operands) = match rhs {
+            &Rvalue::Aggregate(ref kind, ref operands) => (kind, operands),
+            _ => continue,
+        };
+        let (adt_def, variant) = match kind {
+            &AggregateKind::Adt(adt_def, variant, _) => (adt_def, variant),
+            _ => continue,
+        };
+        if operands.len() == 0 || adt_def.variants.len() > 1 {
+            // don't deaggregate ()
+            // don't deaggregate enums ... for now
+            continue;
+        }
+        debug!("getting variant {:?}", variant);
+        debug!("for adt_def {:?}", adt_def);
+        let variant_def = &adt_def.variants[variant];
+        if variant_def.kind == VariantKind::Struct {
+            return Some(i);
         }
     };
     None