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