From: Thomas Schwinge Date: Wed, 22 Nov 2023 16:35:23 +0000 (+0100) Subject: GCN: Tag '-march=[...]', '-mtune=[...]' as 'Negative' of themselves [PR112669] X-Git-Tag: basepoints/gcc-15~4255 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=297fe5c166f1d920da6d5ef9c7e02846b0148575;p=thirdparty%2Fgcc.git GCN: Tag '-march=[...]', '-mtune=[...]' as 'Negative' of themselves [PR112669] Certain other command-line flags are mutually exclusive (random example: GCN '-march=gfx906', '-march=gfx908'). If they're not appropriately marked up, this does disturb the multilib selection machinery, for example: $ build-gcc-offload-amdgcn-amdhsa/gcc/xgcc -print-multi-directory -march=gfx906 gfx906 $ build-gcc-offload-amdgcn-amdhsa/gcc/xgcc -print-multi-directory -march=gfx908 gfx908 $ build-gcc-offload-amdgcn-amdhsa/gcc/xgcc -print-multi-directory -march=gfx906 -march=gfx908 . In the last invocation, '-march=gfx900 -march=gfx906', for example, in 'gcc/gcc.cc:set_multilib_dir' we see both flags -- which there doesn't exist a matching multilib for, therefore we "fail" to the default ('.'). Tagges as 'Negative', only the last flag survives, and we, for example, get the expected: $ build-gcc-offload-amdgcn-amdhsa/gcc/xgcc -print-multi-directory -march=gfx906 -march=gfx908 gfx908 I quickly found that the same also applies to GCN's '-mtune=[...]', but I've not otherwise reviewed the GCN options. PR target/112669 gcc/ * config/gcn/gcn.opt (march=, mtune=): Tag as 'Negative' of themselves. --- diff --git a/gcc/config/gcn/gcn.opt b/gcc/config/gcn/gcn.opt index 7a852c51c84c..e5db6df92d77 100644 --- a/gcc/config/gcn/gcn.opt +++ b/gcc/config/gcn/gcn.opt @@ -44,11 +44,11 @@ EnumValue Enum(gpu_type) String(gfx1030) Value(PROCESSOR_GFX1030) march= -Target RejectNegative Joined ToLower Enum(gpu_type) Var(gcn_arch) Init(PROCESSOR_FIJI) +Target RejectNegative Negative(march=) Joined ToLower Enum(gpu_type) Var(gcn_arch) Init(PROCESSOR_FIJI) Specify the name of the target GPU. mtune= -Target RejectNegative Joined ToLower Enum(gpu_type) Var(gcn_tune) Init(PROCESSOR_FIJI) +Target RejectNegative Negative(mtune=) Joined ToLower Enum(gpu_type) Var(gcn_tune) Init(PROCESSOR_FIJI) Specify the name of the target GPU. m32