/* { dg-lto-do run } */ /* { dg-lto-options { { -O0 -flto } } } */ /* { dg-extra-ld-options "-O2 -ffast-math -fuse-linker-plugin" } */ /* { dg-require-linker-plugin "" } */ /* We require a linker plugin because otherwise we'd need to link against libm which we are not sure here has cabs on all targets. This is because collect2 invokes ld on the -O0 object code which does not have folded cabs. */ double cabs(_Complex double); double __attribute__((used)) foo (_Complex double x, int b) { if (b) x = 0; return cabs(x); } /* We provide a dummy sqrt to avoid link failures on targets that do not expand sqrt inline. Note that we do not link against libm in order to ensure cabs is not satisfied by the library, but must be folded. */ double __attribute__((used)) sqrt (double x) { return x; } int main() { return 0; }