From b3afe7922ac31f1cec1f200e1259287938cbd7e9 Mon Sep 17 00:00:00 2001 From: Tamar Christina Date: Tue, 25 Jul 2017 13:25:36 +0000 Subject: [PATCH] parsecpu.awk (all_cores): Remove duplicates. 2017-07-25 Tamar Christina * config/arm/parsecpu.awk (all_cores): Remove duplicates. From-SVN: r250519 --- gcc/ChangeLog | 4 ++++ gcc/config/arm/parsecpu.awk | 35 ++++++++++++++++++++++++++++++++--- 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4597d3b2f57..c55e67a72e8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2017-07-25 Tamar Christina + + * config/arm/parsecpu.awk (all_cores): Remove duplicates. + 2017-07-25 Richard Biener PR tree-optimization/81455 diff --git a/gcc/config/arm/parsecpu.awk b/gcc/config/arm/parsecpu.awk index 9d01e2cf992..070d193b338 100644 --- a/gcc/config/arm/parsecpu.awk +++ b/gcc/config/arm/parsecpu.awk @@ -223,10 +223,39 @@ function gen_comm_data () { if (arch_opt_remove[feats[1],feats[m]] == "true") { fatal("cannot remove features from architecture specs") } - print " " arch_opt_isa[feats[1],feats[m]] "," + # The isa_features array that is being initialized here has a length + # of max isa_bit_num, which is the last entry in the enum. + # Logically this means that the number of features is implicitly + # never more than the number of feature bits we have. This is only + # true if we don't emit duplicates here. So keep track of which + # options we have already emitted so we don't emit them twice. + nopts = split (arch_opt_isa[feats[1],feats[m]], opts, ",") + for (i = 1; i <= nopts; i++) { + if (! (opts[i] in seen)) { + print " " opts[i] "," + seen[opts[i]] + } + } + } + if (cpus[n] in cpu_fpu) { + nopts = split (fpu_isa[cpu_fpu[cpus[n]]], opts, ",") + for (i = 1; i <= nopts; i++) { + if (! (opts[i] in seen)) { + print " " opts[i] "," + seen[opts[i]] + } + } + } + if (cpus[n] in cpu_isa) { + nopts = split (cpu_isa[cpus[n]], opts, ",") + for (i = 1; i <= nopts; i++) { + if (! (opts[i] in seen)) { + print " " opts[i] "," + seen[opts[i]] + } + } } - if (cpus[n] in cpu_fpu) print " " fpu_isa[cpu_fpu[cpus[n]]] "," - if (cpus[n] in cpu_isa) print " " cpu_isa[cpus[n]] "," + delete seen print " isa_nobit" print " }" print " }," -- 2.30.2