Some builtin functions are marked as not throwing exceptions, even when -fnon-call-exceptions is in use. As a result, the compiler will assume these functions will not throw exceptions -- but they might. For example, the buitin va_arg might cause a SEGV, which would become an exception, if the pointer provided was invalid. Even builtins which call external library routines might do so, if the routines have themselves been compiled with -fnon-call-exceptions.
For more background, see:
and follow-ups thereto.