I’m putting this here as I’m a beginner.
This change allows simplification post loop for users of IV.
Some questions:
- when changing a pass, how do you reassure yourself about possible perf regressions ? How to efficiently share the results ? A json ? A compare table ? Is test-suite the only suite to use or others are expected ?
- I remarked different analysises inferring the same conclusions which is in my case detecting the IV upper bound. To name them: LazyValue, Lattice, ValueTracking, SCEV. How to choose wisely between them ? I spotted that SCCP recognises that the increment was not overflowing and adds the NSW/NUW flag. To do so SCCP estimates a range for the variable. But this fact is not available to the downstream passes. Does LLVM allow requesting some “facts” about those analysis without creating a hard dependency on them ? For example, ConstraintElimination could be requesting those facts to have access to interesting bounds that could not be inferred using only conditional branch edges dominating a block.
- For compile_time measurement, is there a way to have timeit perform multiple runs and to have mean/std + quantiles instead of simply one run ?