(root)/
gcc-13.2.0/
gcc/
testsuite/
c-c++-common/
dfp/
func-deref.c
       1  /* C99 6.5.2.2 Function calls.
       2     Test scalar passing and return values involving decimal floating
       3     point types and dereferenced pointers.  */
       4  
       5  #include "dfp-dbg.h"
       6  
       7  /* A handful of functions that return their Nth _Decimal32
       8     argument.  */
       9  
      10  _Decimal32 __attribute__((noinline))
      11  arg0_32 (_Decimal32 arg0, _Decimal32 arg1, _Decimal32 arg2,
      12  	 _Decimal32 arg3, _Decimal32 arg4, _Decimal32 arg5)
      13  {
      14    return arg0;
      15  }
      16  
      17  _Decimal32 __attribute__((noinline))
      18  arg1_32 (_Decimal32 arg0, _Decimal32 arg1, _Decimal32 arg2,
      19  	 _Decimal32 arg3, _Decimal32 arg4, _Decimal32 arg5)
      20  {
      21    return arg1;
      22  }
      23  	
      24  _Decimal32 __attribute__((noinline))
      25  arg2_32 (_Decimal32 arg0, _Decimal32 arg1, _Decimal32 arg2,
      26  	 _Decimal32 arg3, _Decimal32 arg4, _Decimal32 arg5)
      27  {
      28    return arg2;
      29  }
      30  	
      31  _Decimal32 __attribute__((noinline))
      32  arg3_32 (_Decimal32 arg0, _Decimal32 arg1, _Decimal32 arg2,
      33  	 _Decimal32 arg3, _Decimal32 arg4, _Decimal32 arg5)
      34  {
      35    return arg3;
      36  }
      37  	
      38  _Decimal32 __attribute__((noinline))
      39  arg4_32 (_Decimal32 arg0, _Decimal32 arg1, _Decimal32 arg2,
      40  	 _Decimal32 arg3, _Decimal32 arg4, _Decimal32 arg5)
      41  {
      42    return arg4;
      43  }
      44  	
      45  _Decimal32 __attribute__((noinline))
      46  arg5_32 (_Decimal32 arg0, _Decimal32 arg1, _Decimal32 arg2,
      47  	 _Decimal32 arg3, _Decimal32 arg4, _Decimal32 arg5)
      48  {
      49    return arg5;
      50  }
      51  	
      52  
      53  /* A handful of functions that return their Nth _Decimal64
      54     argument.  */
      55  
      56  _Decimal64 __attribute__((noinline))
      57  arg0_64 (_Decimal64 arg0, _Decimal64 arg1, _Decimal64 arg2,
      58  	 _Decimal64 arg3, _Decimal64 arg4, _Decimal64 arg5)
      59  {
      60    return arg0;
      61  }
      62  	
      63  _Decimal64 __attribute__((noinline))
      64  arg1_64 (_Decimal64 arg0, _Decimal64 arg1, _Decimal64 arg2,
      65  	 _Decimal64 arg3, _Decimal64 arg4, _Decimal64 arg5)
      66  {
      67    return arg1;
      68  }
      69  	
      70  _Decimal64 __attribute__((noinline))
      71  arg2_64 (_Decimal64 arg0, _Decimal64 arg1, _Decimal64 arg2,
      72  	 _Decimal64 arg3, _Decimal64 arg4, _Decimal64 arg5)
      73  {
      74    return arg2;
      75  }
      76  	
      77  _Decimal64 __attribute__((noinline))
      78  arg3_64 (_Decimal64 arg0, _Decimal64 arg1, _Decimal64 arg2,
      79  	 _Decimal64 arg3, _Decimal64 arg4, _Decimal64 arg5)
      80  {
      81    return arg3;
      82  }
      83  	
      84  _Decimal64 __attribute__((noinline))
      85  arg4_64 (_Decimal64 arg0, _Decimal64 arg1, _Decimal64 arg2,
      86  	 _Decimal64 arg3, _Decimal64 arg4, _Decimal64 arg5)
      87  {
      88    return arg4;
      89  }
      90  	
      91  _Decimal64 __attribute__((noinline))
      92  arg5_64 (_Decimal64 arg0, _Decimal64 arg1, _Decimal64 arg2,
      93  	 _Decimal64 arg3, _Decimal64 arg4, _Decimal64 arg5)
      94  {
      95    return arg5;
      96  }
      97  	
      98  
      99  /* A handful of functions that return their Nth _Decimal128
     100     argument.  */
     101  
     102  _Decimal128 __attribute__((noinline))
     103  arg0_128 (_Decimal128 arg0, _Decimal128 arg1, _Decimal128 arg2,
     104  	 _Decimal128 arg3, _Decimal128 arg4, _Decimal128 arg5)
     105  {
     106    return arg0;
     107  }
     108  	
     109  _Decimal128 __attribute__((noinline))
     110  arg1_128 (_Decimal128 arg0, _Decimal128 arg1, _Decimal128 arg2,
     111  	 _Decimal128 arg3, _Decimal128 arg4, _Decimal128 arg5)
     112  {
     113    return arg1;
     114  }
     115  	
     116  _Decimal128 __attribute__((noinline))
     117  arg2_128 (_Decimal128 arg0, _Decimal128 arg1, _Decimal128 arg2,
     118  	 _Decimal128 arg3, _Decimal128 arg4, _Decimal128 arg5)
     119  {
     120    return arg2;
     121  }
     122  	
     123  _Decimal128 __attribute__((noinline))
     124  arg3_128 (_Decimal128 arg0, _Decimal128 arg1, _Decimal128 arg2,
     125  	 _Decimal128 arg3, _Decimal128 arg4, _Decimal128 arg5)
     126  {
     127    return arg3;
     128  }
     129  	
     130  _Decimal128 __attribute__((noinline))
     131  arg4_128 (_Decimal128 arg0, _Decimal128 arg1, _Decimal128 arg2,
     132  	 _Decimal128 arg3, _Decimal128 arg4, _Decimal128 arg5)
     133  {
     134    return arg4;
     135  }
     136  	
     137  _Decimal128 __attribute__((noinline))
     138  arg5_128 (_Decimal128 arg0, _Decimal128 arg1, _Decimal128 arg2,
     139  	 _Decimal128 arg3, _Decimal128 arg4, _Decimal128 arg5)
     140  {
     141    return arg5;
     142  }
     143  
     144  
     145  
     146  _Decimal32 df0 = 0.0df, df1 = 1.0df, df2 = 2.0df,
     147  	   df3 = 3.0df, df4 = 4.0df, df5 = 5.0df;
     148  _Decimal32 *pdf0 = &df0, *pdf1 = &df1, *pdf2 = &df2,
     149  	   *pdf3 = &df3, *pdf4 = &df4, *pdf5 = &df5;
     150  _Decimal64 dd0 = 0.0dd, dd1 = 1.0dd, dd2 = 2.0dd,
     151  	   dd3 = 3.0dd, dd4 = 4.0dd, dd5 = 5.0dd;
     152  _Decimal64 *pdd0 = &dd0, *pdd1 = &dd1, *pdd2 = &dd2,
     153  	   *pdd3 = &dd3, *pdd4 = &dd4, *pdd5 = &dd5;
     154  _Decimal128 dl0 = 0.0dl, dl1 = 1.0dl, dl2 = 2.0dl,
     155  	    dl3 = 3.0dl, dl4 = 4.0dl, dl5 = 5.0dl;
     156  _Decimal128 *pdl0 = &dl0, *pdl1 = &dl1, *pdl2 = &dl2,
     157  	    *pdl3 = &dl3, *pdl4 = &dl4, *pdl5 = &dl5;
     158  
     159  int
     160  main ()
     161  {
     162    /* _Decimal32 variants.  */
     163    if (arg0_32 (*pdf0, *pdf1, *pdf2, *pdf3, *pdf4, *pdf5) != 0.0df)
     164      FAILURE
     165    if (arg1_32 (*pdf0, *pdf1, *pdf2, *pdf3, *pdf4, *pdf5) != 1.0df)
     166      FAILURE
     167    if (arg2_32 (*pdf0, *pdf1, *pdf2, *pdf3, *pdf4, *pdf5) != 2.0df)
     168      FAILURE
     169    if (arg3_32 (*pdf0, *pdf1, *pdf2, *pdf3, *pdf4, *pdf5) != 3.0df)
     170      FAILURE
     171    if (arg4_32 (*pdf0, *pdf1, *pdf2, *pdf3, *pdf4, *pdf5) != 4.0df)
     172      FAILURE
     173    if (arg5_32 (*pdf0, *pdf1, *pdf2, *pdf3, *pdf4, *pdf5) != 5.0df)
     174      FAILURE
     175  
     176    /* _Decimal64 variants.  */
     177    if (arg0_64 (*pdd0, *pdd1, *pdd2, *pdd3, *pdd4, *pdd5) != 0.0dd)
     178      FAILURE
     179    if (arg1_64 (*pdd0, *pdd1, *pdd2, *pdd3, *pdd4, *pdd5) != 1.0dd)
     180      FAILURE
     181    if (arg2_64 (*pdd0, *pdd1, *pdd2, *pdd3, *pdd4, *pdd5) != 2.0dd)
     182      FAILURE
     183    if (arg3_64 (*pdd0, *pdd1, *pdd2, *pdd3, *pdd4, *pdd5) != 3.0dd)
     184      FAILURE
     185    if (arg4_64 (*pdd0, *pdd1, *pdd2, *pdd3, *pdd4, *pdd5) != 4.0dd)
     186      FAILURE
     187    if (arg5_64 (*pdd0, *pdd1, *pdd2, *pdd3, *pdd4, *pdd5) != 5.0dd)
     188      FAILURE
     189  
     190    /* _Decimal128 variants.  */
     191    if (arg0_128 (*pdl0, *pdl1, *pdl2, *pdl3, *pdl4, *pdl5) != 0.0dl)
     192      FAILURE
     193    if (arg1_128 (*pdl0, *pdl1, *pdl2, *pdl3, *pdl4, *pdl5) != 1.0dl)
     194      FAILURE
     195    if (arg2_128 (*pdl0, *pdl1, *pdl2, *pdl3, *pdl4, *pdl5) != 2.0dl)
     196      FAILURE
     197    if (arg3_128 (*pdl0, *pdl1, *pdl2, *pdl3, *pdl4, *pdl5) != 3.0dl)
     198      FAILURE
     199    if (arg4_128 (*pdl0, *pdl1, *pdl2, *pdl3, *pdl4, *pdl5) != 4.0dl)
     200      FAILURE
     201    if (arg5_128 (*pdl0, *pdl1, *pdl2, *pdl3, *pdl4, *pdl5) != 5.0dl)
     202      FAILURE
     203  
     204    FINISH
     205  }