https://github.com/benshi001 updated https://github.com/llvm/llvm-project/pull/111798
>From 45b72f225a663c96652955347f9e2c2fb5044335 Mon Sep 17 00:00:00 2001 From: Ben Shi <benn...@tencent.com> Date: Thu, 10 Oct 2024 15:31:19 +0800 Subject: [PATCH 1/2] [clang][Driver][AVR] Reject c/c++ compilation for avr1 devices avr-gcc also rejects since these devices has no SRAM. Fixes https://github.com/llvm/llvm-project/issues/96881 --- clang/docs/ReleaseNotes.rst | 2 ++ clang/lib/Driver/ToolChains/AVR.cpp | 8 ++++++++ clang/test/Driver/avr-mmcu.c | 5 ++--- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst index 16e6a230ef428e..f66330fb1e08e6 100644 --- a/clang/docs/ReleaseNotes.rst +++ b/clang/docs/ReleaseNotes.rst @@ -598,6 +598,8 @@ WebAssembly Support AVR Support ^^^^^^^^^^^ +- Reject C/C++ compilation for avr1 devices which has no SRAM. + DWARF Support in Clang ---------------------- diff --git a/clang/lib/Driver/ToolChains/AVR.cpp b/clang/lib/Driver/ToolChains/AVR.cpp index bb5c0e6db9978e..08e906ac9e8067 100644 --- a/clang/lib/Driver/ToolChains/AVR.cpp +++ b/clang/lib/Driver/ToolChains/AVR.cpp @@ -400,6 +400,14 @@ void AVRToolChain::AddClangSystemIncludeArgs(const ArgList &DriverArgs, void AVRToolChain::addClangTargetOptions( const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, Action::OffloadKind DeviceOffloadKind) const { + // Reject C/C++ compilation for avr1 devices since they have no SRAM. + const Driver &D = getDriver(); + std::string CPU = getCPUName(D, DriverArgs, getTriple()); + std::optional<StringRef> FamilyName = GetMCUFamilyName(CPU); + if (CPU == "avr1" || (FamilyName && *FamilyName == "avr1")) + D.Diag(diag::err_drv_opt_unsupported_input_type) + << "-mmcu=" + CPU << "c/c++"; + // By default, use `.ctors` (not `.init_array`), as required by libgcc, which // runs constructors/destructors on AVR. if (!DriverArgs.hasFlag(options::OPT_fuse_init_array, diff --git a/clang/test/Driver/avr-mmcu.c b/clang/test/Driver/avr-mmcu.c index 6c13ab5b68d3b9..0edb05dad136ab 100644 --- a/clang/test/Driver/avr-mmcu.c +++ b/clang/test/Driver/avr-mmcu.c @@ -1,8 +1,7 @@ // A test for the propagation of the -mmcu option to -cc1 and -cc1as -// RUN: %clang -### --target=avr -mmcu=attiny11 -save-temps %s 2>&1 | FileCheck -check-prefix=CHECK0 %s -// CHECK0: "-cc1" {{.*}} "-target-cpu" "attiny11" -// CHECK0: "-cc1as" {{.*}} "-target-cpu" "attiny11" +// RUN: not %clang -### --target=avr -mmcu=attiny11 %s 2>&1 | FileCheck -check-prefix=CHECK0 %s +// CHECK0: error: '-mmcu=attiny11' invalid for input of type c/c++ // RUN: %clang -### --target=avr -mmcu=at90s2313 -save-temps %s 2>&1 | FileCheck -check-prefix=CHECK1 %s // CHECK1: "-cc1" {{.*}} "-target-cpu" "at90s2313" >From 8bb868ed0a03a1006ba95e95f919a11bb35b07f4 Mon Sep 17 00:00:00 2001 From: Ben Shi <benn...@tencent.com> Date: Mon, 14 Oct 2024 19:07:20 +0800 Subject: [PATCH 2/2] Fix a typo --- clang/docs/ReleaseNotes.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst index f66330fb1e08e6..d4fcc1209a7382 100644 --- a/clang/docs/ReleaseNotes.rst +++ b/clang/docs/ReleaseNotes.rst @@ -598,7 +598,7 @@ WebAssembly Support AVR Support ^^^^^^^^^^^ -- Reject C/C++ compilation for avr1 devices which has no SRAM. +- Reject C/C++ compilation for avr1 devices which have no SRAM. DWARF Support in Clang ---------------------- _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits