about summary refs log tree commit diff
path: root/src/librustc/ty/layout.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/librustc/ty/layout.rs')
-rw-r--r--src/librustc/ty/layout.rs8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/librustc/ty/layout.rs b/src/librustc/ty/layout.rs
index 4d74e5eed59..d905592347f 100644
--- a/src/librustc/ty/layout.rs
+++ b/src/librustc/ty/layout.rs
@@ -1541,10 +1541,10 @@ impl<'a, 'tcx> Layout {
                         discr_range: (min as u64)..=(max as u64),
                         variants
                     },
-                    fields: FieldPlacement::Arbitrary {
-                        offsets: vec![Size::from_bytes(0)],
-                        memory_index: vec![0]
-                    },
+                    // FIXME(eddyb): using `FieldPlacement::Arbitrary` here results
+                    // in lost optimizations, specifically around allocations, see
+                    // `test/codegen/{alloc-optimisation,vec-optimizes-away}.rs`.
+                    fields: FieldPlacement::Union(1),
                     abi: if discr.size(dl) == size {
                         Abi::Scalar(discr)
                     } else {