Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[Mips] Fix compiler crash when returning fp128 after calling a functi…
…on returning { i8, i128 } issue description: When process CanLowerReturn in function lowcall, Mips implements this hook using CheckReturn with CCAssignFn RetCC_Mips. In CheckReturn, Mips would check whether lowered value was originated from f128, this step would check whether MF function return type was f128. In this issue, function return type was just fp128. In CCAssignFn RetCC_Mips, CCIfType i64 would be CCAssignToReg V0_64, A0_64 for soft-float. Then Mips process LowerCallResult which use CCAssignFn RetCC_Mips. It would also check whether lowered value was originated from f128. In this issue, call function return type was structure type and not {f128}, so in CCAssignFn RetCC_Mips, CCIfType i64 would be CCAssignToReg V0_64, V1_64. And in this issue, structure type return value was three i64, so when check the third i64, would report error "Call result #2 has unhandled type i64" due to there are no register available for it.
- Loading branch information