From ffa34ae328c2132cf589b4f2937b507d3331add4 Mon Sep 17 00:00:00 2001 From: bjorn3 Date: Fri, 26 Jul 2019 11:45:01 +0200 Subject: [PATCH] Remove unnecessary changes --- build_sysroot/Cargo.toml | 7 ++++-- build_sysroot/build_sysroot.sh | 2 ++ build_sysroot/compiler-builtins | 1 - example/alloc_example.rs | 25 ++++++++++++++++--- example/mini_core.rs | 8 ------ test.sh | 43 +++++++++++++++++++++++++++++++++ 6 files changed, 71 insertions(+), 15 deletions(-) delete mode 160000 build_sysroot/compiler-builtins diff --git a/build_sysroot/Cargo.toml b/build_sysroot/Cargo.toml index af199c757e0..90d245522f6 100644 --- a/build_sysroot/Cargo.toml +++ b/build_sysroot/Cargo.toml @@ -5,12 +5,15 @@ version = "0.0.0" [dependencies] core = { path = "./sysroot_src/src/libcore" } -compiler_builtins = { version = "0.1", features = ["rustc-dep-of-std"] } +compiler_builtins = "0.1" +alloc = { path = "./sysroot_src/src/liballoc" } +std = { path = "./sysroot_src/src/libstd" } + +alloc_system = { path = "./alloc_system" } [patch.crates-io] rustc-std-workspace-core = { path = "./sysroot_src/src/tools/rustc-std-workspace-core" } rustc-std-workspace-alloc = { path = "./rustc-std-workspace-alloc" } -compiler_builtins = { path = "./compiler-builtins" } [profile.release] debug = true diff --git a/build_sysroot/build_sysroot.sh b/build_sysroot/build_sysroot.sh index ea5e4a169e5..57752c402c5 100755 --- a/build_sysroot/build_sysroot.sh +++ b/build_sysroot/build_sysroot.sh @@ -4,6 +4,8 @@ cd $(dirname "$0") # Cleanup for previous run # v Clean target dir except for build scripts and incremental cache +rm -r target/*/{debug,release}/{build,deps,examples,libsysroot*,native} || true +rm Cargo.lock 2>/dev/null || true rm -r sysroot 2>/dev/null || true # FIXME find a better way to get the target triple diff --git a/build_sysroot/compiler-builtins b/build_sysroot/compiler-builtins deleted file mode 160000 index 36da64f20e9..00000000000 --- a/build_sysroot/compiler-builtins +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 36da64f20e96206ac279f700586817c8abe3bdf8 diff --git a/example/alloc_example.rs b/example/alloc_example.rs index 497f5fbdb2d..20a8642cbd1 100644 --- a/example/alloc_example.rs +++ b/example/alloc_example.rs @@ -1,6 +1,16 @@ -#![feature(start, box_syntax, core_intrinsics, alloc_error_handler)] +#![feature(start, box_syntax, alloc_system, core_intrinsics, alloc_prelude, alloc_error_handler)] #![no_std] +extern crate alloc; +extern crate alloc_system; + +use alloc::prelude::v1::*; + +use alloc_system::System; + +#[global_allocator] +static ALLOC: System = System; + #[link(name = "c")] extern "C" { fn puts(s: *const u8); @@ -13,12 +23,19 @@ fn panic_handler(_: &core::panic::PanicInfo) -> ! { } } +#[alloc_error_handler] +fn alloc_error_handler(_: alloc::alloc::Layout) -> ! { + unsafe { + core::intrinsics::abort(); + } +} + #[start] fn main(_argc: isize, _argv: *const *const u8) -> isize { - extern "C" { - fn __rust_u128_mulo(a: u128, b: u128) -> (u128, bool); + let world: Box<&str> = box "Hello World!\0"; + unsafe { + puts(*world as *const str as *const u8); } - assert_eq!(unsafe { __rust_u128_mulo(353985398u128, 932490u128).0 }, 330087843781020u128); 0 } diff --git a/example/mini_core.rs b/example/mini_core.rs index 191f465fb88..069a930e0a2 100644 --- a/example/mini_core.rs +++ b/example/mini_core.rs @@ -318,14 +318,6 @@ fn neg(self) -> i16 { } } -impl Neg for i128 { - type Output = i128; - - fn neg(self) -> i128 { - -self - } -} - impl Neg for isize { type Output = isize; diff --git a/test.sh b/test.sh index 2b8f9ad733b..1dfbf924754 100755 --- a/test.sh +++ b/test.sh @@ -4,9 +4,52 @@ source config.sh rm -r target/out || true mkdir -p target/out/clif +echo "[BUILD] mini_core" +$RUSTC example/mini_core.rs --crate-name mini_core --crate-type dylib + +echo "[BUILD] example" +$RUSTC example/example.rs --crate-type lib + +echo "[JIT] mini_core_hello_world" +SHOULD_RUN=1 JIT_ARGS="abc bcd" $RUSTC --crate-type bin example/mini_core_hello_world.rs --cfg jit + +echo "[AOT] mini_core_hello_world" +$RUSTC example/mini_core_hello_world.rs --crate-name mini_core_hello_world --crate-type bin +./target/out/mini_core_hello_world abc bcd + +echo "[AOT] arbitrary_self_types_pointers_and_wrappers" +$RUSTC example/arbitrary_self_types_pointers_and_wrappers.rs --crate-name arbitrary_self_types_pointers_and_wrappers --crate-type bin +./target/out/arbitrary_self_types_pointers_and_wrappers + echo "[BUILD] sysroot" time ./build_sysroot/build_sysroot.sh echo "[BUILD+RUN] alloc_example" $RUSTC example/alloc_example.rs --crate-type bin ./target/out/alloc_example + +echo "[BUILD+RUN] std_example" +$RUSTC example/std_example.rs --crate-type bin +./target/out/std_example + +echo "[BUILD] mod_bench" +$RUSTC example/mod_bench.rs --crate-type bin + +# FIXME linker gives multiple definitions error on Linux +#echo "[BUILD] sysroot in release mode" +#./build_sysroot/build_sysroot.sh --release + +COMPILE_MOD_BENCH_INLINE="$RUSTC example/mod_bench.rs --crate-type bin -Zmir-opt-level=3 -O --crate-name mod_bench_inline" +COMPILE_MOD_BENCH_LLVM_0="rustc example/mod_bench.rs --crate-type bin -Copt-level=0 -o target/out/mod_bench_llvm_0 -Cpanic=abort" +COMPILE_MOD_BENCH_LLVM_1="rustc example/mod_bench.rs --crate-type bin -Copt-level=1 -o target/out/mod_bench_llvm_1 -Cpanic=abort" +COMPILE_MOD_BENCH_LLVM_2="rustc example/mod_bench.rs --crate-type bin -Copt-level=2 -o target/out/mod_bench_llvm_2 -Cpanic=abort" +COMPILE_MOD_BENCH_LLVM_3="rustc example/mod_bench.rs --crate-type bin -Copt-level=3 -o target/out/mod_bench_llvm_3 -Cpanic=abort" + +# Use 100 runs, because a single compilations doesn't take more than ~150ms, so it isn't very slow +hyperfine --runs 100 "$COMPILE_MOD_BENCH_INLINE" "$COMPILE_MOD_BENCH_LLVM_0" "$COMPILE_MOD_BENCH_LLVM_1" "$COMPILE_MOD_BENCH_LLVM_2" "$COMPILE_MOD_BENCH_LLVM_3" + +echo +echo "[Bench] mod_bench" +hyperfine ./target/out/mod_bench{,_inline} ./target/out/mod_bench_llvm_* + +cat target/out/log.txt | sort | uniq -c