[intro.compliance.general]/2 specifies how a compiler should handle a program given to it.
In particular it has two points dealing with ill-formed programs. (2.2) requires the compiler to issue at least one diagnostic for a violation of a diagnosable rule. (2.3) states that there are no requirements imposed on the compiler for a program which violates a rule for which no diagnostic is required.
Unfortunately I don't think the paragraph makes a precedence between the two requirements clear. If a program contains a violation of a diagnosable rule for which a diagnostic is required and a violation of a rule for which no diagnostic is required, is the compiler required to issue a diagnostic?
As an example (considered as a whole one-translation-unit program):
// ill-formed, diagnostic required
int main() { using T = void&; }
// IFNDR according to [temp.res.general]/8.1 and [temp.res.general]/8.4
void f(auto) { using T = void&; }
Moreover, if IFNDR takes precedence, the same presumably applies to undefined behavior that is typically considered runtime UB, e.g. does
// always runtime undefined behavior
int main() { return *(int*)0; }
// ill-formed, diagnostic required
using T = void&;
then technically also not require a diagnostic (considered as a whole one-translation-unit program)?
From a quality-of-implementation standpoint it seems clear to me that the compiler should issue a diagnostic whenever possible in such a situation.
But my impression is that the standard does not actually require one and this is also what I have read/heard before. For example the qualification of "and the template is not instantiated" in [temp.res.general]/8.1 would not make much sense otherwise. However at other times the standard doesn't use such inverting qualifications where it seems that they should be required, e.g. [dcl.constexpr]/6.