This project shows how to inline a call to C function from Rust.
Build with cargo:
CC=clang-9 RUSTFLAGS="-Clinker-plugin-lto -Clinker=clang-9 -Clink-arg=-fuse-ld=lld-9" cargo build --release
# binary: ./target/release/xlangltoOr build without cargo:
clang-9 mul.c -flto=thin -c -O2
ar crs libmul.a mul.o
rustc -Clinker-plugin-lto -L. -Copt-level=2 -Clinker=clang-9 -Clink-arg=-fuse-ld=lld-9 src/main.rs -o xlanglto
# binary: ./xlangltoCross-language LTO will result in an inline call to C function:
$ objdump -d ./target/release/xlanglto | grep "<multiply>:" -A3
000000000002eda0 <multiply>:
2eda0: 89 f8 mov %edi,%eax
2eda2: 0f af c6 imul %esi,%eax
2eda5: c3 retqclang-9lld-9rustc 1.42.0