According to the s390x ABI, all vector registers are call-clobbered
(except for their portions that overlap with the call-saved FPRs). But
the s390x backend doesn't mark them as such when determining the register
usage of helper call insns.
Fix this in s390_insn_get_reg_usage when handling S390_INSN_HELPER_CALL.
addHRegUse(u, HRmWrite, s390_hreg_fpr(i));
}
+ /* Ditto for all allocatable vector registers. */
+ for (i = 16; i <= 31; ++i) {
+ addHRegUse(u, HRmWrite, s390_hreg_vr(i));
+ }
+
/* The registers that are used for passing arguments will be read.
Not all of them may, but in general we need to assume that. */
for (i = 0; i < insn->variant.helper_call.details->num_args; ++i) {