about summary refs log tree commit diff
path: root/src/librustc/session/code_stats.rs
diff options
context:
space:
mode:
authorAustin Hicks <camlorn@camlorn.net>2016-11-26 14:37:15 -0500
committerAustin Hicks <camlorn@camlorn.net>2016-12-14 12:28:25 -0500
commitcfe1a776ee77697b5947849a71b411978eb23a28 (patch)
tree41e9620fa08a655756832de27f8f2ee5211c17a4 /src/librustc/session/code_stats.rs
parent025456e8a4e418813edf77bd9c1e69213276d447 (diff)
Fix -Z print-type-sizes and tests.
This was done by sorting the fields by increasing offset; as a consequence, the order of -Z print-type-sizes matches memory order not source order.
Diffstat (limited to 'src/librustc/session/code_stats.rs')
-rw-r--r--src/librustc/session/code_stats.rs7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/librustc/session/code_stats.rs b/src/librustc/session/code_stats.rs
index 8308c54d70b..a042b2abf3a 100644
--- a/src/librustc/session/code_stats.rs
+++ b/src/librustc/session/code_stats.rs
@@ -142,7 +142,12 @@ impl CodeStats {
                 max_variant_size = cmp::max(max_variant_size, size);
 
                 let mut min_offset = discr_size;
-                for field in fields {
+
+                // We want to print fields by increasing offset.
+                let mut fields = fields.clone();
+                fields.sort_by_key(|f| f.offset);
+
+                for field in fields.iter() {
                     let FieldInfo { ref name, offset, size, align } = *field;
 
                     // Include field alignment in output only if it caused padding injection