Currently isTriviallyReMaterializable calls
isReallyTriviallyReMaterializable and
isReallyTriviallyReMaterializableGeneric. The two interfaces
are confusing, but there are also some real issues with this.
The documentation of this function (see below) suggests that
isReallyTriviallyRematerializable allows the target to override the
default behaviour.
/// For instructions with opcodes for which the M_REMATERIALIZABLE flag is /// set, this hook lets the target specify whether the instruction is actually /// trivially rematerializable, taking into consideration its operands.
It however implements something different. The default behaviour
is the analysis done in isReallyTriviallyReMaterializableGeneric,
which is testing if it is safe to rematerialize the MachineInstr.
The result of isReallyTriviallyReMaterializable is only considered if
isReallyTriviallyReMaterializableGeneric returns false. That means
there is no way to override the default behaviour if
isReallyTriviallyReMaterializableGeneric returns true (i.e. it is safe to
rematerialize, but we'd rather not).
By making this a single interface, we can override the interface to do either.
"method is" or "methods are"