We should not pre-scheduled the node has ADJCALLSTACKDOWN parent, or else, when bottom-up scheduling, ADJCALLSTACKDOWN, and ADJCALLSTACKUP may hold CallResource too long and make other calls can't be scheduled. If there's no other available node to schedule, the scheduler will try to rename the register by creating the copy to avoid the conflict which will fail because CallResource is not a real physical register.
The issue is found by Tim https://github.com/avr-rust/rust/issues/111
and discuss in http://lists.llvm.org/pipermail/llvm-dev/2018-October/127083.html
This finds only the first non-data predecessor. Could there be multiple that would need to be considered?