[PATCH] D24164: Remove debug info when hoisting instruction from then/else branch.
Dehao Chen via llvm-commits
llvm-commits at lists.llvm.org
Fri Sep 2 10:21:06 PDT 2016
danielcdh added a comment.
In https://reviews.llvm.org/D24164#532702, @andreadb wrote:
> In https://reviews.llvm.org/D24164#532594, @dblaikie wrote:
> > I would worry that this might produce a worse experience for a sanitizer user, for example - but I'm not sure. (the sanitizer user won't have any trail back to why the store in this example is happening - granted, the way the code currently works, they may be told the store is happening in the wrong branch, which isn't great either)
> I don't know about the sanitizer user experience. However, based on my experience with sample pgo, this kind of changes tend to improve the quality of the sample profile from autofdo.
> we have identified a couple of similar issues where the debug location of a tail-merged instruction is incorrectly set. We already have plans to send a couple of small patches to fix these issues (those would need https://reviews.llvm.org/D24180); in our sample-pgo experiments, this kind of small fixes for hoisted/tail merged instructions tend to have a very positive impact on the quality of the sample profile.
I also have a related debug-info fix for tail-merging (attached below), but haven't had time to make a unittest and send out for review. It would be great if your patch can cover this case, so that I don't need to prepare a patch for it :)
Could you send us your debug info patches for sample pgo so that we can test them on our workload to see performance impact?
About https://reviews.llvm.org/D24180, we just use -mllvm -use-unknown-locations=true for similar purposes.
- ../lib/CodeGen/BranchFolding.cpp (revision 280454)
+++ ../lib/CodeGen/BranchFolding.cpp (working copy)
@@ -939,6 +939,11 @@
MachineBasicBlock *MBB = SameTails[commonTailIndex].getBlock();
+ // Remove debug info
+ for (MachineInstr &MI : *MBB)
+ if (!MI.isDebugValue())
// Recompute common tail MBB's edge weights and block frequency.
More information about the llvm-commits