diff --git a/build_sysroot/Cargo.toml b/build_sysroot/Cargo.toml index 532216ba851..af199c757e0 100644 --- a/build_sysroot/Cargo.toml +++ b/build_sysroot/Cargo.toml @@ -5,16 +5,12 @@ version = "0.0.0" [dependencies] core = { path = "./sysroot_src/src/libcore" } -compiler_builtins = "0.1" -alloc = { path = "./sysroot_src/src/liballoc" } -std = { path = "./sysroot_src/src/libstd" } - -alloc_system = { path = "./alloc_system" } +compiler_builtins = { version = "0.1", features = ["rustc-dep-of-std"] } [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" } +compiler_builtins = { path = "./compiler-builtins" } [profile.release] debug = true diff --git a/build_sysroot/build_sysroot.sh b/build_sysroot/build_sysroot.sh index 57752c402c5..ea5e4a169e5 100755 --- a/build_sysroot/build_sysroot.sh +++ b/build_sysroot/build_sysroot.sh @@ -4,8 +4,6 @@ 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 new file mode 160000 index 00000000000..36da64f20e9 --- /dev/null +++ b/build_sysroot/compiler-builtins @@ -0,0 +1 @@ +Subproject commit 36da64f20e96206ac279f700586817c8abe3bdf8 diff --git a/build_sysroot/compiler_builtins/Cargo.toml b/build_sysroot/compiler_builtins/Cargo.toml deleted file mode 100644 index 724a637a201..00000000000 --- a/build_sysroot/compiler_builtins/Cargo.toml +++ /dev/null @@ -1,20 +0,0 @@ -[package] -name = "compiler_builtins" -# Make sure the `compiler_builtins` from crates.io doesn't take precedence over this -# replacement by specifying a higher version than the one on crates.io. -version = "0.1.100" -authors = ["bjorn3 "] -edition = "2018" - -[lib] -name = "compiler_builtins" -path = "lib.rs" -test = false -doc = false - -[dependencies] -core = { path = "../sysroot_src/src/libcore" } - -[features] -rustc-dep-of-std = [] -c = [] diff --git a/build_sysroot/compiler_builtins/lib.rs b/build_sysroot/compiler_builtins/lib.rs deleted file mode 100644 index 79a54a3a4b8..00000000000 --- a/build_sysroot/compiler_builtins/lib.rs +++ /dev/null @@ -1,9 +0,0 @@ -#![feature(compiler_builtins, staged_api)] -#![compiler_builtins] -#![no_std] - -#![unstable( - feature = "compiler_builtins_lib", - reason = "Compiler builtins. Will never become stable.", - issue = "0" -)] diff --git a/example/alloc_example.rs b/example/alloc_example.rs index 20a8642cbd1..497f5fbdb2d 100644 --- a/example/alloc_example.rs +++ b/example/alloc_example.rs @@ -1,16 +1,6 @@ -#![feature(start, box_syntax, alloc_system, core_intrinsics, alloc_prelude, alloc_error_handler)] +#![feature(start, box_syntax, core_intrinsics, 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); @@ -23,19 +13,12 @@ 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 { - let world: Box<&str> = box "Hello World!\0"; - unsafe { - puts(*world as *const str as *const u8); + extern "C" { + fn __rust_u128_mulo(a: u128, b: u128) -> (u128, bool); } + assert_eq!(unsafe { __rust_u128_mulo(353985398u128, 932490u128).0 }, 330087843781020u128); 0 } diff --git a/src/lib.rs b/src/lib.rs index df53d741a75..8a4e79d544b 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -243,6 +243,8 @@ fn build_isa(sess: &Session) -> Box { "false" }).unwrap(); + flags_builder.set("opt_level", "best").unwrap(); + // FIXME enable again when https://github.com/CraneStation/cranelift/issues/664 is fixed /* use rustc::session::config::OptLevel; diff --git a/test.sh b/test.sh index 1dfbf924754..2b8f9ad733b 100755 --- a/test.sh +++ b/test.sh @@ -4,52 +4,9 @@ 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