User Details
- User Since
- Oct 14 2016, 2:33 PM (337 w, 23 h)
Mar 16 2020
Feb 27 2020
Nov 1 2019
Has this review been abandoned? If so, is there any other tooling to generate CG profile input to lld from an iPGO profile?
Oct 16 2019
Oct 15 2019
Updated after recent commits.
Oct 11 2019
@pcc : poke
Oct 10 2019
Oct 7 2019
Added a new CodeGetCXX test case
Sep 24 2019
Apr 23 2019
Apr 18 2019
Jun 5 2018
Any chance this gets fixed soon? I'm hitting the same problem.
Jun 4 2018
May 31 2018
Changed the checks to look for dso_local instread of visibility.
May 30 2018
Can you guys please give it a try with Chromium? Do you get any measurable performance improvements with this change?
May 24 2018
Changed the code not to short circuit functions that can be overridden at run time and not to expose <func>.cfi names to the runtime.
Added a test point to check for that.
May 21 2018
Oh, this must be with cross-DSO CFI. I see what the problem is. We need to skip symbols not resolved internally from replacing direct calls to calls to <name>.cfi. An extra test case wound't hurt, so if you have it please send it to me.
Sorry, I'm traveling this week, didn't see this until now. I didn't get any bot failure notifications after the commit, so I assumed it was good. Do you have a test case I can use to reproduce it?
May 17 2018
May 15 2018
May 10 2018
Fixed a few missed cases where direct calls were routed through jump tables.
Added more test points for thin and full LTO.
May 8 2018
May 7 2018
Added a test case.
Skip direct calls in addition to blockaddr uses when dealing with CFI.
Don't set linkage to internal for .cfi symbols as they may be needed by direct calls.
May 4 2018
ToT LTO and ThinLTO builds both work fine for me. Can you post the error you get? I'm not sure how ToT would produce a direct call to a function with a jumptable entry.
May 3 2018
$ clang++ -fuse-ld=lld -flto=thin -fsanitize=cfi-icall -fvisibility=hidden -o ex ex1.cpp ex2.cpp
lld: error: undefined symbol: void X<double>() (.cfi)referenced by ex1.cpp
lto.tmp:(main)
No, that statement is doing the reverse of what you're doing. It's replacing directs calls to a function to calls to the jumptable entry. (F/FDecl have different meanings in the 2 other cases than how you're using them.)
Sounds like we need to skip direct calls in replaceUsesExceptBlockAddr(). Make it replaceUsesExceptBlockAddrOrDirectCalls()
No, that statement is doing the reverse of what you're doing. It's replacing directs calls to a function to calls to the jumptable entry. (F/FDecl have different meanings in the 2 other cases than how you're using them.)
May 2 2018
May 1 2018
Yeah, need a test case.
Mar 5 2018
Addressed review comments.
Mar 2 2018
Changed deleteMember() to erase_if()
Changed the implementation to avoid writing the archive twice.
llvm-ar supports only a subset of MRI commands, that's why 'delete' as implemented here only works for a specific use case: deleting members added with 'addlib' or 'addmod' commands during archive creation.
Mar 1 2018
Feb 8 2018
Fixed the test.
Re-wrote the test.
Feb 7 2018
Changed the test to create linker script with "echo" instead.
Feb 6 2018
Minor tweaks.
Addressed review comments
Nov 16 2017
And the set type is changed to SmallSetVector.
Changed the fix to save unique Constant users and process them separately outside of the UseList iterator.
Nag... Can you guys please review this?
Nov 10 2017
Nov 9 2017
Sep 27 2017
Sep 26 2017
Can someone please click "Approve"? ;)