Replace pending generic logic with work stack-based logic (#6404)

This continues work to eliminate pending generics/specifics and get them
to be interleaved with instruction imports. I'm trying to use
`FinishGenericOrDone` here as a way to help ensure that code correctly
handles generics, where the simple alternative would be for each
`TryResolveTypedInst` call `SetGenericData` directly (but which might
make it easier to call the wrong `ResolveResult` function, and we do
need the `GenericId`s to be passed).
This commit is contained in:
Jon Ross-Perkins
2025-11-20 01:02:18 +00:00
committed by GitHub
parent 6c9a581a83
commit 8779b8f64b
28 changed files with 1223 additions and 1138 deletions
+2 -2
View File
@@ -88,10 +88,10 @@ fn CallSpecific(x: C*) -> C* {
// CHECK:STDOUT: %specific_impl_fn.103: <specific function> = specific_impl_function %impl.elem0.fac, @Copy.Op(%T.417) [symbolic]
// CHECK:STDOUT: %T.d9f: type = symbolic_binding T, 0 [symbolic]
// CHECK:STDOUT: %ptr.4f0: type = ptr_type %T.d9f [symbolic]
// CHECK:STDOUT: %require_complete.482: <witness> = require_complete_type %ptr.4f0 [symbolic]
// CHECK:STDOUT: %ptr.as.Copy.impl.Op.type.75b: type = fn_type @ptr.as.Copy.impl.Op, @ptr.as.Copy.impl(%T.d9f) [symbolic]
// CHECK:STDOUT: %ptr.as.Copy.impl.Op.692: %ptr.as.Copy.impl.Op.type.75b = struct_value () [symbolic]
// CHECK:STDOUT: %pattern_type.a60: type = pattern_type %ptr.4f0 [symbolic]
// CHECK:STDOUT: %require_complete.482: <witness> = require_complete_type %ptr.4f0 [symbolic]
// CHECK:STDOUT: %Function.specific_fn.c1b: <specific function> = specific_function %Function, @Function(%T.417) [symbolic]
// CHECK:STDOUT: %Copy.lookup_impl_witness.c66: <witness> = lookup_impl_witness %ptr.4f0, @Copy [symbolic]
// CHECK:STDOUT: %Copy.facet.747: %Copy.type = facet_value %ptr.4f0, (%Copy.lookup_impl_witness.c66) [symbolic]
@@ -311,10 +311,10 @@ fn CallSpecific(x: C*) -> C* {
// CHECK:STDOUT: %specific_impl_fn.103: <specific function> = specific_impl_function %impl.elem0.fac, @Copy.Op(%T.417) [symbolic]
// CHECK:STDOUT: %T.d9f: type = symbolic_binding T, 0 [symbolic]
// CHECK:STDOUT: %ptr.4f0: type = ptr_type %T.d9f [symbolic]
// CHECK:STDOUT: %require_complete.482: <witness> = require_complete_type %ptr.4f0 [symbolic]
// CHECK:STDOUT: %ptr.as.Copy.impl.Op.type.75b: type = fn_type @ptr.as.Copy.impl.Op, @ptr.as.Copy.impl(%T.d9f) [symbolic]
// CHECK:STDOUT: %ptr.as.Copy.impl.Op.692: %ptr.as.Copy.impl.Op.type.75b = struct_value () [symbolic]
// CHECK:STDOUT: %pattern_type.a60: type = pattern_type %ptr.4f0 [symbolic]
// CHECK:STDOUT: %require_complete.482: <witness> = require_complete_type %ptr.4f0 [symbolic]
// CHECK:STDOUT: %Function.specific_fn.c1b: <specific function> = specific_function %Function, @Function(%T.417) [symbolic]
// CHECK:STDOUT: %Copy.lookup_impl_witness.c66: <witness> = lookup_impl_witness %ptr.4f0, @Copy [symbolic]
// CHECK:STDOUT: %Copy.facet.747: %Copy.type = facet_value %ptr.4f0, (%Copy.lookup_impl_witness.c66) [symbolic]