Uh oh!
There was an error while loading. Please reload this page.
Add missing no_panic and inline annotations - #207
Conversation
gnzlbg
commented
Jul 9, 2019
The failure is expected, the bugs in these APIs haven't been fixed yet. |
0927625 to
651455dCompare651455d to
cfc016aComparegnzlbg
commented
Jul 10, 2019
This is ready, no public APIs should have panic code in release mode after this. |
alexcrichton
commented
Jul 10, 2019
Why is this adding |
gnzlbg
commented
Jul 10, 2019
All public APIs that aren't
The compiler was generating panic handling code for some of these functions in optimized builds, which is what |
alexcrichton
commented
Jul 10, 2019
But yes that's the point of a crate, to actually compile code so we don't always force all users to compile inlined code. Why would every single function here need to be
That seems like there's still a bug with panics then, and we're just papering over that with enough inlining.
That's not really fixing it I think but again just papering over it. It tweaks codegen enough that landing pads aren't always necessary here and there. |
gnzlbg
commented
Jul 10, 2019
I believed compiler-builtins is always statically linked into the binary. Isn't this the case ? |
alexcrichton
commented
Jul 11, 2019
Sorry yes what I mean with included there is via |
gnzlbg
commented
Jul 11, 2019
Oh, I thought LLVM would just emit symbols for these, and then at link time, if those symbols have LTO information, LLVM would be able to optimize through these. Obviously, this never happens when liking against the system's libm, but I am not sure I follow why this can't happen when compiling a pure-Rust libm with LTO information and linking it to the final binary via compiler-builtins. AFAICT the compiler-builtin "symbols" are just normal symbols once LTO starts. |
gnzlbg
commented
Jul 11, 2019
So I'm closing this, I'm going to try to add |
No description provided.