diff options
author | Tamar Christina <tamar.christina@arm.com> | 2017-07-25 13:25:36 +0000 |
---|---|---|
committer | Tamar Christina <tnfchris@gcc.gnu.org> | 2017-07-25 13:25:36 +0000 |
commit | b3afe7922ac31f1cec1f200e1259287938cbd7e9 (patch) | |
tree | b21f110b4948885eba9e593215aa2c0619f49216 /gcc | |
parent | 1aa54f90e68dc927e80e14c7e4bf9b42525e3c76 (diff) | |
download | gcc-b3afe7922ac31f1cec1f200e1259287938cbd7e9.zip gcc-b3afe7922ac31f1cec1f200e1259287938cbd7e9.tar.gz gcc-b3afe7922ac31f1cec1f200e1259287938cbd7e9.tar.bz2 |
parsecpu.awk (all_cores): Remove duplicates.
2017-07-25 Tamar Christina <tamar.christina@arm.com>
* config/arm/parsecpu.awk (all_cores): Remove duplicates.
From-SVN: r250519
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/config/arm/parsecpu.awk | 35 |
2 files changed, 36 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4597d3b..c55e67a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2017-07-25 Tamar Christina <tamar.christina@arm.com> + + * config/arm/parsecpu.awk (all_cores): Remove duplicates. + 2017-07-25 Richard Biener <rguenther@suse.de> PR tree-optimization/81455 diff --git a/gcc/config/arm/parsecpu.awk b/gcc/config/arm/parsecpu.awk index 9d01e2c..070d193 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 " }," |