Re: Dead-code removal of unused Rust FFI exports

2018-08-30 Thread Mike Hommey
On Thu, Aug 30, 2018 at 10:21:09AM -0500, Tom Ritter wrote: > CFI vcall requires one to specify a -fvisibility flag on the command line, > with hidden being the preffered. We set visibility explicitly in some > difficult-to-quickly-identify ways, and adding -fvisibility=hidden > triggered issues

Re: Dead-code removal of unused Rust FFI exports

2018-08-30 Thread Tom Ritter
CFI vcall requires one to specify a -fvisibility flag on the command line, with hidden being the preffered. We set visibility explicitly in some difficult-to-quickly-identify ways, and adding -fvisibility=hidden triggered issues with NSS (as well as apparently being redundant to what we currently

Re: Dead-code removal of unused Rust FFI exports

2018-08-30 Thread Ted Mielczarek
I thought we had filed a Rust issue on this but apparently not. There's some good discussion in this issue: https://github.com/rust-lang/rust/issues/37530 For Firefox, simply having an equivalent to `-fvisilbility=hidden` so that all the symbols in the generated static library are hidden would

Re: Dead-code removal of unused Rust FFI exports

2018-08-30 Thread Michael Woerister
For some background: The Rust compiler will mark everything as `hidden` in LLVM IR unless it is exported via a C interface (via either #[no_mangle] or #[export_name]). So the FFI symbols in gkrust will have default visibility. LLD will thus probably retain and re-export them, even if they are not

Re: Dead-code removal of unused Rust FFI exports

2018-08-29 Thread Henri Sivonen
On Tue, Aug 28, 2018 at 4:56 PM, Till Schneidereit wrote: > On Tue, Aug 28, 2018 at 3:20 PM Mike Hommey wrote: >> We don't LTO across languages on any platform yet. Rust is LTOed on all >> platforms, which removes a bunch of its symbols. Everything that is >> exposed for C/C++ from Rust, though,

Re: Dead-code removal of unused Rust FFI exports

2018-08-28 Thread Till Schneidereit
CC'ing mw, who is working on cross-language LTO. On Tue, Aug 28, 2018 at 3:20 PM Mike Hommey wrote: > On Tue, Aug 28, 2018 at 09:14:02AM -0400, Jeff Muizelaar wrote: > > We don't LTO yet on Mac. > > We don't LTO across languages on any platform yet. Rust is LTOed on all > platforms, which

Re: Dead-code removal of unused Rust FFI exports

2018-08-28 Thread Mike Hommey
On Tue, Aug 28, 2018 at 09:14:02AM -0400, Jeff Muizelaar wrote: > We don't LTO yet on Mac. We don't LTO across languages on any platform yet. Rust is LTOed on all platforms, which removes a bunch of its symbols. Everything that is exposed for C/C++ from Rust, though, is left alone. That's likely

Re: Dead-code removal of unused Rust FFI exports

2018-08-28 Thread Jeff Muizelaar
We don't LTO yet on Mac. -Jeff On Tue, Aug 28, 2018 at 5:17 AM, Emilio Cobos Álvarez wrote: > > > On 8/28/18 9:35 AM, Henri Sivonen wrote: >> >> Does some lld mechanism successfully remove dead code when gkrust >> exports some FFI function that the rest of Gecko never ends up >> calling? > > >

Re: Dead-code removal of unused Rust FFI exports

2018-08-28 Thread Emilio Cobos Álvarez
On 8/28/18 9:35 AM, Henri Sivonen wrote: Does some lld mechanism successfully remove dead code when gkrust exports some FFI function that the rest of Gecko never ends up calling? I would expect LTO to get rid of it, but haven't checked myself. I.e. in terms of code size, is it OK to

Dead-code removal of unused Rust FFI exports

2018-08-28 Thread Henri Sivonen
Does some lld mechanism successfully remove dead code when gkrust exports some FFI function that the rest of Gecko never ends up calling? I.e. in terms of code size, is it OK to vendor an FFI-exposing Rust crate where not every FFI function is used (at least right away)? -- Henri Sivonen