Index: clang/lib/Basic/Targets/AVR.cpp =================================================================== --- clang/lib/Basic/Targets/AVR.cpp +++ clang/lib/Basic/Targets/AVR.cpp @@ -384,6 +384,9 @@ auto It = llvm::find_if( AVRMcus, [&](const MCUInfo &Info) { return Info.Name == this->CPU; }); + if (It->IsTiny) + Builder.defineMacro("__AVR_TINY__", "1"); + if (It != std::end(AVRMcus)) { Builder.defineMacro(It->DefineName); if (It->NumFlashBanks >= 1) Index: clang/test/Preprocessor/avr-common.c =================================================================== --- clang/test/Preprocessor/avr-common.c +++ clang/test/Preprocessor/avr-common.c @@ -1,6 +1,10 @@ // RUN: %clang_cc1 -E -dM -triple avr-unknown-unknown /dev/null | FileCheck -match-full-lines %s +// RUN: %clang_cc1 -E -dM -triple avr-unknown-unknown -target-cpu attiny4 /dev/null | FileCheck -match-full-lines %s --check-prefix TINY // CHECK: #define AVR 1 // CHECK: #define __AVR 1 // CHECK: #define __AVR__ 1 // CHECK: #define __ELF__ 1 +// CHECK-NOT: __AVR_TINY__ + +// TINY: #define __AVR_TINY__ 1