We can't use any other string, anyway, because its type wouldn't match the type of the PredefinedExpr.
With this change, we don't compute a "nice" name for the __func__ global when it's used in the initializer for a constant. This doesn't seem like a great loss, so I'm not sure it's worth fixing. We would either need to store more information in the AST, or somehow make constant evaluation keep track of the parent function of the PredefinedExpr.
This could change behavior in some situations involving BlockDecl. Currently, CodeGenFunction::EmitPredefinedLValue has some logic to intentionally emit a string different from what Sema computed. Specifically, it does two things: one, it appends numbers to the string if there are multiple block expressions in the function that use __func__, and two, it rewrites __func__ for blocks in the initializer for a global variable. This code skips that logic... but changing the string in CodeGen is fundamentally broken anyway. (For example, sizeof(__func__) returns the wrong result.) Hopefully this doesn't affect practical code.