llvm.mlir.constant was originally introduced as an LLVM dialect counterpart
to std.constant. As such, it was supporting "function pointer" constants
derived from the symbol name. This is different from std.constant that allows
for creation of a "function" constant since MLIR, unlike LLVM IR, supports
this. Later, llvm.mlir.addressof was introduced as an Op that obtains a
constant pointer to a global in the LLVM dialect. It naturally extends to
functions (in LLVM IR, functions are globals) and should be used for defining
"function pointer" values instead.
Fixes PR46344.
Depends On D82666
nit: for consistency, no underscore in address_of