(root)/
gcc-13.2.0/
gcc/
testsuite/
c-c++-common/
dfp/
func-struct.c
       1  /* C99 6.5.2.2 Function calls.
       2     Test structure passing and return values involving decimal floating
       3     point types.  */
       4  
       5  #include "dfp-dbg.h"
       6  
       7  struct example
       8  {
       9    _Decimal128 d128;
      10    char dummy1;
      11    _Decimal64 d64;
      12    char dummy2;
      13    _Decimal32 d32;
      14  } nums = { 1.0dl, 'a', 2.0dd, 'b', 3.0df };
      15  
      16  _Decimal32
      17  d32_field (struct example s)
      18  {
      19    return s.d32;
      20  }
      21  
      22  _Decimal64
      23  d64_field (struct example s)
      24  {
      25    return s.d64;
      26  }
      27  
      28  _Decimal128
      29  d128_field (struct example s)
      30  {
      31    return s.d128;
      32  }
      33  
      34  char
      35  dummy1_field (struct example s)
      36  {
      37    return s.dummy1;
      38  }
      39  
      40  char
      41  dummy2_field (struct example s)
      42  {
      43    return s.dummy2;
      44  }
      45  
      46  _Decimal32
      47  ptr_d32_field (struct example *s)
      48  {
      49    return s->d32;
      50  }
      51  
      52  _Decimal64
      53  ptr_d64_field (struct example *s)
      54  {
      55    return s->d64;
      56  }
      57  
      58  _Decimal128
      59  ptr_d128_field (struct example *s)
      60  {
      61    return s->d128;
      62  }
      63  
      64  char
      65  ptr_dummy1_field (struct example *s)
      66  {
      67    return s->dummy1;
      68  }
      69  
      70  char
      71  ptr_dummy2_field (struct example *s)
      72  {
      73    return s->dummy2;
      74  }
      75  
      76  
      77  int
      78  main ()
      79  {
      80    if (d32_field (nums) != 3.0df) FAILURE
      81    if (d64_field (nums) != 2.0dd) FAILURE
      82    if (d128_field (nums) != 1.0dl) FAILURE
      83    if (dummy1_field (nums) != 'a') FAILURE
      84    if (dummy2_field (nums) != 'b') FAILURE
      85  
      86    if (ptr_d32_field (&nums) != 3.0df) FAILURE
      87    if (ptr_d64_field (&nums) != 2.0dd) FAILURE
      88    if (ptr_d128_field (&nums) != 1.0dl) FAILURE
      89    if (ptr_dummy1_field (&nums) != 'a') FAILURE
      90    if (ptr_dummy2_field (&nums) != 'b') FAILURE
      91  
      92    FINISH
      93  }