This fix is for IRtranslator. Offsets passed to valueIsSplit() are stored by appending which ends up continuously appending offsets which were already resolved for the same type.
Here is a test case for our target were the two structs are passed in 4x 64b registers.
define i64 @param_two_struct([2 x i64] %t.coerce, [2 x i64] %s.coerce) {
entry:
%t.coerce.fca.0.extract = extractvalue [2 x i64] %t.coerce, 0 %s.coerce.fca.1.extract = extractvalue [2 x i64] %s.coerce, 1 %add = add nsw i64 %s.coerce.fca.1.extract, %t.coerce.fca.0.extract ret i64 %add