In gcc.dg/Wconversion-real.c we see this: vdouble = 3.1L; /* { dg-warning "conversion" "" { target large_long_double } } */
It turns out check_effective_target_large_long_double is NEVER called. You can change it to some bogus string: fdouble (3.1L); /* { dg-warning "conversion" "" { target dj_wins } } */ and the test still passes - no complaints about a missing "dj_wins" like you'd get with the dg-require-effective-target command. Have we been silently ignoring those warnings for *every* target all along? I ask because I'm adding some new check-effectives, and reversed the sense of the check to make sure it was doing its job, and found that it wasn't.