diff options
Diffstat (limited to 'tests/run-make-fulldeps/cross-lang-lto-pgo-smoketest')
5 files changed, 0 insertions, 131 deletions
diff --git a/tests/run-make-fulldeps/cross-lang-lto-pgo-smoketest/Makefile b/tests/run-make-fulldeps/cross-lang-lto-pgo-smoketest/Makefile deleted file mode 100644 index 70085d9bd..000000000 --- a/tests/run-make-fulldeps/cross-lang-lto-pgo-smoketest/Makefile +++ /dev/null @@ -1,87 +0,0 @@ -# needs-matching-clang - -# This test makes sure that cross-language inlining can be used in conjunction -# with profile-guided optimization. The test only tests that the whole workflow -# can be executed without anything crashing. It does not test whether PGO or -# xLTO have any specific effect on the generated code. - -include ../tools.mk - -COMMON_FLAGS=-Copt-level=3 -Ccodegen-units=1 - -# LLVM doesn't support instrumenting binaries that use SEH: -# https://bugs.llvm.org/show_bug.cgi?id=41279 -# -# Things work fine with -Cpanic=abort though. -ifdef IS_MSVC -COMMON_FLAGS+= -Cpanic=abort -endif - -all: cpp-executable rust-executable - -cpp-executable: - $(RUSTC) -Clinker-plugin-lto=on \ - -Cprofile-generate="$(TMPDIR)"/cpp-profdata \ - -o "$(TMPDIR)"/librustlib-xlto.a \ - $(COMMON_FLAGS) \ - ./rustlib.rs - $(CLANG) -flto=thin \ - -fprofile-generate="$(TMPDIR)"/cpp-profdata \ - -fuse-ld=lld \ - -L "$(TMPDIR)" \ - -lrustlib-xlto \ - -o "$(TMPDIR)"/cmain \ - -O3 \ - ./cmain.c - $(TMPDIR)/cmain - # Postprocess the profiling data so it can be used by the compiler - "$(LLVM_BIN_DIR)"/llvm-profdata merge \ - -o "$(TMPDIR)"/cpp-profdata/merged.profdata \ - "$(TMPDIR)"/cpp-profdata/default_*.profraw - $(RUSTC) -Clinker-plugin-lto=on \ - -Cprofile-use="$(TMPDIR)"/cpp-profdata/merged.profdata \ - -o "$(TMPDIR)"/librustlib-xlto.a \ - $(COMMON_FLAGS) \ - ./rustlib.rs - $(CLANG) -flto=thin \ - -fprofile-use="$(TMPDIR)"/cpp-profdata/merged.profdata \ - -fuse-ld=lld \ - -L "$(TMPDIR)" \ - -lrustlib-xlto \ - -o "$(TMPDIR)"/cmain \ - -O3 \ - ./cmain.c - -rust-executable: - exit - $(CLANG) ./clib.c -fprofile-generate="$(TMPDIR)"/rs-profdata -flto=thin -c -o $(TMPDIR)/clib.o -O3 - (cd $(TMPDIR); $(AR) crus ./libxyz.a ./clib.o) - $(RUSTC) -Clinker-plugin-lto=on \ - -Cprofile-generate="$(TMPDIR)"/rs-profdata \ - -L$(TMPDIR) \ - $(COMMON_FLAGS) \ - -Clinker=$(CLANG) \ - -Clink-arg=-fuse-ld=lld \ - -o $(TMPDIR)/rsmain \ - ./main.rs - $(TMPDIR)/rsmain - # Postprocess the profiling data so it can be used by the compiler - "$(LLVM_BIN_DIR)"/llvm-profdata merge \ - -o "$(TMPDIR)"/rs-profdata/merged.profdata \ - "$(TMPDIR)"/rs-profdata/default_*.profraw - $(CLANG) ./clib.c \ - -fprofile-use="$(TMPDIR)"/rs-profdata/merged.profdata \ - -flto=thin \ - -c \ - -o $(TMPDIR)/clib.o \ - -O3 - rm "$(TMPDIR)"/libxyz.a - (cd $(TMPDIR); $(AR) crus ./libxyz.a ./clib.o) - $(RUSTC) -Clinker-plugin-lto=on \ - -Cprofile-use="$(TMPDIR)"/rs-profdata/merged.profdata \ - -L$(TMPDIR) \ - $(COMMON_FLAGS) \ - -Clinker=$(CLANG) \ - -Clink-arg=-fuse-ld=lld \ - -o $(TMPDIR)/rsmain \ - ./main.rs diff --git a/tests/run-make-fulldeps/cross-lang-lto-pgo-smoketest/clib.c b/tests/run-make-fulldeps/cross-lang-lto-pgo-smoketest/clib.c deleted file mode 100644 index 90f33f24d..000000000 --- a/tests/run-make-fulldeps/cross-lang-lto-pgo-smoketest/clib.c +++ /dev/null @@ -1,9 +0,0 @@ -#include <stdint.h> - -uint32_t c_always_inlined() { - return 1234; -} - -__attribute__((noinline)) uint32_t c_never_inlined() { - return 12345; -} diff --git a/tests/run-make-fulldeps/cross-lang-lto-pgo-smoketest/cmain.c b/tests/run-make-fulldeps/cross-lang-lto-pgo-smoketest/cmain.c deleted file mode 100644 index e3f24828b..000000000 --- a/tests/run-make-fulldeps/cross-lang-lto-pgo-smoketest/cmain.c +++ /dev/null @@ -1,12 +0,0 @@ -#include <stdint.h> - -// A trivial function defined in Rust, returning a constant value. This should -// always be inlined. -uint32_t rust_always_inlined(); - - -uint32_t rust_never_inlined(); - -int main(int argc, char** argv) { - return (rust_never_inlined() + rust_always_inlined()) * 0; -} diff --git a/tests/run-make-fulldeps/cross-lang-lto-pgo-smoketest/main.rs b/tests/run-make-fulldeps/cross-lang-lto-pgo-smoketest/main.rs deleted file mode 100644 index 8129dcb85..000000000 --- a/tests/run-make-fulldeps/cross-lang-lto-pgo-smoketest/main.rs +++ /dev/null @@ -1,11 +0,0 @@ -#[link(name = "xyz")] -extern "C" { - fn c_always_inlined() -> u32; - fn c_never_inlined() -> u32; -} - -fn main() { - unsafe { - println!("blub: {}", c_always_inlined() + c_never_inlined()); - } -} diff --git a/tests/run-make-fulldeps/cross-lang-lto-pgo-smoketest/rustlib.rs b/tests/run-make-fulldeps/cross-lang-lto-pgo-smoketest/rustlib.rs deleted file mode 100644 index 8a74d74a4..000000000 --- a/tests/run-make-fulldeps/cross-lang-lto-pgo-smoketest/rustlib.rs +++ /dev/null @@ -1,12 +0,0 @@ -#![crate_type="staticlib"] - -#[no_mangle] -pub extern "C" fn rust_always_inlined() -> u32 { - 42 -} - -#[no_mangle] -#[inline(never)] -pub extern "C" fn rust_never_inlined() -> u32 { - 421 -} |