[SCEV] Construct SCEV iteratively.
This patch updates SCEV construction to work iteratively instead of recursively in most cases. It resolves stack overflow issues when trying to construct SCEVs for certain inputs, e.g. PR45201. The basic approach is to to use a worklist to queue operands of V which need to be created before V. To do so, the current patch adds a getOperandsToCreate function which collects the operands SCEV construction depends on for a given value. This is a slight duplication with createSCEV. At the moment, SCEVs for phis are still created recursively. Fixes #32078, #42594, #44546, #49293, #49599, #55333, #55511 Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D114650
Loading
Please sign in to comment