1  /* { dg-do run { target int128 } } */
       2  /* { dg-require-effective-target sse2_runtime } */
       3  /* { dg-options "-O2 -msse2 -mstv -W" } */
       4  
       5  #include <stdlib.h>
       6  #include "pr95021-4.c"
       7  
       8  jmp_buf buf;
       9  
      10  __int128 *target_p;
      11  __int128 *c;
      12  
      13  int count;
      14  
      15  __attribute__ ((noclone, noinline))
      16  void
      17  foo (__int128 i1, __int128 i2, __int128 i3, __int128 x)
      18  {
      19    if (i1 != 0xbadbeef1)
      20      abort ();
      21    if (i2 != 0x2badbeef)
      22      abort ();
      23    if (i3 != 0xbad3beef)
      24      abort ();
      25    if (x != *c)
      26      abort ();
      27    if (!count)
      28      {
      29        count++;
      30        longjmp (buf, 1);
      31      }
      32  }
      33  
      34  int
      35  main ()
      36  {
      37    __int128 val = 30;
      38    __int128 local = 0;
      39    target_p = &val;
      40    c = &local;
      41    bar ();
      42    if (val != local)
      43      abort ();
      44    return 0;
      45  }