On Tue, Dec 2, 2025 at 10:40 PM Richard Biener <[email protected]> wrote: > > > > > Am 03.12.2025 um 02:10 schrieb Andrew Pinski > > <[email protected]>: > > > > On Tue, Dec 2, 2025 at 1:37 PM Andrew MacLeod <[email protected]> wrote: > >> > >> The record() and register_relation() routines in the relation oracle > >> and folding routines currently return void. They are called when there > >> is a relation to register and there has not been a need for feedback on > >> whether one was registered or not. > >> > >> The patch which caused this PR recognized that and on-demand calculation > >> of something in the middle of the IL may not have access to relations > >> which are not yet registered. When that relation is added later > >> during the DOM walk, and then the statement encountered again, the > >> original cached version is used and any benefit of the now known > >> relation is lost. > >> > >> This was resolved by updating the timestamp of the 2 ssa-names in the > >> relation when it is registered. When a statement using those names is > >> re-examined, the use timestamp will be newer than the definition and the > >> statement will be recalculated with the relation available. > >> > >> The problem shown here is a cycle of PHIs feeding each other... and each > >> one adding a relation potentially consumed by the other. This forces the > >> other to be recalculated. This was done whether a relation was actually > >> added or not. If no new relation is added, we should not update the > >> timestamps as there is no need to recalculate. > >> > >> This patch changes the record() and register_relation() methods in the > >> both the relation oracle and fold_using_range classes . These routines > >> now return TRUE if a new relation was added, and FALSE otherwise. The > >> timestamps are only updated now if TRUE is returned. > >> > >> In order for the debugging output to make sense, its been tweaked to > >> only print that a relation is registered, not that an attempt was being > >> made. > >> > >> Bootstraps on x86_64-pc-linux-gnu with no regressions. OK? > > > > One minor suggestion. Mention in comments before register_relation's > > that false means nothing changed. > > Likewise for add_partial_equiv and equiv_oracle::record and the others. > > > > Otherwise looks good to me but I can't approve it. > > I think we want to work on that. Would you be fine with being middle-end > reviewer?
Yes I would be fine with that. I would very much be happy with that. Thanks, Andrew > > Richard > > > Thanks, > > Andrew > > > >> > >> Andrew > >>
