swift
ebd47790 - [OSSACanonicalizeOwned] Only discover defs once.

Commit
332 days ago
[OSSACanonicalizeOwned] Only discover defs once. The utility performs two def-use traversals. The first determines liveness from uses. The second rewrites copies. Previously, the defs whose uses were analyzed were discovered twice, once during each traversal. The non-triviality of the discovery logic (i.e. the logic determining when to walk into the values produced by the instructions which were the users of visited uses) opened the possibility for a divergence between the two discoveries. This possibility had indeed been realized--the two traversals didn't visit exactly the same uses, and issues ensue. Here, the defs whose uses are analyzed are discovered only once (and not discarded as their uses are analyzed) during the first traversal. The second traversal reuses the defs discovered in the first traversal, eliminating the possibility of a def discovery difference. The second traversal is now done in a different order. This results in perturbing the SIL in certain cases.
Author
Committer
Parents
Loading