On 6/12/25 11:00 AM, Alfie Richards wrote:
Adds the target_version and target_clones attributes to diagnostic messages for target_version semantics. This is because the target_version/target_clones attributes affect the identity of the decls, so need to be represented in diagnostics for them. After this change diagnostics look like: ``` test.c:5:7: error: redefinition of ‘[[target_version("sve")]] foo’ 5 | float foo () {return 2;} | ^~~ test.c:2:7: note: previous definition of ‘[[target_version("sve")]] foo’ with type ‘float(void)’ 2 | float foo () {return 1;} ``` This only affects targets which use target_version (aarch64 and riscv). gcc/c-family/ChangeLog: * c-pretty-print.cc (pp_c_function_target_version): New function. (pp_c_function_target_clones): New function. * c-pretty-print.h (pp_c_function_target_version): New function. (pp_c_function_target_clones): New function. gcc/c/ChangeLog: * c-objc-common.cc (c_tree_printer): Add printing of target_clone and target_version in decl diagnostics. gcc/cp/ChangeLog: * cxx-pretty-print.h (pp_cxx_function_target_version): New macro. (pp_cxx_function_target_clones): Ditto. * error.cc (dump_function_decl): Add printing of target_clone and target_version in decl diagnostics.
OK jeff