https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97359
--- Comment #7 from Andrew Macleod <amacleod at redhat dot com> --- There is no need to cache non-logical operands. Processing a relational such as <,>,<=,>= is a linear process, and therefore we never needed to cache them. && and || is exponential as we have to evaluate op1_true, op1_false, op2_true, and op2_false and the resulting 4 combinations... so each logical operand can trigger 4 lookup calculations.. and when they feed into each other the on-demand lookups become exponential quite quickly.. the cache makes processing them linear as well. Before the next stage 1 opens, I plan to rework the GORI computations to be more efficient on calculating outgoing ranges.