tree d159092a9fd5a36abc820b9f7aed50877894ab07
parent da249cad8d398939e0c608d38d0c038954941316
author Nikita Popov <npopov@redhat.com> 1718354330 +0200
committer GitHub <noreply@github.com> 1718354330 +0200
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsFcBAABCAAQBQJmbAGaCRC1aQ7uu5UhlAAAKIAQACZ7Lw2nGKMR6/48fKZLcmRk
 iVXA6GViMYRwxxtlSkPR2ePfKJbRnpj+E5X5lq1OVJVgzuoUXIZHIM7iTz1RREn3
 9fpmTyTrI+ut2g9Y32RGP5FHbCumCodn+H6TYTaXk3FQ8ha7t2v6pDHLgwnivTE6
 lXfgQNcvgz0JDYtHQPPwUeAKrXfwVZBKPfh0z2qjfj55iFJLALbcPS7tXk+oB3d3
 qzYWXCZExwkNuHnU738vk5ydGJM6SBscjgl12PILnLJlR/F2GPwL+ZDpvZOkh5rc
 UkqEo7E3/JQPCQeTutPwICjQ6hnOSeXAojjrW1CqRO+r4y0dlOnfyeGfdH7VSM8U
 I4gPKj9tKh2XzCNzft/StVtbQk6rOkCkI6fKATIGO7IDF2lyexMQuRNIPOQwVJ2a
 8jQAjftD6TUNCmOlz4VGe/39VF/dzaeDoI+CVBvE6BzvpkGw8Ub0RQoWN/SjL2lV
 3VH8r9Hi6HTQhHjX47+22ROlwGiDLiXe1A2bYzDLiZIKuN+9948ixCfy17HiE55Q
 5IocOYRu9rzaMOSfVfP57R7OiSBEg30vZXVXZvLgDNiLNFCHVtKlK4cuT8CloivI
 PgLO0qnIReRY2x6hgx0gzh/KJDD3PaA4Va9+MYFZnvRYYSz0Nb/lPlaQGoOGQd1m
 ojxitMWgJeR6MAH3AeLc
 =6pd4
 -----END PGP SIGNATURE-----
 

[SimplifyCFG] More accurate use legality check for sinking (#94462)

When sinking instructions, we have to make sure that the uses of that
instruction are consistent: If used in a phi node in the sink target,
then the phi operands have to match the sink candidates. This allows the
phi to be removed when the instruction is sunk. This case is already
handled accurately.

However, what the current code doesn't handle are uses in the same
block. These are just unconditionally accepted, even though this needs
the same consistency check for the phi node that sinking the using
instruction would introduce.

Instead, the code has another check when actually performing the
sinking, which repeats the phi check (just at a later time, where all
the later instructions have already been sunk and any new phis
introduced).

This is problematic, because it messes up the profitability heuristic.
The code will think that certain instructions will get sunk, but they
actually won't. This may result in more phi nodes being created than is
considered profitable. See the changed test for a case where we no
longer do this after this patch.

The new approach makes sure that the uses are consistent during the
initial legality check. This is based on PhiOperands, which we already
collect.

The primary motivation for this is to generalize sinking to support more
than one use, and doing that generalization is hard with the current
split checking approach.