xref: /llvm-project/lldb/test/API/lang/cpp/trivial_abi/main.cpp (revision 99451b4453688a94c6014cac233d371ab4cc342d)
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 Rupprecht S_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 Rupprecht S_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 Rupprecht main()
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