convert print-type-sizes to use start
instead of main
This avoids bringing in unwind machinery.
This commit is contained in:
parent
b452c432cd
commit
19adeaa3c6
10 changed files with 47 additions and 10 deletions
|
@ -15,7 +15,10 @@
|
||||||
// that one cannot control the sizes of these types with the same sort
|
// that one cannot control the sizes of these types with the same sort
|
||||||
// of enum-variant manipulation tricks.
|
// of enum-variant manipulation tricks.
|
||||||
|
|
||||||
pub fn main() {
|
#![feature(start)]
|
||||||
|
|
||||||
|
#[start]
|
||||||
|
fn start(_: isize, _: *const *const u8) -> isize {
|
||||||
let _byte: u8 = 0;
|
let _byte: u8 = 0;
|
||||||
let _word: usize = 0;
|
let _word: usize = 0;
|
||||||
let _tuple: (u8, usize)= (0, 0);
|
let _tuple: (u8, usize)= (0, 0);
|
||||||
|
@ -25,4 +28,6 @@ pub fn main() {
|
||||||
|
|
||||||
fn id(x: u8) -> u8 { x };
|
fn id(x: u8) -> u8 { x };
|
||||||
fn bye(_: u8) -> ! { loop { } }
|
fn bye(_: u8) -> ! { loop { } }
|
||||||
|
|
||||||
|
0
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,6 +15,8 @@
|
||||||
// monomorphized, in the MIR of the original function in which they
|
// monomorphized, in the MIR of the original function in which they
|
||||||
// occur, to have their size reported.
|
// occur, to have their size reported.
|
||||||
|
|
||||||
|
#![feature(start)]
|
||||||
|
|
||||||
// In an ad-hoc attempt to avoid the injection of unwinding code
|
// In an ad-hoc attempt to avoid the injection of unwinding code
|
||||||
// (which clutters the output of `-Z print-type-sizes` with types from
|
// (which clutters the output of `-Z print-type-sizes` with types from
|
||||||
// `unwind::libunwind`):
|
// `unwind::libunwind`):
|
||||||
|
@ -66,9 +68,11 @@ pub fn f1<T:Copy>(x: T) {
|
||||||
Pair::new(FiftyBytes::new(), FiftyBytes::new());
|
Pair::new(FiftyBytes::new(), FiftyBytes::new());
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn main() {
|
#[start]
|
||||||
|
fn start(_: isize, _: *const *const u8) -> isize {
|
||||||
let _b: Pair<u8> = Pair::new(0, 0);
|
let _b: Pair<u8> = Pair::new(0, 0);
|
||||||
let _s: Pair<SevenBytes> = Pair::new(SevenBytes::new(), SevenBytes::new());
|
let _s: Pair<SevenBytes> = Pair::new(SevenBytes::new(), SevenBytes::new());
|
||||||
let _z: ZeroSized = ZeroSized;
|
let _z: ZeroSized = ZeroSized;
|
||||||
f1::<SevenBytes>(SevenBytes::new());
|
f1::<SevenBytes>(SevenBytes::new());
|
||||||
|
0
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,6 +14,8 @@
|
||||||
// This file illustrates that when multiple structural types occur in
|
// This file illustrates that when multiple structural types occur in
|
||||||
// a function, every one of them is included in the output.
|
// a function, every one of them is included in the output.
|
||||||
|
|
||||||
|
#![feature(start)]
|
||||||
|
|
||||||
pub struct SevenBytes([u8; 7]);
|
pub struct SevenBytes([u8; 7]);
|
||||||
pub struct FiftyBytes([u8; 50]);
|
pub struct FiftyBytes([u8; 50]);
|
||||||
|
|
||||||
|
@ -22,8 +24,10 @@ pub enum Enum {
|
||||||
Large(FiftyBytes),
|
Large(FiftyBytes),
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn main() {
|
#[start]
|
||||||
|
fn start(_: isize, _: *const *const u8) -> isize {
|
||||||
let _e: Enum;
|
let _e: Enum;
|
||||||
let _f: FiftyBytes;
|
let _f: FiftyBytes;
|
||||||
let _s: SevenBytes;
|
let _s: SevenBytes;
|
||||||
|
0
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
// aligned (while on most it is 8-byte aligned) and so the resulting
|
// aligned (while on most it is 8-byte aligned) and so the resulting
|
||||||
// padding and overall computed sizes can be quite different.
|
// padding and overall computed sizes can be quite different.
|
||||||
|
|
||||||
|
#![feature(start)]
|
||||||
#![feature(nonzero)]
|
#![feature(nonzero)]
|
||||||
#![allow(dead_code)]
|
#![allow(dead_code)]
|
||||||
|
|
||||||
|
@ -76,7 +77,8 @@ pub enum Enum4<A, B, C, D> {
|
||||||
Four(D)
|
Four(D)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn main() {
|
#[start]
|
||||||
|
fn start(_: isize, _: *const *const u8) -> isize {
|
||||||
let _x: MyOption<NonZero<u32>> = Default::default();
|
let _x: MyOption<NonZero<u32>> = Default::default();
|
||||||
let _y: EmbeddedDiscr = Default::default();
|
let _y: EmbeddedDiscr = Default::default();
|
||||||
let _z: MyOption<IndirectNonZero<u32>> = Default::default();
|
let _z: MyOption<IndirectNonZero<u32>> = Default::default();
|
||||||
|
@ -87,4 +89,5 @@ pub fn main() {
|
||||||
let _e: Enum4<(), char, (), ()> = Enum4::One(());
|
let _e: Enum4<(), char, (), ()> = Enum4::One(());
|
||||||
let _f: Enum4<(), (), bool, ()> = Enum4::One(());
|
let _f: Enum4<(), (), bool, ()> = Enum4::One(());
|
||||||
let _g: Enum4<(), (), (), MyOption<u8>> = Enum4::One(());
|
let _g: Enum4<(), (), (), MyOption<u8>> = Enum4::One(());
|
||||||
|
0
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,12 +15,16 @@
|
||||||
// (even if multiple functions), it is only printed once in the
|
// (even if multiple functions), it is only printed once in the
|
||||||
// print-type-sizes output.
|
// print-type-sizes output.
|
||||||
|
|
||||||
|
#![feature(start)]
|
||||||
|
|
||||||
pub struct SevenBytes([u8; 7]);
|
pub struct SevenBytes([u8; 7]);
|
||||||
|
|
||||||
pub fn f1() {
|
pub fn f1() {
|
||||||
let _s: SevenBytes = SevenBytes([0; 7]);
|
let _s: SevenBytes = SevenBytes([0; 7]);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn main() {
|
#[start]
|
||||||
|
fn start(_: isize, _: *const *const u8) -> isize {
|
||||||
let _s: SevenBytes = SevenBytes([0; 7]);
|
let _s: SevenBytes = SevenBytes([0; 7]);
|
||||||
|
0
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
// padding and overall computed sizes can be quite different.
|
// padding and overall computed sizes can be quite different.
|
||||||
|
|
||||||
#![allow(dead_code)]
|
#![allow(dead_code)]
|
||||||
|
#![feature(start)]
|
||||||
|
|
||||||
#[derive(Default)]
|
#[derive(Default)]
|
||||||
#[repr(packed)]
|
#[repr(packed)]
|
||||||
|
@ -42,7 +43,9 @@ struct Padded {
|
||||||
d: u8,
|
d: u8,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn main() {
|
#[start]
|
||||||
|
fn start(_: isize, _: *const *const u8) -> isize {
|
||||||
let _c: Packed = Default::default();
|
let _c: Packed = Default::default();
|
||||||
let _d: Padded = Default::default();
|
let _d: Padded = Default::default();
|
||||||
|
0
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
// aligned (while on most it is 8-byte aligned) and so the resulting
|
// aligned (while on most it is 8-byte aligned) and so the resulting
|
||||||
// padding and overall computed sizes can be quite different.
|
// padding and overall computed sizes can be quite different.
|
||||||
|
|
||||||
|
#![feature(start)]
|
||||||
#![allow(dead_code)]
|
#![allow(dead_code)]
|
||||||
|
|
||||||
struct S {
|
struct S {
|
||||||
|
@ -37,4 +38,7 @@ enum E2 {
|
||||||
B(S),
|
B(S),
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() { }
|
#[start]
|
||||||
|
fn start(_: isize, _: *const *const u8) -> isize {
|
||||||
|
0
|
||||||
|
}
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
// padding and overall computed sizes can be quite different.
|
// padding and overall computed sizes can be quite different.
|
||||||
#![feature(attr_literals)]
|
#![feature(attr_literals)]
|
||||||
#![feature(repr_align)]
|
#![feature(repr_align)]
|
||||||
|
#![feature(start)]
|
||||||
#![allow(dead_code)]
|
#![allow(dead_code)]
|
||||||
|
|
||||||
#[repr(align(16))]
|
#[repr(align(16))]
|
||||||
|
@ -39,6 +40,8 @@ struct S {
|
||||||
d: i8,
|
d: i8,
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
#[start]
|
||||||
|
fn start(_: isize, _: *const *const u8) -> isize {
|
||||||
let _s: S = Default::default();
|
let _s: S = Default::default();
|
||||||
|
0
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,8 +12,11 @@
|
||||||
// must-compile-successfully
|
// must-compile-successfully
|
||||||
|
|
||||||
#![feature(never_type)]
|
#![feature(never_type)]
|
||||||
|
#![feature(start)]
|
||||||
|
|
||||||
pub fn main() {
|
#[start]
|
||||||
|
fn start(_: isize, _: *const *const u8) -> isize {
|
||||||
let _x: Option<!> = None;
|
let _x: Option<!> = None;
|
||||||
let _y: Result<u32, !> = Ok(42);
|
let _y: Result<u32, !> = Ok(42);
|
||||||
|
0
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,6 +19,8 @@
|
||||||
// 2. For an enum, the print-type-sizes output will also include the
|
// 2. For an enum, the print-type-sizes output will also include the
|
||||||
// size of each variant.
|
// size of each variant.
|
||||||
|
|
||||||
|
#![feature(start)]
|
||||||
|
|
||||||
pub struct SevenBytes([u8; 7]);
|
pub struct SevenBytes([u8; 7]);
|
||||||
pub struct FiftyBytes([u8; 50]);
|
pub struct FiftyBytes([u8; 50]);
|
||||||
|
|
||||||
|
@ -27,6 +29,8 @@ pub enum Enum {
|
||||||
Large(FiftyBytes),
|
Large(FiftyBytes),
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn main() {
|
#[start]
|
||||||
|
fn start(_: isize, _: *const *const u8) -> isize {
|
||||||
let _e: Enum;
|
let _e: Enum;
|
||||||
|
0
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue