diff --git a/clang/lib/Driver/ToolChains/Arch/RISCV.cpp b/clang/lib/Driver/ToolChains/Arch/RISCV.cpp --- a/clang/lib/Driver/ToolChains/Arch/RISCV.cpp +++ b/clang/lib/Driver/ToolChains/Arch/RISCV.cpp @@ -258,10 +258,13 @@ << MArch << Error << Ext; return; } - if (Ext == "zvamo" || Ext == "zvlsseg") { + if (Ext == "zvlsseg") { + Features.push_back("+experimental-v"); + Features.push_back("+experimental-zvlsseg"); + } else if (Ext == "zvamo") { Features.push_back("+experimental-v"); - Features.push_back("+experimental-zvamo"); Features.push_back("+experimental-zvlsseg"); + Features.push_back("+experimental-zvamo"); } else if (isExperimentalExtension(Ext)) Features.push_back(Args.MakeArgString("+experimental-" + Ext)); else @@ -429,7 +432,6 @@ break; case 'v': Features.push_back("+experimental-v"); - Features.push_back("+experimental-zvamo"); Features.push_back("+experimental-zvlsseg"); break; } diff --git a/clang/test/Preprocessor/riscv-target-features.c b/clang/test/Preprocessor/riscv-target-features.c --- a/clang/test/Preprocessor/riscv-target-features.c +++ b/clang/test/Preprocessor/riscv-target-features.c @@ -225,12 +225,6 @@ // RUN: -march=rv64iv0p10 -x c -E -dM %s \ // RUN: -o - | FileCheck --check-prefix=CHECK-V-EXT %s // RUN: %clang -target riscv32-unknown-linux-gnu -menable-experimental-extensions \ -// RUN: -march=rv32izvamo0p10 -x c -E -dM %s \ -// RUN: -o - | FileCheck --check-prefix=CHECK-V-EXT %s -// RUN: %clang -target riscv64-unknown-linux-gnu -menable-experimental-extensions \ -// RUN: -march=rv32izvamo0p10 -x c -E -dM %s \ -// RUN: -o - | FileCheck --check-prefix=CHECK-V-EXT %s -// RUN: %clang -target riscv32-unknown-linux-gnu -menable-experimental-extensions \ // RUN: -march=rv32izvlsseg0p10 -x c -E -dM %s \ // RUN: -o - | FileCheck --check-prefix=CHECK-V-EXT %s // RUN: %clang -target riscv64-unknown-linux-gnu -menable-experimental-extensions \ @@ -238,9 +232,19 @@ // RUN: -o - | FileCheck --check-prefix=CHECK-V-EXT %s // CHECK-V-EXT: __riscv_v 10000 // CHECK-V-EXT: __riscv_vector 1 -// CHECK-V-EXT: __riscv_zvamo 10000 // CHECK-V-EXT: __riscv_zvlsseg 10000 +// RUN: %clang -target riscv32-unknown-linux-gnu -menable-experimental-extensions \ +// RUN: -march=rv32izvamo0p10 -x c -E -dM %s \ +// RUN: -o - | FileCheck --check-prefix=CHECK-ZVAMO-EXT %s +// RUN: %clang -target riscv64-unknown-linux-gnu -menable-experimental-extensions \ +// RUN: -march=rv32izvamo0p10 -x c -E -dM %s \ +// RUN: -o - | FileCheck --check-prefix=CHECK-ZVAMO-EXT %s +// CHECK-ZVAMO-EXT: __riscv_v 10000 +// CHECK-ZVAMO-EXT: __riscv_vector 1 +// CHECK-ZVAMO-EXT: __riscv_zvamo 10000 +// CHECK-ZVAMO-EXT: __riscv_zvlsseg 10000 + // RUN: %clang -target riscv32-unknown-linux-gnu -menable-experimental-extensions \ // RUN: -march=rv32izfh0p1 -x c -E -dM %s \ // RUN: -o - | FileCheck --check-prefix=CHECK-ZFH-EXT %s