This is an archive of the discontinued LLVM Phabricator instance.

[MustExecute] checkForAllContext(): use pre-increment
ClosedPublic

Authored by lebedev.ri on Apr 15 2020, 11:24 AM.

Details

Summary

You'd think there is no difference, but this halves (yikes!) compiler memory usage
on test-suite/MultiSource/Applications/SPASS/top.c test,
because MustBeExecutedIterator operator++() is, well, post-increment,
it must create a duplicate of existing MustBeExecutedIterator,
which involves duplicating VisitedSetTy Visited which is DenseSet..

Old

0.3573 ( 42.9%)   0.0264 ( 33.7%)   0.3837 ( 42.1%)   0.3837 ( 42.1%)  Deduce and propagate attributes (CGSCC pass)
0.1011 ( 12.1%)   0.0199 ( 25.4%)   0.1210 ( 13.3%)   0.1210 ( 13.3%)  Deduce and propagate attributes
total runtime: 20.04s.
bytes allocated in total (ignoring deallocations): 1.09GB (54.63MB/s)
calls to allocation functions: 1142410 (57020/s)
temporary memory allocations: 500538 (24983/s)
peak heap memory consumption: 26.68MB
peak RSS (including heaptrack overhead): 944.85MB
total memory leaked: 8.85MB

New:

0.3309 ( 39.8%)   0.0164 ( 33.3%)   0.3473 ( 39.5%)   0.3473 ( 39.5%)  Deduce and propagate attributes (CGSCC pass)
0.1152 ( 13.9%)   0.0076 ( 15.5%)   0.1229 ( 14.0%)   0.1229 ( 14.0%)  Deduce and propagate attributes
total runtime: 19.49s.
bytes allocated in total (ignoring deallocations): 575.07MB (29.51MB/s)
calls to allocation functions: 909059 (46651/s)
temporary memory allocations: 276923 (14211/s)
peak heap memory consumption: 26.68MB
peak RSS (including heaptrack overhead): 942.90MB
total memory leaked: 8.85MB

Diff:

total runtime: -0.55s.
bytes allocated in total (ignoring deallocations): -519.41MB (946.11MB/s)
calls to allocation functions: -233351 (425047/s)
temporary memory allocations: -223615 (407313/s)
peak heap memory consumption: 0B
peak RSS (including heaptrack overhead): 0B
total memory leaked: 0B

Diff Detail

Event Timeline

lebedev.ri created this revision.Apr 15 2020, 11:24 AM
jdoerfert accepted this revision.Apr 15 2020, 1:50 PM

LGTM. I will propose a different design for the explorer and iterators but this can go in now anyway.

This revision is now accepted and ready to land.Apr 15 2020, 1:50 PM
This revision was automatically updated to reflect the committed changes.