In a case when we have an if condition and base relocate is inserted in a different branch than derived relocate we should check that base dominates derived relocation. Otherwise rematerialized object will be inserted in one branch while all the uses of it will be located in another.
However it seems that introducing dominator tree lookup for such cases is too expensive. I think it is better to simply abort transformation if there is a suspicion that base relocation doesn't dominate derived relocation.