Skip to content

Conversation

pavgust
Copy link
Contributor

@pavgust pavgust commented Nov 1, 2018

On large and template-heavy C++ code bases, we've observed hundreds of thousands of local typedefs targetting the same type. Previously, all pairs of such typedefs would be stored as aliases of each other at indirection level 0 in pointerIndirection, which proved problematic.

This PR instead insists that the base type of a pair in pointerIndirection is fully stripped. In this way, we store a linear rather than quadratic number of facts.

@geoffw0, you wanted to have a look at this.

@pavgust pavgust requested a review from geoffw0 November 1, 2018 14:32
@pavgust pavgust force-pushed the fix/suspicious-memset-perf branch from 60cd334 to d5c8ea3 Compare November 1, 2018 14:34
@geoffw0 geoffw0 added the C++ label Nov 1, 2018
Copy link
Contributor

@geoffw0 geoffw0 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yep, I was happy with the code changes, just wanted the opportunity to see what it does on a couple of real world projects. Libreoffice timed out before, completes in 134s now. No differences in results in anything I looked at. I'd call that a win!

@geoffw0 geoffw0 merged commit 40ad2c9 into github:rc/1.18 Nov 1, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants