]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
RISC-V: Fix wrong expansion for arch-canonicalize
authorKito Cheng <kito.cheng@sifive.com>
Mon, 9 May 2022 03:44:30 +0000 (11:44 +0800)
committerKito Cheng <kito.cheng@sifive.com>
Mon, 9 May 2022 03:46:42 +0000 (11:46 +0800)
rv64gcv should exapnd into:

rv64imafdcv_zicsr_zifencei_zve32f_zve32x_zve64d_zve64f_zve64x_zvl128b_zvl32b_zvl64b

but we exapnd fd twice for now:

rv64imafdfdcv_zicsr_zifencei_zve32f_zve32x_zve64d_zve64f_zve64x_zvl128b_zvl32b_zvl64b

gcc/ChangeLog:

* config/riscv/arch-canonicalize: Handle g correctly.

gcc/config/riscv/arch-canonicalize

index f36a2ca4593b412199ec69b2fe5332296b764df1..41bab69193cedcf89e2fc732c084da9f03454cbb 100755 (executable)
@@ -70,8 +70,10 @@ def arch_canonicalize(arch, isa_spec):
   is_isa_spec_2p2 = isa_spec == '2.2'
   new_arch = ""
   extra_long_ext = []
+  std_exts = []
   if arch[:5] in ['rv32e', 'rv32i', 'rv32g', 'rv64i', 'rv64g']:
-    new_arch = arch[:5].replace("g", "imafd")
+    new_arch = arch[:5].replace("g", "i")
+    std_exts = ['m', 'a', 'f', 'd']
     if arch[:5] in ['rv32g', 'rv64g']:
       if not is_isa_spec_2p2:
         extra_long_ext = ['zicsr', 'zifencei']
@@ -86,10 +88,10 @@ def arch_canonicalize(arch, isa_spec):
   if long_ext_prefixes_idx:
     first_long_ext_idx = min(long_ext_prefixes_idx)
     long_exts = arch[first_long_ext_idx:].split("_")
-    std_exts = list(arch[5:first_long_ext_idx])
+    std_exts += list(arch[5:first_long_ext_idx])
   else:
     long_exts = []
-    std_exts = list(arch[5:])
+    std_exts += list(arch[5:])
 
   long_exts += extra_long_ext