From b452c432cd16e7d71c8311a574b0dcbbb66a6583 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Tue, 5 Dec 2017 05:00:35 -0500 Subject: [PATCH] avoid ICE when fields are not laid out in order --- src/librustc/session/code_stats.rs | 18 +++++++++++++----- 1 file 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);