diff options
| author | Niko Matsakis <niko@alum.mit.edu> | 2017-12-05 05:00:35 -0500 |
|---|---|---|
| committer | Bastian Köcher <git@kchr.de> | 2017-12-26 12:26:39 +0100 |
| commit | b452c432cd16e7d71c8311a574b0dcbbb66a6583 (patch) | |
| tree | 35ad35187d39eea673858e17c87352a97dbb7283 | |
| parent | d7918fb2e889c5ccb58ab8b97d2581cc763f2306 (diff) | |
| download | rust-b452c432cd16e7d71c8311a574b0dcbbb66a6583.tar.gz rust-b452c432cd16e7d71c8311a574b0dcbbb66a6583.zip | |
avoid ICE when fields are not laid out in order
| -rw-r--r-- | src/librustc/session/code_stats.rs | 18 |
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); |
