• Caio Oliveira's avatar
    nir: Allow derefs to be used as phi sources · 8bdf5a00
    Caio Oliveira authored
    It is possible and valid for a pointer to be selected based on a
    conditional before used, and depending on the mode, those cases will
    result in a phi with derefs as sources.
    To achieve this, we don't rematerialize derefs that are used by phis.
    As a consequence, when converting from SSA to regs, we may have phis
    that come from different blocks and are used by phis.  We now convert
    those to regs too.
    Validation was added to ensure only derefs of certain modes can be
    used as phi sources.  No extra validation is needed for the presence
    of cast, any instruction that uses derefs will validate the
    deref-chain is complete (ending in a cast or a var).
    Reviewed-by: Faith Ekstrand's avatarJason Ekstrand <jason@jlekstrand.net>