https://github.com/tclin914 created https://github.com/llvm/llvm-project/pull/107817
None >From f6da0096e4dcf3f7b5c8da4e8e170e88b7ebb471 Mon Sep 17 00:00:00 2001 From: Jim Lin <j...@andestech.com> Date: Mon, 9 Sep 2024 12:59:30 +0800 Subject: [PATCH 1/2] [RISCV] Add testcase for -mcmodel= --- clang/test/Driver/riscv-mcmodel.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 clang/test/Driver/riscv-mcmodel.c diff --git a/clang/test/Driver/riscv-mcmodel.c b/clang/test/Driver/riscv-mcmodel.c new file mode 100644 index 00000000000000..4f5fa95f59b666 --- /dev/null +++ b/clang/test/Driver/riscv-mcmodel.c @@ -0,0 +1,14 @@ +// RUN: %clang --target=riscv32 -### -c -mcmodel=small %s 2>&1 | FileCheck --check-prefix=SMALL %s +// RUN: %clang --target=riscv64 -### -c -mcmodel=small %s 2>&1 | FileCheck --check-prefix=SMALL %s + +// RUN: %clang --target=riscv32 -### -c -mcmodel=medlow %s 2>&1 | FileCheck --check-prefix=SMALL %s +// RUN: %clang --target=riscv64 -### -c -mcmodel=medlow %s 2>&1 | FileCheck --check-prefix=SMALL %s + +// RUN: %clang --target=riscv32 -### -c -mcmodel=medium %s 2>&1 | FileCheck --check-prefix=MEDIUM %s +// RUN: %clang --target=riscv64 -### -c -mcmodel=medium %s 2>&1 | FileCheck --check-prefix=MEDIUM %s + +// RUN: %clang --target=riscv32 -### -c -mcmodel=medany %s 2>&1 | FileCheck --check-prefix=MEDIUM %s +// RUN: %clang --target=riscv64 -### -c -mcmodel=medany %s 2>&1 | FileCheck --check-prefix=MEDIUM %s + +// SMALL: "-mcmodel=small" +// MEDIUM: "-mcmodel=medium" >From 7bc57f0b8db381fb6223056c6e18a7aeddf7788e Mon Sep 17 00:00:00 2001 From: Jim Lin <j...@andestech.com> Date: Mon, 9 Sep 2024 13:09:23 +0800 Subject: [PATCH 2/2] [RISCV] Allow -mcmodel= to accept large for RV64 --- clang/lib/Driver/ToolChains/CommonArgs.cpp | 3 ++- clang/test/Driver/riscv-mcmodel.c | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp index 0601016c3b14b8..f0e1b59076c738 100644 --- a/clang/lib/Driver/ToolChains/CommonArgs.cpp +++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp @@ -2906,7 +2906,8 @@ void tools::addMCModel(const Driver &D, const llvm::opt::ArgList &Args, CM = "small"; else if (CM == "medany") CM = "medium"; - Ok = CM == "small" || CM == "medium"; + Ok = CM == "small" || CM == "medium" || + (CM == "large" && Triple.isRISCV64()); } else if (Triple.getArch() == llvm::Triple::x86_64) { Ok = llvm::is_contained({"small", "kernel", "medium", "large", "tiny"}, CM); diff --git a/clang/test/Driver/riscv-mcmodel.c b/clang/test/Driver/riscv-mcmodel.c index 4f5fa95f59b666..2482672d625fe3 100644 --- a/clang/test/Driver/riscv-mcmodel.c +++ b/clang/test/Driver/riscv-mcmodel.c @@ -10,5 +10,11 @@ // RUN: %clang --target=riscv32 -### -c -mcmodel=medany %s 2>&1 | FileCheck --check-prefix=MEDIUM %s // RUN: %clang --target=riscv64 -### -c -mcmodel=medany %s 2>&1 | FileCheck --check-prefix=MEDIUM %s +// RUN: not %clang --target=riscv32 -### -c -mcmodel=large %s 2>&1 | FileCheck --check-prefix=ERR-LARGE %s +// RUN: %clang --target=riscv64 -### -c -mcmodel=large %s 2>&1 | FileCheck --check-prefix=LARGE %s + // SMALL: "-mcmodel=small" // MEDIUM: "-mcmodel=medium" +// LARGE: "-mcmodel=large" + +// ERR-LARGE: error: unsupported argument 'large' to option '-mcmodel=' for target 'riscv32' _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits