(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.c-torture/
compile/
pr48641.c
       1  /* { dg-options "-O -fno-tree-ccp -fno-tree-copy-prop" } */
       2  #define CSF __builtin_copysignf
       3  #define CSD __builtin_copysign
       4  #define CSL __builtin_copysignl
       5  #define MODFF __builtin_modff
       6  #define MODFD __builtin_modf
       7  #define MODFL __builtin_modfl
       8  
       9  extern void link_error (void);
      10  
      11  void
      12  foo (void)
      13  {
      14    float iptrf;
      15    double iptr;
      16    long double iptrl;
      17    long long iptrll;
      18    if ((CSF (1.0F, MODFF (0x1p10F + 0.5f, &iptrf)) != CSF (1.0F, 0.5f))
      19        || (CSF (1.0F, iptrf) != 0x1p10f))
      20      link_error ();
      21    if (MODFD (0x1p10F + 0.5, &iptr) != 0.5
      22        || (CSD (1.0, MODFD (0x1p10F + 0.5, &iptr)) != CSD (1.0, 0.5))
      23        || (CSD (1.0, iptr) != CSD (1.0, 0x1p10)))
      24      link_error ();
      25    if (MODFL (0x1p10F + 0.5l, &iptrl) != 0.5l
      26        || (CSL (1.0L, MODFL (0x1p10F + 0.5l, &iptrl)) != CSL (1.0L, 0.5l))
      27        || (CSL (1.0L, iptrl) != CSL (1.0L, 0x1p10l)))
      28      link_error ();
      29    if ((CSF (1.0F, (MODFF (0x1p10F + 0x1p-10f, &iptrf)))
      30         != CSF (1.0F, 0x1p-10f))
      31        || (CSF (1.0F, iptrf) != CSF (1.0F, 0x1p10f)))
      32      link_error ();
      33    if (MODFD (0x1p10F + 0x1p-10, &iptr) != 0x1p-10
      34        || (CSD (1.0, (MODFD (0x1p10F + 0x1p-10, &iptr)))
      35  	  != CSD (1.0, 0x1p-10)) || (CSD (1.0, iptr) != CSD (1.0, 0x1p10)))
      36      link_error ();
      37    if (MODFL (0x1p10F + 0x1p-10l, &iptrl) != 0x1p-10l
      38        || (CSL (1.0L, (MODFL (0x1p10F + 0x1p-10l, &iptrl)))
      39  	  != CSL (1.0L, 0x1p-10l))
      40        || (CSL (1.0L, iptrl) != CSL (1.0L, 0x1p10l)))
      41      link_error ();
      42    if ((CSF (1.0F, (MODFF (12345678L / 17.0f, &iptrf)))
      43         != CSF (1.0F, (-726216L + 12345678L / 17.0f)))
      44        || (CSF (1.0F, iptrf) != CSF (1.0F, 726216.0f)))
      45      link_error ();
      46    if (MODFD (12345678L / 17.0, &iptr) != -726216L + 12345678L / 17.0
      47        || (CSD (1.0, (MODFD (12345678L / 17.0, &iptr)))
      48  	  != CSD (1.0, (-726216L + 12345678L / 17.0)))
      49        || (CSD (1.0, iptr) != CSD (1.0, 726216.0)))
      50      link_error ();
      51    if ((CSL (1.0L, (MODFL (12345678L / 17.0l, &iptrl)))
      52         != CSL (1.0L, (-726216L + 12345678L / 17.0l)))
      53        || (CSL (1.0L, iptrl) != CSL (1.0L, 726216.0l)))
      54      link_error ();
      55    if (MODFF (555.555f, &iptrf) != -555 + 555.555f
      56        || (CSF (1.0F, iptrf) != CSF (1.0F, 555.0f)))
      57      link_error ();
      58    if (MODFD (555.555, &iptr) != -555 + 555.555
      59        || (CSD (1.0, (MODFD (555.555, &iptr))) != CSD (1.0, (-555 + 555.555)))
      60        || (CSD (1.0, iptr) != CSD (1.0, 555.0)))
      61      link_error ();
      62    if (MODFL (555.555l, &iptrl) != -555 + 555.555l
      63        || (CSL (1.0L, (MODFL (555.555l, &iptrl)))
      64  	  != CSL (1.0L, (-555 + 555.555l)))
      65        || (CSL (1.0L, iptrl) != CSL (1.0L, 555.0l)))
      66      link_error ();
      67    if (MODFF (5000 / 11.0f, &iptrf) != -454 + 5000 / 11.0f
      68        || (CSF (1.0F, (MODFF (5000 / 11.0f, &iptrf)))
      69  	  != CSF (1.0F, (-454 + 5000 / 11.0f)))
      70        || (CSF (1.0F, iptrf) != CSF (1.0F, 454.0f)))
      71      link_error ();
      72    if (MODFD (5000 / 11.0, &iptr) != -454 + 5000 / 11.0
      73        || (CSD (1.0, (MODFD (5000 / 11.0, &iptr)))
      74  	  != CSD (1.0, (-454 + 5000 / 11.0)))
      75        || (CSD (1.0, iptr) != CSD (1.0, 454.0)))
      76      link_error ();
      77    if ((CSL (1.0L, (MODFL (5000 / 11.0l, &iptrl)))
      78         != CSL (1.0L, (-454 + 5000 / 11.0l)))
      79        || (CSL (1.0L, iptrl) != CSL (1.0L, 454.0l)))
      80      link_error ();
      81    if ((CSF (1.0F, (MODFF (1000 / 7.0f, &iptrf)))
      82         != CSF (1.0F, (-142 + 1000 / 7.0f)))
      83        || (CSF (1.0F, iptrf) != CSF (1.0F, 142.0f)))
      84      link_error ();
      85    if ((CSD (1.0, (MODFD (1000 / 7.0, &iptr)))
      86         != CSD (1.0, (-142 + 1000 / 7.0)))
      87        || (CSD (1.0, iptr) != CSD (1.0, 142.0)))
      88      link_error ();
      89    if ((CSL (1.0L, (MODFL (1000 / 7.0l, &iptrl)))
      90         != CSL (1.0L, (-142 + 1000 / 7.0l)))
      91        || (CSL (1.0L, iptrl) != CSL (1.0L, 142.0l)))
      92      link_error ();
      93    if (MODFF (123 / 7.0f, &iptrf) != -17 + 123 / 7.0f
      94        || (CSF (1.0F, iptrf) != CSF (1.0F, 17.0f)))
      95      link_error ();
      96    if (MODFD (123 / 7.0, &iptr) != -17 + 123 / 7.0
      97        || (CSD (1.0, iptr) != CSD (1.0, 17.0)))
      98      link_error ();
      99    if ((CSL (1.0L, (MODFL (123 / 7.0l, &iptrl)))
     100         != CSL (1.0L, (-17 + 123 / 7.0l)))
     101        || (CSL (1.0L, iptrl) != CSL (1.0L, 17.0l)))
     102      link_error ();
     103    if ((CSF (1.0F, (MODFF (117 / 7.0f, &iptrf)))
     104         != CSF (1.0F, (-16 + 117 / 7.0f)))
     105        || (CSF (1.0F, iptrf) != CSF (1.0F, 16.0f)))
     106      link_error ();
     107    if ((CSD (1.0, (MODFD (117 / 7.0, &iptr))) != CSD (1.0, (-16 + 117 / 7.0)))
     108        || (CSD (1.0, iptr) != CSD (1.0, 16.0)))
     109      link_error ();
     110    if (MODFL (117 / 7.0l, &iptrl) != -16 + 117 / 7.0l
     111        || (CSL (1.0L, iptrl) != CSL (1.0L, 16.0l)))
     112      link_error ();
     113    if (MODFF (5.5f, &iptrf) != 0.5f || (CSF (1.0F, iptrf) != CSF (1.0F, 5.0f)))
     114      link_error ();
     115    if (MODFD (5.5, &iptr) != 0.5 || (CSD (1.0, iptr) != CSD (1.0, 5.0)))
     116      link_error ();
     117    if (MODFL (5.5l, &iptrl) != 0.5l || (CSL (1.0L, iptrl) != CSL (1.0L, 5.0l)))
     118      link_error ();
     119    if ((CSF (1.0F, (MODFF (1.5f, &iptrf))) != CSF (1.0F, 0.5f))
     120        || (CSF (1.0F, iptrf) != 1.0f))
     121      link_error ();
     122    if ((CSD (1.0, (MODFD (1.5, &iptr))) != CSD (1.0, 0.5))
     123        || (CSD (1.0, iptr) != 1.0))
     124      link_error ();
     125    if (MODFL (1.5l, &iptrl) != iptrl != 1.0l || (CSL (1.0L, iptrl) != 1.0l))
     126      link_error ();
     127    if (MODFF (4 / 3.0f, &iptrf) != -1 + 4 / 3.0f
     128        || (CSF (1.0F, (MODFF (4 / 3.0f, &iptrf)))
     129  	  != CSF (1.0F, (-1 + 4 / 3.0f))) || (CSF (1.0F, iptrf) != (1.0F)))
     130      link_error ();
     131    if (MODFD (4 / 3.0, &iptr) != -1 + 4 / 3.0 || (CSD (1.0, iptr) != 1.0))
     132      link_error ();
     133    if (MODFL (4 / 3.0l, &iptrl) != iptrl != 1.0l
     134        || (CSL (1.0L, iptrl) != 1.0l))
     135      link_error ();
     136    if ((((MODFF (1.0f, &iptrf)))) || (CSF (1.0F, iptrf) != 1.0f))
     137      link_error ();
     138    if ((((MODFD (1.0, &iptr))) != 0.0) || (CSD (1.0, iptr) != 1.0))
     139      link_error ();
     140    if ((((MODFL (1.0l, &iptrl))) != 0.0l) || (CSL (1.0L, iptrl) != 1.0l))
     141      link_error ();
     142    if (MODFF (0.5f, &iptrf) != 0.5f || (CSF (1.0F, iptrf) != CSF (1.0F, 0.0f)))
     143      link_error ();
     144    if (MODFD (0.5, &iptr) != 0.5 || (CSD (1.0, iptr) != CSD (1.0, 0.0)))
     145      link_error ();
     146    if ((CSL (1.0L, (MODFL (0.5l, &iptrl))) != CSL (1.0L, 0.5l))
     147        || (CSL (1.0L, iptrl) != CSL (1.0L, 0.0l)))
     148      link_error ();
     149    if (MODFF (4 / 9.0f, &iptrf) != 4 / 9.0f
     150        != (CSF (1.0F, (MODFF (4 / 9.0f, &iptrf))) != CSF (1.0F, (4 / 9.0f)))
     151        || (CSF (1.0F, iptrf) != CSF (1.0F, 0.0f)))
     152      link_error ();
     153    if (MODFD (4 / 9.0, &iptr) != 4 / 9.0
     154        || (CSD (1.0, iptr) != CSD (1.0, 0.0)))
     155      link_error ();
     156    if (MODFL (4 / 9.0l, &iptrl) != 4 / 9.0l
     157        || (CSL (1.0L, iptrl) != CSL (1.0L, 0.0l)))
     158      link_error ();
     159    if (MODFF (1 / 3.0f, &iptrf) != 1 / 3.0f
     160        || (CSF (1.0F, iptrf) != CSF (1.0F, 0.0f)))
     161      link_error ();
     162    if (MODFD (1 / 3.0, &iptr) != 1 / 3.0
     163        || (CSD (1.0, iptr) != CSD (1.0, 0.0)))
     164      link_error ();
     165    if ((CSL (1.0L, (MODFL (1 / 3.0l, &iptrl))) != CSL (1.0L, (1 / 3.0l)))
     166        || (CSL (1.0L, iptrl) != CSL (1.0L, 0.0l)))
     167      link_error ();
     168    if ((CSF (1.0F, (MODFF (1 / 9.0f, &iptrf))) != CSF (1.0F, (1 / 9.0f)))
     169        || (CSF (1.0F, iptrf) != CSF (1.0F, 0.0f)))
     170      link_error ();
     171    if (MODFD (1 / 9.0, &iptr) != 1 / 9.0
     172        || (CSD (1.0, iptr) != CSD (1.0, 0.0)))
     173      link_error ();
     174    if ((CSL (1.0L, (MODFL (1 / 9.0l, &iptrl))) != CSL (1.0L, (1 / 9.0l)))
     175        || (CSL (1.0L, iptrl) != CSL (1.0L, 0.0l)))
     176      link_error ();
     177    if ((((MODFF (0.0f, &iptrf)))) || (CSF (1.0F, iptrf) != CSF (1.0F, 0.0f)))
     178      link_error ();
     179    if ((((MODFD (0.0, &iptr)))) || (CSD (1.0, iptr) != CSD (1.0, 0.0)))
     180      link_error ();
     181    if ((((MODFL (0.0l, &iptrl))) != 0.0l)
     182        || (CSL (1.0L, iptrl) != CSL (1.0L, 0.0l)))
     183      link_error ();
     184    if ((((MODFF (-0.0f, &iptrf)))) || (CSF (1.0F, iptrf) != CSF (1.0F, -0.0f)))
     185      link_error ();
     186    if ((((MODFD (-0.0, &iptr)))) || (CSD (1.0, iptr) != CSD (1.0, -0.0)))
     187      link_error ();
     188    if ((CSL (1.0L, (MODFL (-0.0l, &iptrl))) != CSL (1.0L, -0.0l))
     189        || (CSL (1.0L, iptrl) != CSL (1.0L, -0.0l)))
     190      link_error ();
     191    if (MODFF (-1 / 9.0f, &iptrf) != -1 / 9.0f
     192        || (CSF (1.0F, (MODFF (-1 / 9.0f, &iptrf))) != CSF (1.0F, (-1 / 9.0f)))
     193        || (CSF (1.0F, iptrf) != CSF (1.0F, -0.0f)))
     194      link_error ();
     195    if (MODFD (-1 / 9.0, &iptr) != -1 / 9.0
     196        || (CSD (1.0, iptr) != CSD (1.0, -0.0)))
     197      link_error ();
     198    if ((CSL (1.0L, (MODFL (-1 / 9.0l, &iptrl))) != CSL (1.0L, (-1 / 9.0l)))
     199        || (CSL (1.0L, iptrl) != CSL (1.0L, -0.0l)))
     200      link_error ();
     201    if ((CSF (1.0F, (MODFF (-1 / 3.0f, &iptrf))) != CSF (1.0F, (-1 / 3.0f)))
     202        || (CSF (1.0F, iptrf) != CSF (1.0F, -0.0f)))
     203      link_error ();
     204    if (MODFD (-1 / 3.0, &iptr) != -1 / 3.0
     205        || (CSD (1.0, iptr) != CSD (1.0, -0.0)))
     206      link_error ();
     207    if ((CSL (1.0L, (MODFL (-1 / 3.0l, &iptrl))) != CSL (1.0L, (-1 / 3.0l)))
     208        || (CSL (1.0L, iptrl) != CSL (1.0L, -0.0l)))
     209      link_error ();
     210    if (MODFF (-4 / 9.0f, &iptrf) != -4 / 9.0f
     211        || (CSF (1.0F, (MODFF (-4 / 9.0f, &iptrf))) != CSF (1.0F, (-4 / 9.0f)))
     212        || (CSF (1.0F, iptrf) != CSF (1.0F, -0.0f)))
     213      link_error ();
     214    if (MODFD (-4 / 9.0, &iptr) != -4 / 9.0
     215        || (CSD (1.0, iptr) != CSD (1.0, -0.0)))
     216      link_error ();
     217    if (MODFL (-4 / 9.0l, &iptrl) != -4 / 9.0l
     218        || (CSL (1.0L, (MODFL (-4 / 9.0l, &iptrl))) != CSL (1.0L, (-4 / 9.0l)))
     219        || (CSL (1.0L, iptrl) != CSL (1.0L, -0.0l)))
     220      link_error ();
     221    if (MODFF (-0.5f, &iptrf) != -0.5f
     222        || (CSF (1.0F, iptrf) != CSF (1.0F, -0.0f)))
     223      link_error ();
     224    if (MODFD (-0.5, &iptr) != -0.5
     225        != (CSD (1.0, (MODFD (-0.5, &iptr))) != CSD (1.0, -0.5))
     226        || (CSD (1.0, iptr) != CSD (1.0, -0.0)))
     227      (MODFL (-0.5l, (long double *) &iptrll));
     228    if ((((MODFF (-1.0f, &iptrf)))) || (CSF (1.0F, iptrf) != -1.0f))
     229      link_error ();
     230    if ((((MODFD (-1.0, &iptr))) != -0.0) || (CSD (1.0, iptr) != -1.0))
     231      link_error ();
     232    if ((((MODFL (-1.0l, &iptrl)))) || (CSL (1.0L, iptrl) != -1.0l))
     233      link_error ();
     234    if ((CSF (1.0F, (MODFF (-4 / 3.0f, &iptrf))) != CSF (1.0F, (1 - 4 / 3.0f)))
     235        || (CSF (1.0F, iptrf) != -1.0f))
     236      link_error ();
     237    if (MODFD (-4 / 3.0, &iptr) != 1 - 4 / 3.0 || (CSD (1.0, iptr) != -1.0))
     238      link_error ();
     239    if (MODFL (-4 / 3.0l, &iptrl) != 1 - 4 / 3.0l
     240        || (CSL (1.0L, (MODFL (-4 / 3.0l, &iptrl)))
     241  	  != CSL (1.0L, (1 - 4 / 3.0l))) || (CSL (1.0L, iptrl) != -1.0l))
     242      link_error ();
     243    if ((CSF (1.0F, (MODFF (-1.5f, &iptrf))) != CSF (1.0F, -0.5f))
     244        || (CSF (1.0F, iptrf) != -1.0f))
     245      link_error ();
     246    if ((CSD (1.0, (MODFD (-1.5, &iptr))) != CSD (1.0, -0.5))
     247        || (CSD (1.0, iptr) != -1.0))
     248      link_error ();
     249  }