I want to use https://rust.godbolt.org to see the assembly output of this function:
fn add(a: u8, b: u8) -> u8 {
a + b
}
Pasting this on the website works fine, but shows a lot of assembly. This is not unsurprising, given that rustc
compiles my code in debug mode by default. When I compile in release mode by passing -O
to the compiler, there is no output at all!
What am I doing wrong? Why does the Rust compiler remove everything in release mode?
Godbolt compiles your Rust code as a library crate by passing
--crate-type=lib
to the compiler. And code from a library is only useful if it's public. So in your case, youradd()
function is private and is removed from the compiler completely. The solution is rather simple:Make your function public by adding
pub
to it. Now the compiler won't remove the function, since it is part of the public interface of your library.