aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/g++.dg/other/pr59492.C
blob: 84bd25554f37f7af96963887c7247ec7150e7da0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// { dg-do assemble { target { { i?86-*-* x86_64-*-* } && fpic } } }
// { dg-options "-mx32 -fPIC" }
// { dg-require-ifunc "" }
// { dg-require-effective-target maybe_x32 }

void
__throw_runtime_error(const char*) __attribute__((__noreturn__));
unsigned int
__attribute__ ((target("rdrnd")))
__x86_rdrand(void)
{
  unsigned int retries = 100;
  unsigned int val;
  while (__builtin_ia32_rdrand32_step(&val) == 0)
    if (--retries == 0)
      __throw_runtime_error(("random_device::__x86_rdrand(void)"));
  return val;
}