Clang has recently started diagnosing prototype redeclaration errors like rG385e7df33046
This flagged legitimate issues in a codebase but was confusing to resolve because it actually conflicted with a function declaration from a system header and not from the one emitted with "note: ".
This patch updates the error handling to use the canonical declaration's source location instead to avoid misleading errors like the one described.
I don't think it's safe to assign this new value to Old as that object is what we eventually merge the declaration with (so we'll get the decl chain order wrong, I believe).