[mips] For N32/N64, structs must be passed in the upper bits of a register.
[oota-llvm.git] / lib / Target / Mips / MipsCallingConv.td
index bb45d4195ec7295a5917ec3e4c9eeab6b55b80be..9e47338f09a6982dc6cfd2f219dedccfbbc95f27 100644 (file)
@@ -137,9 +137,9 @@ def RetCC_MipsN : CallingConv<[
   // both little and big-endian targets. When passing in registers, this
   // requires that big-endian targets shift the value into the upper bits.
   CCIfSubtarget<"isLittle()",
-      CCIfType<[i8, i16, i32], CCIfInReg<CCPromoteToType<i64>>>>,
+      CCIfType<[i8, i16, i32, i64], CCIfInReg<CCPromoteToType<i64>>>>,
   CCIfSubtargetNot<"isLittle()",
-      CCIfType<[i8, i16, i32], CCIfInReg<CCPromoteToUpperBitsInType<i64>>>>,
+      CCIfType<[i8, i16, i32, i64], CCIfInReg<CCPromoteToUpperBitsInType<i64>>>>,
 
   // i32 are returned in registers V0, V1
   CCIfType<[i32], CCAssignToReg<[V0, V1]>>,