1 struct __attribute__((trivial_abi)) S_Trivial { ~S_TrivialS_Trivial2 ~S_Trivial() {} 3 int ivar = 10; 4 }; 5 takeTrivial(S_Trivial inVal)6S_Trivial takeTrivial(S_Trivial inVal) 7 { 8 S_Trivial ret_val = inVal; 9 ret_val.ivar = 30; 10 return ret_val; // Set a breakpoint here 11 } 12 13 struct S_NotTrivial { ~S_NotTrivialS_NotTrivial14 ~S_NotTrivial() {} 15 int ivar = 10; 16 }; 17 takeNotTrivial(S_NotTrivial inVal)18S_NotTrivial takeNotTrivial(S_NotTrivial inVal) 19 { 20 S_NotTrivial ret_val = inVal; 21 ret_val.ivar = 30; 22 return ret_val; // Set a breakpoint here 23 } 24 25 int main()26main() 27 { 28 S_Trivial inVal, outVal; 29 outVal = takeTrivial(inVal); 30 31 S_NotTrivial inNotVal, outNotVal; 32 outNotVal = takeNotTrivial(inNotVal); 33 34 return 0; // Set another for return value 35 } 36