@@ -177,25 +177,24 @@ begin
177177 end
178178
179179 # Verify that adding the backedge again does not actually add a new backedge
180- let mi1 = Base. method_instance (deduped_caller1, (Int,)),
181- mi2 = Base. method_instance (deduped_caller2, (Int,)),
182- ci1 = mi1. cache
183- ci2 = mi2. cache
180+ let mi = Base. method_instance (deduped_caller1, (Int,)),
181+ ci = mi. cache
184182
185183 callee_mi = Base. method_instance (deduped_callee, (Int,))
186184
187185 # Inference should have added the callers to the callee's backedges
188- @test ci1 in callee_mi. backedges
189- @test ci2 in callee_mi. backedges
186+ @test ci in callee_mi. backedges
190187
188+ # In practice, inference will never end up calling `store_backedges`
189+ # twice on the same CodeInstance like this - we only need to check
190+ # that de-duplication works for a single invocation
191191 N = length (callee_mi. backedges)
192- Core. Compiler. store_backedges (ci1, Core. svec (callee_mi))
193- Core. Compiler. store_backedges (ci2, Core. svec (callee_mi))
192+ Core. Compiler. store_backedges (ci, Core. svec (callee_mi, callee_mi))
194193 N′ = length (callee_mi. backedges)
195194
196- # The number of backedges should not be affected by an additional store,
197- # since de-duplication should have noticed the edge is already tracked
198- @test N == N′
195+ # A single `store_backedges` invocation should de-duplicate any of the
196+ # edges it is adding.
197+ @test N′ - N == 1
199198 end
200199end
201200
0 commit comments