/* glibc bug, https://sourceware.org/ml/libc-alpha/2017-04/msg00256.html When using software completions, we have to prevent assembler to match input and output operands of sqrtt/sqrtf insn. Fixed in glibc 2.26. */ /* { dg-do run } */ /* { dg-options "-O2 -fno-builtin-sqrt -mieee" } */ double sqrt (double); static double float64frombits (unsigned long b) { union { unsigned long __b; double __d; } u = { .__b = b }; return u.__d; } int main (void) { double a = float64frombits (2); if (sqrt (a) != 3.1434555694052576e-162) __builtin_abort (); return 0; }