[PATCH] D20178: Fix PR26055 - LiveDebugValues is very slow

Adrian Prantl via llvm-commits llvm-commits at lists.llvm.org
Wed May 11 11:58:26 PDT 2016


aprantl updated this revision to Diff 56947.
aprantl added a comment.

This fixes the remaining bugs in the original patch and adds some cleanups.

- [Correctness] The VarLoc::operator<() implementation now takes semantic equality between two VarLocs (that have different MI pointers in them) into account.
- [Correctness] Both operator<() implementations now check for equality of the first pointer before comparing the second pointer.
- In join(), I'm using an in-place llvm::set_intersect().
- [Debuggability] printVarLocInMBB() now sorts the output in BB order
- The order of the DEBUG_VALUEs is different when they come from a set, so I needed to update two of our testcases.

Before this patch, a particularly nasty ASANified testcase that I had took

  user	9m20.248s

After this patch, the same testcase compiles in

  user	3m12.294s

Definitely a big win! I'll look into the Bitvectors next, but I think we can also land this version of the patch meanwhile.


http://reviews.llvm.org/D20178

Files:
  lib/CodeGen/LiveDebugValues.cpp
  test/DebugInfo/COFF/register-variables.ll
  test/DebugInfo/MIR/X86/live-debug-values-3preds.mir

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D20178.56947.patch
Type: text/x-patch
Size: 9898 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160511/bf65d2c4/attachment.bin>


More information about the llvm-commits mailing list