This patch makes some of the lround and lrint builtins constant expressions. Resolves issue 38322.
I can update more builtins but, first wanted to make sure this was the correct way of implementing the constexpr builtins.
Feel free to add other reviewers. I wasn't really sure who to add.
It's non-conforming to accept calls to these non-__builtin functions in constant expression evaluation, but it's fine to constant-fold them. Please issue a CCEDiag diagnostic for them (take a look at what we do for Builtin::BIstrlen or Builtin::BIstrcmp for an example; it would probably be reasonable to factor out a local lambda to issue suitable diagnostics for this case).
(For example, we are required to produce a diagnostic for constexpr long n = lround(1.2);, but we are permitted to constant-fold long n = lround(1.2); and emit it with static initialization.)