For some builtins, we need to do quite a bit of type checking ourselves, so pass the call expression along. This way we can inspect arguments, expected return value, etc.
As discussed with @aaron.ballman on Discord, reject non-StringLiteral inputs from __builtin_isnan().
Hmmm, I think I missed a situation when we were talking about this. Consider: https://godbolt.org/z/14dz5MMPj
I think the current interpreter is wrong to reject that code (I think the GCC behavior is correct). If you remove the constexpr from the declaration of Nan2, it compiles fine.
WDYT?