Hi, guys,<br><br>If there is a struct {i8, i8, i32}, and there are several parameter GPRs(32bits), say, r0, r1~r5, I can make this struct to be passed in r0, r1 because LLVM_SHOULD_PASS_AGGREGATE_IN_INTEGER_REGS is true in DefaultABI, neither it passed by value, nor it passed as FCA.<br>
<br>But if the first parameter register r0 is occupied by other argument, in DefaultABI, that struct passed as a i64, and i64 requires 8 bytes alignment in my target, therefore, r1 is skipped for this reason, this is not what I want.<br>
I have tried to pass struct as FCA or byval, but pass as FCA do not pass those 2 i8 elements in one register, and byval does not obey the<br>ABI definition of my target, my target wants that struct passes in 2 general registers with 4 bytes alignment, not 8 byte alignment.<br>
<br>Should I implement another ABI class for my target in llvm-gcc?<br clear="all"><br>-- <br>Aries@AndesHZ<br>