In Sema::CreateBuiltinBinOp() we were incorrectly using direct initialization instead of copy initialization. This led to a crash in a copy initialization case with an enum with a fixed underlying type.
This fixes: https://github.com/llvm/llvm-project/issues/62503
The code change doesn't match this comment, which says we should use direct non-list initialization. Though the comment is slightly wrong / out of date: the standard text now says:
"an assignment to a scalar, in which case the initializer list shall have at most a single element. The meaning of x = {v}, where T is the scalar type of the expression x, is that of x = T{v}. The meaning of x = {} is x = T{}."
... which says to use direct list initialization to create a temporary in the scalar type case.