Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4b535ca2e2 | ||
|
|
842c087427 |
@@ -153,7 +153,7 @@ impl ModuleConfig {
|
||||
// `#![no_builtins]` is assumed to not participate in LTO and
|
||||
// instead goes on to generate object code.
|
||||
EmitObj::Bitcode
|
||||
} else if need_bitcode_in_object(tcx) {
|
||||
} else if need_bitcode_in_object(tcx) || sess.target.requires_lto {
|
||||
EmitObj::ObjectCode(BitcodeSection::Full)
|
||||
} else {
|
||||
EmitObj::ObjectCode(BitcodeSection::None)
|
||||
|
||||
@@ -59,11 +59,6 @@ Build the library as `cdylib`:
|
||||
# Cargo.toml
|
||||
[lib]
|
||||
crate-type = ["cdylib"]
|
||||
|
||||
[profile.dev]
|
||||
lto = true # LTO must be explicitly enabled for now
|
||||
[profile.release]
|
||||
lto = true
|
||||
```
|
||||
|
||||
The target-cpu must be from the list [supported by LLVM] (or printed with `rustc --target amdgcn-amd-amdhsa --print target-cpus`).
|
||||
|
||||
8
tests/run-make-cargo/amdgpu-lto/Cargo.toml
Normal file
8
tests/run-make-cargo/amdgpu-lto/Cargo.toml
Normal file
@@ -0,0 +1,8 @@
|
||||
[package]
|
||||
name = "amdgpu_lto"
|
||||
version = "0.1.0"
|
||||
edition = "2024"
|
||||
|
||||
[lib]
|
||||
path = "lib.rs"
|
||||
crate-type = ["cdylib"]
|
||||
15
tests/run-make-cargo/amdgpu-lto/lib.rs
Normal file
15
tests/run-make-cargo/amdgpu-lto/lib.rs
Normal file
@@ -0,0 +1,15 @@
|
||||
#![feature(abi_gpu_kernel)]
|
||||
#![no_std]
|
||||
|
||||
#[panic_handler]
|
||||
fn panic_handler(_info: &core::panic::PanicInfo) -> ! {
|
||||
loop {}
|
||||
}
|
||||
|
||||
#[unsafe(no_mangle)]
|
||||
fn foo(a: i32, b: i32) -> i32 {
|
||||
a + b
|
||||
}
|
||||
|
||||
#[unsafe(no_mangle)]
|
||||
extern "gpu-kernel" fn kernel() {}
|
||||
28
tests/run-make-cargo/amdgpu-lto/rmake.rs
Normal file
28
tests/run-make-cargo/amdgpu-lto/rmake.rs
Normal file
@@ -0,0 +1,28 @@
|
||||
// Check that compiling for the amdgpu target which needs LTO works with a default
|
||||
// cargo configuration.
|
||||
|
||||
//@ needs-llvm-components: amdgpu
|
||||
//@ needs-rust-lld
|
||||
|
||||
#![deny(warnings)]
|
||||
|
||||
use run_make_support::{cargo, path};
|
||||
|
||||
fn main() {
|
||||
let target_dir = path("target");
|
||||
|
||||
cargo()
|
||||
.args(&[
|
||||
"build",
|
||||
"--release",
|
||||
"--lib",
|
||||
"--manifest-path",
|
||||
"Cargo.toml",
|
||||
"-Zbuild-std=core",
|
||||
"--target",
|
||||
"amdgcn-amd-amdhsa",
|
||||
])
|
||||
.env("RUSTFLAGS", "-Ctarget-cpu=gfx900")
|
||||
.env("CARGO_TARGET_DIR", &target_dir)
|
||||
.run();
|
||||
}
|
||||
Reference in New Issue
Block a user