search for: woerister

Displaying 7 results from an estimated 7 matches for "woerister".

2019 Sep 24
3
PGO is ineffective for Rust - but why?
...r of branch misses by more than 50%. For the medium sized benchmark, however, the PGO version has slightly *more* branch misses. This seems to indicate that there is still something wrong. I will further investigate. [1] https://github.com/rust-lang/cargo/issues/7416 [2] https://github.com/michaelwoerister/rust-pgo-test-programs/tree/master/branch_weights/ On Tue, Sep 17, 2019 at 6:16 PM Xinliang David Li <xinliangli at gmail.com> wrote: > > You can check the difference of input args and object files to the linker. > > Regarding gnu ld, it is possible that it triggers another bug...
2019 Sep 17
2
PGO is ineffective for Rust - but why?
Interestingly, a C version of the same test program [1] compiled with Clang 8 does not have any problems with GNU ld: The `__llvm_prf_data` section is the same size for all three linkers. It must be something specific to the Rust compiler that's going wrong here. [1] https://github.com/michaelwoerister/rust-pgo-test-programs/tree/master/cpp_branch_weights On Tue, Sep 17, 2019 at 3:26 PM Michael Woerister <mwoerister at mozilla.com> wrote: > > > Can you clarify if performance difference is caused by using different linkers at instrumentation build? > > Yes, good observation!...
2019 Sep 16
2
PGO is ineffective for Rust - but why?
...you mean GNU ld? I know GNU ld does "work" with LLVM's gold plugin, but it's an untested combination and not recommended. I wouldn't be surprised if there were some issues around it not passing necessary info to the gold plugin. Teresa On Mon, Sep 16, 2019 at 8:41 AM Michael Woerister <mwoerister at mozilla.com> wrote: > So one interesting observation has already come out of this: I > confirmed that `rustc` indeed uses `-ffunction-sections` and > `-fdata-sections` on all platforms except for macOS. When trying out > different linkers for a small test case [1],...
2019 Sep 16
2
PGO is ineffective for Rust - but why?
...ation build? If that is the case, try dump the sections of the resulting binary and compare __llvm_prf_** sections. Also check the arguments passed to the linker. It should have -u__llvm_profile_runtime to force the profile runtime to be linked in. David On Mon, Sep 16, 2019 at 8:42 AM Michael Woerister via llvm-dev < llvm-dev at lists.llvm.org> wrote: > So one interesting observation has already come out of this: I > confirmed that `rustc` indeed uses `-ffunction-sections` and > `-fdata-sections` on all platforms except for macOS. When trying out > different linkers for a small...
2019 Sep 12
4
PGO is ineffective for Rust - but why?
...etter performance without > the pre-inlining - which typically helps because you get better > context-sensitive profile info. Maybe sanity check that the pre inlining is > kicking in for both the profile gen and use passes? > > Teresa > > On Thu, Sep 12, 2019 at 2:18 AM Michael Woerister via llvm-dev < > llvm-dev at lists.llvm.org> wrote: > >> Hi everyone, >> >> As part of my work for Mozilla's Low Level Tools team I've >> implemented PGO in the Rust compiler. The feature is >> available since Rust 1.37 [1]. However, so far we have...
2019 Sep 12
6
PGO is ineffective for Rust - but why?
Hi everyone, As part of my work for Mozilla's Low Level Tools team I've implemented PGO in the Rust compiler. The feature is available since Rust 1.37 [1]. However, so far we have not seen any actual performance gains from enabling PGO for Rust code. Performance even seems to drop 1-3% with PGO enabled. I wonder why that is and I'm hoping that someone here might have experience
2013 Aug 29
0
[LLVMdev] Allowed types llvm.dbg.declare's "storage" parameter
Hi everyone, I have a question about the llvm.dbg.declare instrinsic which I am using through DIBuilder::insertDeclare(): What kind of instructions are supported as the "storage" parameter? Is it only allocas? I've also had some success with a combination of llvm::Argument and DIBuilder::createComplexVariable(). That is, create a DIVariable with one additional OpDeref and then