diff --git a/collector/benchmarks/ctfe-stress-cast/src/lib.rs b/collector/benchmarks/ctfe-stress-cast/src/lib.rs deleted file mode 100644 index 4258f9d76..000000000 --- a/collector/benchmarks/ctfe-stress-cast/src/lib.rs +++ /dev/null @@ -1,42 +0,0 @@ -#![feature(const_fn, const_let)] -#![allow(unused_must_use)] - -// Try to make CTFE actually do a lot of computation, without producing a big result. -// And without support for loops. - -macro_rules! const_repeat { - // Base case: Use 16 at the end to avoid function calls at the leaves as much as possibele. - ([16] $e: expr, $T: ty) => {{ - $e; $e; $e; $e; - $e; $e; $e; $e; - $e; $e; $e; $e; - $e; $e; $e; $e - }}; - ([1] $e: expr, $T: ty) => {{ - $e - }}; - // Recursive case: Take a 16 - ([16 $($n: tt)*] $e: expr, $T: ty) => {{ - const fn e() -> $T { const_repeat!([$($n)*] $e, $T) } - e(); e(); e(); e(); - e(); e(); e(); e(); - e(); e(); e(); e(); - e(); e(); e(); e() - }}; - // Recursive case: Take a 4 - ([4 $($n: tt)*] $e: expr, $T: ty) => {{ - const fn e() -> $T { const_repeat!([$($n)*] $e, $T) } - e(); e(); e(); e() - }}; - // Recursive case: Take a 2 - ([2 $($n: tt)*] $e: expr, $T: ty) => {{ - const fn e() -> $T { const_repeat!([$($n)*] $e, $T) } - e(); e() - }}; -} -macro_rules! expensive_static { - ($name: ident : $T: ty = $e : expr) => - (pub static $name : $T = const_repeat!([2 16 16 16 16 16] $e, $T);) -} - -expensive_static!(CHAIN: usize = 42i32 as u8 as u64 as i8 as isize as usize); diff --git a/collector/benchmarks/ctfe-stress-const-fn/Cargo.lock b/collector/benchmarks/ctfe-stress-const-fn/Cargo.lock deleted file mode 100644 index 3f3213ba3..000000000 --- a/collector/benchmarks/ctfe-stress-const-fn/Cargo.lock +++ /dev/null @@ -1,4 +0,0 @@ -[[package]] -name = "ctfe-stress" -version = "0.1.0" - diff --git a/collector/benchmarks/ctfe-stress-const-fn/Cargo.toml b/collector/benchmarks/ctfe-stress-const-fn/Cargo.toml deleted file mode 100644 index e3b83556a..000000000 --- a/collector/benchmarks/ctfe-stress-const-fn/Cargo.toml +++ /dev/null @@ -1,4 +0,0 @@ -[package] -name = "ctfe-stress" -version = "0.1.0" -authors = ["Ralf Jung "] diff --git a/collector/benchmarks/ctfe-stress-const-fn/src/lib.rs b/collector/benchmarks/ctfe-stress-const-fn/src/lib.rs deleted file mode 100644 index d65658850..000000000 --- a/collector/benchmarks/ctfe-stress-const-fn/src/lib.rs +++ /dev/null @@ -1,44 +0,0 @@ -#![feature(const_fn, const_let)] -#![allow(unused_must_use)] - -// Try to make CTFE actually do a lot of computation, without producing a big result. -// And without support for loops. - -macro_rules! const_repeat { - // Base case: Use 16 at the end to avoid function calls at the leaves as much as possibele. - ([16] $e: expr, $T: ty) => {{ - $e; $e; $e; $e; - $e; $e; $e; $e; - $e; $e; $e; $e; - $e; $e; $e; $e - }}; - ([1] $e: expr, $T: ty) => {{ - $e - }}; - // Recursive case: Take a 16 - ([16 $($n: tt)*] $e: expr, $T: ty) => {{ - const fn e() -> $T { const_repeat!([$($n)*] $e, $T) } - e(); e(); e(); e(); - e(); e(); e(); e(); - e(); e(); e(); e(); - e(); e(); e(); e() - }}; - // Recursive case: Take a 4 - ([4 $($n: tt)*] $e: expr, $T: ty) => {{ - const fn e() -> $T { const_repeat!([$($n)*] $e, $T) } - e(); e(); e(); e() - }}; - // Recursive case: Take a 2 - ([2 $($n: tt)*] $e: expr, $T: ty) => {{ - const fn e() -> $T { const_repeat!([$($n)*] $e, $T) } - e(); e() - }}; -} -macro_rules! expensive_static { - ($name: ident : $T: ty = $e : expr) => - (pub static $name : $T = const_repeat!([2 16 16 16 16 16] $e, $T);) -} - -const fn inc(i: i32) -> i32 { i + 1 } - -expensive_static!(CONST_FN_SIMPLE: i32 = inc(42)); diff --git a/collector/benchmarks/ctfe-stress-force-alloc/Cargo.lock b/collector/benchmarks/ctfe-stress-force-alloc/Cargo.lock deleted file mode 100644 index 3f3213ba3..000000000 --- a/collector/benchmarks/ctfe-stress-force-alloc/Cargo.lock +++ /dev/null @@ -1,4 +0,0 @@ -[[package]] -name = "ctfe-stress" -version = "0.1.0" - diff --git a/collector/benchmarks/ctfe-stress-force-alloc/Cargo.toml b/collector/benchmarks/ctfe-stress-force-alloc/Cargo.toml deleted file mode 100644 index e3b83556a..000000000 --- a/collector/benchmarks/ctfe-stress-force-alloc/Cargo.toml +++ /dev/null @@ -1,4 +0,0 @@ -[package] -name = "ctfe-stress" -version = "0.1.0" -authors = ["Ralf Jung "] diff --git a/collector/benchmarks/ctfe-stress-force-alloc/src/lib.rs b/collector/benchmarks/ctfe-stress-force-alloc/src/lib.rs deleted file mode 100644 index 29760c48e..000000000 --- a/collector/benchmarks/ctfe-stress-force-alloc/src/lib.rs +++ /dev/null @@ -1,42 +0,0 @@ -#![feature(const_fn, const_let)] -#![allow(unused_must_use)] - -// Try to make CTFE actually do a lot of computation, without producing a big result. -// And without support for loops. - -macro_rules! const_repeat { - // Base case: Use 16 at the end to avoid function calls at the leaves as much as possibele. - ([16] $e: expr, $T: ty) => {{ - $e; $e; $e; $e; - $e; $e; $e; $e; - $e; $e; $e; $e; - $e; $e; $e; $e - }}; - ([1] $e: expr, $T: ty) => {{ - $e - }}; - // Recursive case: Take a 16 - ([16 $($n: tt)*] $e: expr, $T: ty) => {{ - const fn e() -> $T { const_repeat!([$($n)*] $e, $T) } - e(); e(); e(); e(); - e(); e(); e(); e(); - e(); e(); e(); e(); - e(); e(); e(); e() - }}; - // Recursive case: Take a 4 - ([4 $($n: tt)*] $e: expr, $T: ty) => {{ - const fn e() -> $T { const_repeat!([$($n)*] $e, $T) } - e(); e(); e(); e() - }}; - // Recursive case: Take a 2 - ([2 $($n: tt)*] $e: expr, $T: ty) => {{ - const fn e() -> $T { const_repeat!([$($n)*] $e, $T) } - e(); e() - }}; -} -macro_rules! expensive_static { - ($name: ident : $T: ty = $e : expr) => - (pub static $name : $T = const_repeat!([2 16 16 16 16 16] $e, $T);) -} - -expensive_static!(FORCE_ALLOC: i32 = *****(&&&&&5)); diff --git a/collector/benchmarks/ctfe-stress-index-check/Cargo.lock b/collector/benchmarks/ctfe-stress-index-check/Cargo.lock deleted file mode 100644 index 3f3213ba3..000000000 --- a/collector/benchmarks/ctfe-stress-index-check/Cargo.lock +++ /dev/null @@ -1,4 +0,0 @@ -[[package]] -name = "ctfe-stress" -version = "0.1.0" - diff --git a/collector/benchmarks/ctfe-stress-index-check/Cargo.toml b/collector/benchmarks/ctfe-stress-index-check/Cargo.toml deleted file mode 100644 index e3b83556a..000000000 --- a/collector/benchmarks/ctfe-stress-index-check/Cargo.toml +++ /dev/null @@ -1,4 +0,0 @@ -[package] -name = "ctfe-stress" -version = "0.1.0" -authors = ["Ralf Jung "] diff --git a/collector/benchmarks/ctfe-stress-index-check/src/lib.rs b/collector/benchmarks/ctfe-stress-index-check/src/lib.rs deleted file mode 100644 index d3d9b410d..000000000 --- a/collector/benchmarks/ctfe-stress-index-check/src/lib.rs +++ /dev/null @@ -1,42 +0,0 @@ -#![feature(const_fn, const_let)] -#![allow(unused_must_use)] - -// Try to make CTFE actually do a lot of computation, without producing a big result. -// And without support for loops. - -macro_rules! const_repeat { - // Base case: Use 16 at the end to avoid function calls at the leaves as much as possibele. - ([16] $e: expr, $T: ty) => {{ - $e; $e; $e; $e; - $e; $e; $e; $e; - $e; $e; $e; $e; - $e; $e; $e; $e - }}; - ([1] $e: expr, $T: ty) => {{ - $e - }}; - // Recursive case: Take a 16 - ([16 $($n: tt)*] $e: expr, $T: ty) => {{ - const fn e() -> $T { const_repeat!([$($n)*] $e, $T) } - e(); e(); e(); e(); - e(); e(); e(); e(); - e(); e(); e(); e(); - e(); e(); e(); e() - }}; - // Recursive case: Take a 4 - ([4 $($n: tt)*] $e: expr, $T: ty) => {{ - const fn e() -> $T { const_repeat!([$($n)*] $e, $T) } - e(); e(); e(); e() - }}; - // Recursive case: Take a 2 - ([2 $($n: tt)*] $e: expr, $T: ty) => {{ - const fn e() -> $T { const_repeat!([$($n)*] $e, $T) } - e(); e() - }}; -} -macro_rules! expensive_static { - ($name: ident : $T: ty = $e : expr) => - (pub static $name : $T = const_repeat!([2 16 16 16 16 16] $e, $T);) -} - -expensive_static!(CHECKED_INDEX: u8 = b"foomp"[3]); diff --git a/collector/benchmarks/ctfe-stress-ops/Cargo.lock b/collector/benchmarks/ctfe-stress-ops/Cargo.lock deleted file mode 100644 index 3f3213ba3..000000000 --- a/collector/benchmarks/ctfe-stress-ops/Cargo.lock +++ /dev/null @@ -1,4 +0,0 @@ -[[package]] -name = "ctfe-stress" -version = "0.1.0" - diff --git a/collector/benchmarks/ctfe-stress-ops/Cargo.toml b/collector/benchmarks/ctfe-stress-ops/Cargo.toml deleted file mode 100644 index e3b83556a..000000000 --- a/collector/benchmarks/ctfe-stress-ops/Cargo.toml +++ /dev/null @@ -1,4 +0,0 @@ -[package] -name = "ctfe-stress" -version = "0.1.0" -authors = ["Ralf Jung "] diff --git a/collector/benchmarks/ctfe-stress-ops/src/lib.rs b/collector/benchmarks/ctfe-stress-ops/src/lib.rs deleted file mode 100644 index 2872abf3e..000000000 --- a/collector/benchmarks/ctfe-stress-ops/src/lib.rs +++ /dev/null @@ -1,42 +0,0 @@ -#![feature(const_fn, const_let)] -#![allow(unused_must_use)] - -// Try to make CTFE actually do a lot of computation, without producing a big result. -// And without support for loops. - -macro_rules! const_repeat { - // Base case: Use 16 at the end to avoid function calls at the leaves as much as possibele. - ([16] $e: expr, $T: ty) => {{ - $e; $e; $e; $e; - $e; $e; $e; $e; - $e; $e; $e; $e; - $e; $e; $e; $e - }}; - ([1] $e: expr, $T: ty) => {{ - $e - }}; - // Recursive case: Take a 16 - ([16 $($n: tt)*] $e: expr, $T: ty) => {{ - const fn e() -> $T { const_repeat!([$($n)*] $e, $T) } - e(); e(); e(); e(); - e(); e(); e(); e(); - e(); e(); e(); e(); - e(); e(); e(); e() - }}; - // Recursive case: Take a 4 - ([4 $($n: tt)*] $e: expr, $T: ty) => {{ - const fn e() -> $T { const_repeat!([$($n)*] $e, $T) } - e(); e(); e(); e() - }}; - // Recursive case: Take a 2 - ([2 $($n: tt)*] $e: expr, $T: ty) => {{ - const fn e() -> $T { const_repeat!([$($n)*] $e, $T) } - e(); e() - }}; -} -macro_rules! expensive_static { - ($name: ident : $T: ty = $e : expr) => - (pub static $name : $T = const_repeat!([16 16 16 16 16] $e, $T);) -} - -expensive_static!(OPS: i32 = ((((10 >> 1) + 3) * 7) / 2 - 12) << 4); diff --git a/collector/benchmarks/ctfe-stress-reloc/Cargo.lock b/collector/benchmarks/ctfe-stress-reloc/Cargo.lock deleted file mode 100644 index 3f3213ba3..000000000 --- a/collector/benchmarks/ctfe-stress-reloc/Cargo.lock +++ /dev/null @@ -1,4 +0,0 @@ -[[package]] -name = "ctfe-stress" -version = "0.1.0" - diff --git a/collector/benchmarks/ctfe-stress-reloc/Cargo.toml b/collector/benchmarks/ctfe-stress-reloc/Cargo.toml deleted file mode 100644 index e3b83556a..000000000 --- a/collector/benchmarks/ctfe-stress-reloc/Cargo.toml +++ /dev/null @@ -1,4 +0,0 @@ -[package] -name = "ctfe-stress" -version = "0.1.0" -authors = ["Ralf Jung "] diff --git a/collector/benchmarks/ctfe-stress-reloc/src/lib.rs b/collector/benchmarks/ctfe-stress-reloc/src/lib.rs deleted file mode 100644 index 46a03375f..000000000 --- a/collector/benchmarks/ctfe-stress-reloc/src/lib.rs +++ /dev/null @@ -1,42 +0,0 @@ -#![feature(const_fn, const_let)] -#![allow(unused_must_use)] - -// Try to make CTFE actually do a lot of computation, without producing a big result. -// And without support for loops. - -macro_rules! const_repeat { - // Base case: Use 16 at the end to avoid function calls at the leaves as much as possibele. - ([16] $e: expr, $T: ty) => {{ - $e; $e; $e; $e; - $e; $e; $e; $e; - $e; $e; $e; $e; - $e; $e; $e; $e - }}; - ([1] $e: expr, $T: ty) => {{ - $e - }}; - // Recursive case: Take a 16 - ([16 $($n: tt)*] $e: expr, $T: ty) => {{ - const fn e() -> $T { const_repeat!([$($n)*] $e, $T) } - e(); e(); e(); e(); - e(); e(); e(); e(); - e(); e(); e(); e(); - e(); e(); e(); e() - }}; - // Recursive case: Take a 4 - ([4 $($n: tt)*] $e: expr, $T: ty) => {{ - const fn e() -> $T { const_repeat!([$($n)*] $e, $T) } - e(); e(); e(); e() - }}; - // Recursive case: Take a 2 - ([2 $($n: tt)*] $e: expr, $T: ty) => {{ - const fn e() -> $T { const_repeat!([$($n)*] $e, $T) } - e(); e() - }}; -} -macro_rules! expensive_static { - ($name: ident : $T: ty = $e : expr) => - (pub static $name : $T = const_repeat!([2 16 16 16 16 16 16] $e, $T);) -} - -expensive_static!(RELOCATIONS : &'static str = "hello"); diff --git a/collector/benchmarks/ctfe-stress-unsize-slice/Cargo.lock b/collector/benchmarks/ctfe-stress-unsize-slice/Cargo.lock deleted file mode 100644 index 3f3213ba3..000000000 --- a/collector/benchmarks/ctfe-stress-unsize-slice/Cargo.lock +++ /dev/null @@ -1,4 +0,0 @@ -[[package]] -name = "ctfe-stress" -version = "0.1.0" - diff --git a/collector/benchmarks/ctfe-stress-unsize-slice/Cargo.toml b/collector/benchmarks/ctfe-stress-unsize-slice/Cargo.toml deleted file mode 100644 index e3b83556a..000000000 --- a/collector/benchmarks/ctfe-stress-unsize-slice/Cargo.toml +++ /dev/null @@ -1,4 +0,0 @@ -[package] -name = "ctfe-stress" -version = "0.1.0" -authors = ["Ralf Jung "] diff --git a/collector/benchmarks/ctfe-stress-cast/Cargo.lock b/collector/benchmarks/ctfe-stress/Cargo.lock similarity index 100% rename from collector/benchmarks/ctfe-stress-cast/Cargo.lock rename to collector/benchmarks/ctfe-stress/Cargo.lock diff --git a/collector/benchmarks/ctfe-stress-cast/Cargo.toml b/collector/benchmarks/ctfe-stress/Cargo.toml similarity index 100% rename from collector/benchmarks/ctfe-stress-cast/Cargo.toml rename to collector/benchmarks/ctfe-stress/Cargo.toml diff --git a/collector/benchmarks/ctfe-stress-unsize-slice/src/lib.rs b/collector/benchmarks/ctfe-stress/src/lib.rs similarity index 55% rename from collector/benchmarks/ctfe-stress-unsize-slice/src/lib.rs rename to collector/benchmarks/ctfe-stress/src/lib.rs index 3a8890b95..2c9dec116 100644 --- a/collector/benchmarks/ctfe-stress-unsize-slice/src/lib.rs +++ b/collector/benchmarks/ctfe-stress/src/lib.rs @@ -1,5 +1,4 @@ #![feature(const_fn, const_let)] -#![allow(unused_must_use)] // Try to make CTFE actually do a lot of computation, without producing a big result. // And without support for loops. @@ -41,8 +40,23 @@ macro_rules! const_repeat { }}; } macro_rules! expensive_static { - ($name: ident : $T: ty = $e : expr) => - (pub static $name : $T = const_repeat!([16 16 16 16 16 16] $e, $T);) + ($name: ident : $T: ty = $e : expr; $count: tt) => + (pub static $name : $T = const_repeat!($count $e, $T);) } -expensive_static!(UNSIZING: &'static [u8] = b"foo"); +pub trait Trait: Sync {} +impl Trait for u32 {} + +const fn inc(i: i32) -> i32 { i + 1 } + +// The numbers in the brackets are iteration counts. E.g., [4 16 16] means +// 4 * 16 * 16 = 2^(2+4+4) = 2^10 iterations. +expensive_static!(CAST: usize = 42i32 as u8 as u64 as i8 as isize as usize; [8 16 16 16 16]); +expensive_static!(CONST_FN: i32 = inc(42); [8 16 16 16 16]); +expensive_static!(FIELDS: &'static i32 = &("bar", 42, "foo", 3.14).1; [8 16 16 16 16]); +expensive_static!(FORCE_ALLOC: i32 = *****(&&&&&5); [8 16 16 16 16]); +expensive_static!(CHECKED_INDEX: u8 = b"foomp"[3]; [8 16 16 16 16]); +expensive_static!(OPS: i32 = ((((10 >> 1) + 3) * 7) / 2 - 12) << 4; [4 16 16 16 16]); +expensive_static!(RELOCATIONS : &'static str = "hello"; [8 16 16 16 16]); +expensive_static!(UNSIZE_SLICE: &'static [u8] = b"foo"; [4 16 16 16 16 16]); +expensive_static!(UNSIZE_TRAIT: &'static Trait = &42u32; [4 16 16 16 16 16]);