You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This a more general instance of the problem fixed for SpecializeGenericTypes in #5133. In general, when struct type or function is "instanciated" with concrete types, or types are replaced, the instantiation can introduce new dependency on a new type and therefore it needs to be inserted after it. Furthermore, if multiple insertions happen at the same point in the program, their respective order does matter, as there may be similar definition requirements between them.
It seems that at least SpecializeGenericFunctions and EliminateTuples is affected, but possibly more. Ideally, we would want to factor out the common parts and implement only the specific once, but I don't have time for that (at least not now). Namely at least the insertion part should be factorable for any pass that inserts global objects that can have dependencies.
This a more general instance of the problem fixed for
SpecializeGenericTypes
in #5133. In general, when struct type or function is "instanciated" with concrete types, or types are replaced, the instantiation can introduce new dependency on a new type and therefore it needs to be inserted after it. Furthermore, if multiple insertions happen at the same point in the program, their respective order does matter, as there may be similar definition requirements between them.It seems that at least
SpecializeGenericFunctions
andEliminateTuples
is affected, but possibly more. Ideally, we would want to factor out the common parts and implement only the specific once, but I don't have time for that (at least not now). Namely at least the insertion part should be factorable for any pass that inserts global objects that can have dependencies.Example that breaks tuple elimination (it duplicates struct) type-spec-nested-complex.p4.txt
The text was updated successfully, but these errors were encountered: