about summary refs log tree commit diff
diff options
context:
space:
mode:
authorNiko Matsakis <niko@alum.mit.edu>2017-12-05 05:00:35 -0500
committerBastian Köcher <git@kchr.de>2017-12-26 12:26:39 +0100
commitb452c432cd16e7d71c8311a574b0dcbbb66a6583 (patch)
tree35ad35187d39eea673858e17c87352a97dbb7283
parentd7918fb2e889c5ccb58ab8b97d2581cc763f2306 (diff)
downloadrust-b452c432cd16e7d71c8311a574b0dcbbb66a6583.tar.gz
rust-b452c432cd16e7d71c8311a574b0dcbbb66a6583.zip
avoid ICE when fields are not laid out in order
-rw-r--r--src/librustc/session/code_stats.rs18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/librustc/session/code_stats.rs b/src/librustc/session/code_stats.rs
index 118b84113a0..64f405e0f24 100644
--- a/src/librustc/session/code_stats.rs
+++ b/src/librustc/session/code_stats.rs
@@ -155,11 +155,19 @@ impl CodeStats {
 
                     // Include field alignment in output only if it caused padding injection
                     if min_offset != offset {
-                        let pad = offset - min_offset;
-                        println!("print-type-size {}padding: {} bytes",
-                                 indent, pad);
-                        println!("print-type-size {}field `.{}`: {} bytes, alignment: {} bytes",
-                                 indent, name, size, align);
+                        if offset > min_offset {
+                            let pad = offset - min_offset;
+                            println!("print-type-size {}padding: {} bytes",
+                                     indent, pad);
+                            println!("print-type-size {}field `.{}`: {} bytes, \
+                                      alignment: {} bytes",
+                                     indent, name, size, align);
+                        } else {
+                            println!("print-type-size {}field `.{}`: {} bytes, \
+                                      offset: {} bytes, \
+                                      alignment: {} bytes",
+                                     indent, name, size, offset, align);
+                        }
                     } else {
                         println!("print-type-size {}field `.{}`: {} bytes",
                                  indent, name, size);