<div dir="ltr">No problem - thanks for reverting this.<div><br></div><div>I'll fix up the patch and re-commit later today.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Feb 7, 2017 at 12:47 AM, Diana Picus via cfe-commits <span dir="ltr"><<a href="mailto:cfe-commits@lists.llvm.org" target="_blank">cfe-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Dylan,<br>
<br>
I reverted this in r294180 because I think it broke some of the<br>
buildbots. See for example<br>
<a href="http://lab.llvm.org:8011/builders/clang-cmake-armv7-a15/builds/3599" rel="noreferrer" target="_blank">http://lab.llvm.org:8011/<wbr>builders/clang-cmake-armv7-<wbr>a15/builds/3599</a><br>
<a href="http://lab.llvm.org:8011/builders/clang-x86-windows-msvc2015/builds/2271" rel="noreferrer" target="_blank">http://lab.llvm.org:8011/<wbr>builders/clang-x86-windows-<wbr>msvc2015/builds/2271</a><br>
<br>
Sorry,<br>
Diana<br>
<br>
On 6 February 2017 at 10:07, Dylan McKay via cfe-commits<br>
<div class="HOEnZb"><div class="h5"><<a href="mailto:cfe-commits@lists.llvm.org">cfe-commits@lists.llvm.org</a>> wrote:<br>
> Author: dylanmckay<br>
> Date: Mon Feb  6 03:07:56 2017<br>
> New Revision: 294177<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=294177&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project?rev=294177&view=rev</a><br>
> Log:<br>
> [AVR] Allow specifying the CPU on the command line<br>
><br>
> Summary:<br>
> This tells clang about all of the different AVR microcontrollers.<br>
><br>
> It also adds code to define the correct preprocessor macros for each<br>
> device.<br>
><br>
> Reviewers: jroelofs, asl<br>
><br>
> Reviewed By: asl<br>
><br>
> Subscribers: asl, cfe-commits<br>
><br>
> Differential Revision: <a href="https://reviews.llvm.org/D28346" rel="noreferrer" target="_blank">https://reviews.llvm.org/<wbr>D28346</a><br>
><br>
> Added:<br>
>     cfe/trunk/test/CodeGen/avr/<br>
>     cfe/trunk/test/CodeGen/avr/<wbr>target-cpu-defines/<br>
>     cfe/trunk/test/CodeGen/avr/<wbr>target-cpu-defines/atmega328p.<wbr>c<br>
>     cfe/trunk/test/CodeGen/avr/<wbr>target-cpu-defines/attiny104.c<br>
>     cfe/trunk/test/CodeGen/avr/<wbr>target-cpu-defines/common.c<br>
> Modified:<br>
>     cfe/trunk/lib/Basic/Targets.<wbr>cpp<br>
><br>
> Modified: cfe/trunk/lib/Basic/Targets.<wbr>cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets.cpp?rev=294177&r1=294176&r2=294177&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/cfe/trunk/lib/Basic/<wbr>Targets.cpp?rev=294177&r1=<wbr>294176&r2=294177&view=diff</a><br>
> ==============================<wbr>==============================<wbr>==================<br>
> --- cfe/trunk/lib/Basic/Targets.<wbr>cpp (original)<br>
> +++ cfe/trunk/lib/Basic/Targets.<wbr>cpp Mon Feb  6 03:07:56 2017<br>
> @@ -8435,6 +8435,254 @@ public:<br>
>    }<br>
>  };<br>
><br>
> +/// Information about a specific microcontroller.<br>
> +struct MCUInfo {<br>
> +  const char *Name;<br>
> +  const char *DefineName;<br>
> +};<br>
> +<br>
> +// This list should be kept up-to-date with AVRDevices.td in LLVM.<br>
> +static ArrayRef<MCUInfo> AVRMcus = {<br>
> +  { "at90s1200", "__AVR_AT90S1200__" },<br>
> +  { "attiny11", "__AVR_ATtiny11" },<br>
> +  { "attiny12", "__AVR_ATtiny12" },<br>
> +  { "attiny15", "__AVR_ATtiny15" },<br>
> +  { "attiny28", "__AVR_ATtiny28" },<br>
> +  { "at90s2313", "__AVR_AT90S2313" },<br>
> +  { "at90s2323", "__AVR_AT90S2323" },<br>
> +  { "at90s2333", "__AVR_AT90S2333" },<br>
> +  { "at90s2343", "__AVR_AT90S2343" },<br>
> +  { "attiny22", "__AVR_ATtiny22" },<br>
> +  { "attiny26", "__AVR_ATtiny26" },<br>
> +  { "at86rf401", "__AVR_AT86RF401" },<br>
> +  { "at90s4414", "__AVR_AT90S4414" },<br>
> +  { "at90s4433", "__AVR_AT90S4433" },<br>
> +  { "at90s4434", "__AVR_AT90S4434" },<br>
> +  { "at90s8515", "__AVR_AT90S8515" },<br>
> +  { "at90c8534", "__AVR_AT90c8534" },<br>
> +  { "at90s8535", "__AVR_AT90S8535" },<br>
> +  { "ata5272", "__AVR_ATA5272" },<br>
> +  { "attiny13", "__AVR_ATtiny13" },<br>
> +  { "attiny13a", "__AVR_ATtiny13A" },<br>
> +  { "attiny2313", "__AVR_ATtiny2313" },<br>
> +  { "attiny2313a", "__AVR_ATtiny2313A" },<br>
> +  { "attiny24", "__AVR_ATtiny24" },<br>
> +  { "attiny24a", "__AVR_ATtiny24A" },<br>
> +  { "attiny4313", "__AVR_ATtiny4313" },<br>
> +  { "attiny44", "__AVR_ATtiny44" },<br>
> +  { "attiny44a", "__AVR_ATtiny44A" },<br>
> +  { "attiny84", "__AVR_ATtiny84" },<br>
> +  { "attiny84a", "__AVR_ATtiny84A" },<br>
> +  { "attiny25", "__AVR_ATtiny25" },<br>
> +  { "attiny45", "__AVR_ATtiny45" },<br>
> +  { "attiny85", "__AVR_ATtiny85" },<br>
> +  { "attiny261", "__AVR_ATtiny261" },<br>
> +  { "attiny261a", "__AVR_ATtiny261A" },<br>
> +  { "attiny461", "__AVR_ATtiny461" },<br>
> +  { "attiny461a", "__AVR_ATtiny461A" },<br>
> +  { "attiny861", "__AVR_ATtiny861" },<br>
> +  { "attiny861a", "__AVR_ATtiny861A" },<br>
> +  { "attiny87", "__AVR_ATtiny87" },<br>
> +  { "attiny43u", "__AVR_ATtiny43U" },<br>
> +  { "attiny48", "__AVR_ATtiny48" },<br>
> +  { "attiny88", "__AVR_ATtiny88" },<br>
> +  { "attiny828", "__AVR_ATtiny828" },<br>
> +  { "at43usb355", "__AVR_AT43USB355" },<br>
> +  { "at76c711", "__AVR_AT76C711" },<br>
> +  { "atmega103", "__AVR_ATmega103" },<br>
> +  { "at43usb320", "__AVR_AT43USB320" },<br>
> +  { "attiny167", "__AVR_ATtiny167" },<br>
> +  { "at90usb82", "__AVR_AT90USB82" },<br>
> +  { "at90usb162", "__AVR_AT90USB162" },<br>
> +  { "ata5505", "__AVR_ATA5505" },<br>
> +  { "atmega8u2", "__AVR_ATmega8U2" },<br>
> +  { "atmega16u2", "__AVR_ATmega16U2" },<br>
> +  { "atmega32u2", "__AVR_ATmega32U2" },<br>
> +  { "attiny1634", "__AVR_ATtiny1634" },<br>
> +  { "atmega8", "__AVR_ATmega8" },<br>
> +  { "ata6289", "__AVR_ATA6289" },<br>
> +  { "atmega8a", "__AVR_ATmega8A" },<br>
> +  { "ata6285", "__AVR_ATA6285" },<br>
> +  { "ata6286", "__AVR_ATA6286" },<br>
> +  { "atmega48", "__AVR_ATmega48" },<br>
> +  { "atmega48a", "__AVR_ATmega48A" },<br>
> +  { "atmega48pa", "__AVR_ATmega48PA" },<br>
> +  { "atmega48p", "__AVR_ATmega48P" },<br>
> +  { "atmega88", "__AVR_ATmega88" },<br>
> +  { "atmega88a", "__AVR_ATmega88A" },<br>
> +  { "atmega88p", "__AVR_ATmega88P" },<br>
> +  { "atmega88pa", "__AVR_ATmega88PA" },<br>
> +  { "atmega8515", "__AVR_ATmega8515" },<br>
> +  { "atmega8535", "__AVR_ATmega8535" },<br>
> +  { "atmega8hva", "__AVR_ATmega8HVA" },<br>
> +  { "at90pwm1", "__AVR_AT90PWM1" },<br>
> +  { "at90pwm2", "__AVR_AT90PWM2" },<br>
> +  { "at90pwm2b", "__AVR_AT90PWM2B" },<br>
> +  { "at90pwm3", "__AVR_AT90PWM3" },<br>
> +  { "at90pwm3b", "__AVR_AT90PWM3B" },<br>
> +  { "at90pwm81", "__AVR_AT90PWM81" },<br>
> +  { "ata5790", "__AVR_ATA5790" },<br>
> +  { "ata5795", "__AVR_ATA5795" },<br>
> +  { "atmega16", "__AVR_ATmega16" },<br>
> +  { "atmega16a", "__AVR_ATmega16A" },<br>
> +  { "atmega161", "__AVR_ATmega161" },<br>
> +  { "atmega162", "__AVR_ATmega162" },<br>
> +  { "atmega163", "__AVR_ATmega163" },<br>
> +  { "atmega164a", "__AVR_ATmega164A" },<br>
> +  { "atmega164p", "__AVR_ATmega164P" },<br>
> +  { "atmega164pa", "__AVR_ATmega164PA" },<br>
> +  { "atmega165", "__AVR_ATmega165" },<br>
> +  { "atmega165a", "__AVR_ATmega165A" },<br>
> +  { "atmega165p", "__AVR_ATmega165P" },<br>
> +  { "atmega165pa", "__AVR_ATmega165PA" },<br>
> +  { "atmega168", "__AVR_ATmega168" },<br>
> +  { "atmega168a", "__AVR_ATmega168A" },<br>
> +  { "atmega168p", "__AVR_ATmega168P" },<br>
> +  { "atmega168pa", "__AVR_ATmega168PA" },<br>
> +  { "atmega169", "__AVR_ATmega169" },<br>
> +  { "atmega169a", "__AVR_ATmega169A" },<br>
> +  { "atmega169p", "__AVR_ATmega169P" },<br>
> +  { "atmega169pa", "__AVR_ATmega169PA" },<br>
> +  { "atmega32", "__AVR_ATmega32" },<br>
> +  { "atmega32a", "__AVR_ATmega32A" },<br>
> +  { "atmega323", "__AVR_ATmega323" },<br>
> +  { "atmega324a", "__AVR_ATmega324A" },<br>
> +  { "atmega324p", "__AVR_ATmega324P" },<br>
> +  { "atmega324pa", "__AVR_ATmega324PA" },<br>
> +  { "atmega325", "__AVR_ATmega325" },<br>
> +  { "atmega325a", "__AVR_ATmega325A" },<br>
> +  { "atmega325p", "__AVR_ATmega325P" },<br>
> +  { "atmega325pa", "__AVR_ATmega325PA" },<br>
> +  { "atmega3250", "__AVR_ATmega3250" },<br>
> +  { "atmega3250a", "__AVR_ATmega3250A" },<br>
> +  { "atmega3250p", "__AVR_ATmega3250P" },<br>
> +  { "atmega3250pa", "__AVR_ATmega3250PA" },<br>
> +  { "atmega328", "__AVR_ATmega328" },<br>
> +  { "atmega328p", "__AVR_ATmega328P" },<br>
> +  { "atmega329", "__AVR_ATmega329" },<br>
> +  { "atmega329a", "__AVR_ATmega329A" },<br>
> +  { "atmega329p", "__AVR_ATmega329P" },<br>
> +  { "atmega329pa", "__AVR_ATmega329PA" },<br>
> +  { "atmega3290", "__AVR_ATmega3290" },<br>
> +  { "atmega3290a", "__AVR_ATmega3290A" },<br>
> +  { "atmega3290p", "__AVR_ATmega3290P" },<br>
> +  { "atmega3290pa", "__AVR_ATmega3290PA" },<br>
> +  { "atmega406", "__AVR_ATmega406" },<br>
> +  { "atmega64", "__AVR_ATmega64" },<br>
> +  { "atmega64a", "__AVR_ATmega64A" },<br>
> +  { "atmega640", "__AVR_ATmega640" },<br>
> +  { "atmega644", "__AVR_ATmega644" },<br>
> +  { "atmega644a", "__AVR_ATmega644A" },<br>
> +  { "atmega644p", "__AVR_ATmega644P" },<br>
> +  { "atmega644pa", "__AVR_ATmega644PA" },<br>
> +  { "atmega645", "__AVR_ATmega645" },<br>
> +  { "atmega645a", "__AVR_ATmega645A" },<br>
> +  { "atmega645p", "__AVR_ATmega645P" },<br>
> +  { "atmega649", "__AVR_ATmega649" },<br>
> +  { "atmega649a", "__AVR_ATmega649A" },<br>
> +  { "atmega649p", "__AVR_ATmega649P" },<br>
> +  { "atmega6450", "__AVR_ATmega6450" },<br>
> +  { "atmega6450a", "__AVR_ATmega6450A" },<br>
> +  { "atmega6450p", "__AVR_ATmega6450P" },<br>
> +  { "atmega6490", "__AVR_ATmega6490" },<br>
> +  { "atmega6490a", "__AVR_ATmega6490A" },<br>
> +  { "atmega6490p", "__AVR_ATmega6490P" },<br>
> +  { "atmega64rfr2", "__AVR_ATmega64RFR2" },<br>
> +  { "atmega644rfr2", "__AVR_ATmega644RFR2" },<br>
> +  { "atmega16hva", "__AVR_ATmega16HVA" },<br>
> +  { "atmega16hva2", "__AVR_ATmega16HVA2" },<br>
> +  { "atmega16hvb", "__AVR_ATmega16HVB" },<br>
> +  { "atmega16hvbrevb", "__AVR_ATmega16HVBREVB" },<br>
> +  { "atmega32hvb", "__AVR_ATmega32HVB" },<br>
> +  { "atmega32hvbrevb", "__AVR_ATmega32HVBREVB" },<br>
> +  { "atmega64hve", "__AVR_ATmega64HVE" },<br>
> +  { "at90can32", "__AVR_AT90CAN32" },<br>
> +  { "at90can64", "__AVR_AT90CAN64" },<br>
> +  { "at90pwm161", "__AVR_AT90PWM161" },<br>
> +  { "at90pwm216", "__AVR_AT90PWM216" },<br>
> +  { "at90pwm316", "__AVR_AT90PWM316" },<br>
> +  { "atmega32c1", "__AVR_ATmega32C1" },<br>
> +  { "atmega64c1", "__AVR_ATmega64C1" },<br>
> +  { "atmega16m1", "__AVR_ATmega16M1" },<br>
> +  { "atmega32m1", "__AVR_ATmega32M1" },<br>
> +  { "atmega64m1", "__AVR_ATmega64M1" },<br>
> +  { "atmega16u4", "__AVR_ATmega16U4" },<br>
> +  { "atmega32u4", "__AVR_ATmega32U4" },<br>
> +  { "atmega32u6", "__AVR_ATmega32U6" },<br>
> +  { "at90usb646", "__AVR_AT90USB646" },<br>
> +  { "at90usb647", "__AVR_AT90USB647" },<br>
> +  { "at90scr100", "__AVR_AT90SCR100" },<br>
> +  { "at94k", "__AVR_AT94K" },<br>
> +  { "m3000", "__AVR_AT000" },<br>
> +  { "atmega128", "__AVR_ATmega128" },<br>
> +  { "atmega128a", "__AVR_ATmega128A" },<br>
> +  { "atmega1280", "__AVR_ATmega1280" },<br>
> +  { "atmega1281", "__AVR_ATmega1281" },<br>
> +  { "atmega1284", "__AVR_ATmega1284" },<br>
> +  { "atmega1284p", "__AVR_ATmega1284P" },<br>
> +  { "atmega128rfa1", "__AVR_ATmega128RFA1" },<br>
> +  { "atmega128rfr2", "__AVR_ATmega128RFR2" },<br>
> +  { "atmega1284rfr2", "__AVR_ATmega1284RFR2" },<br>
> +  { "at90can128", "__AVR_AT90CAN128" },<br>
> +  { "at90usb1286", "__AVR_AT90USB1286" },<br>
> +  { "at90usb1287", "__AVR_AT90USB1287" },<br>
> +  { "atmega2560", "__AVR_ATmega2560" },<br>
> +  { "atmega2561", "__AVR_ATmega2561" },<br>
> +  { "atmega256rfr2", "__AVR_ATmega256RFR2" },<br>
> +  { "atmega2564rfr2", "__AVR_ATmega2564RFR2" },<br>
> +  { "atxmega16a4", "__AVR_ATxmega16A4" },<br>
> +  { "atxmega16a4u", "__AVR_ATxmega16a4U" },<br>
> +  { "atxmega16c4", "__AVR_ATxmega16C4" },<br>
> +  { "atxmega16d4", "__AVR_ATxmega16D4" },<br>
> +  { "atxmega32a4", "__AVR_ATxmega32A4" },<br>
> +  { "atxmega32a4u", "__AVR_ATxmega32A4U" },<br>
> +  { "atxmega32c4", "__AVR_ATxmega32C4" },<br>
> +  { "atxmega32d4", "__AVR_ATxmega32D4" },<br>
> +  { "atxmega32e5", "__AVR_ATxmega32E5" },<br>
> +  { "atxmega16e5", "__AVR_ATxmega16E5" },<br>
> +  { "atxmega8e5", "__AVR_ATxmega8E5" },<br>
> +  { "atxmega32x1", "__AVR_ATxmega32X1" },<br>
> +  { "atxmega64a3", "__AVR_ATxmega64A3" },<br>
> +  { "atxmega64a3u", "__AVR_ATxmega64A3U" },<br>
> +  { "atxmega64a4u", "__AVR_ATxmega64A4U" },<br>
> +  { "atxmega64b1", "__AVR_ATxmega64B1" },<br>
> +  { "atxmega64b3", "__AVR_ATxmega64B3" },<br>
> +  { "atxmega64c3", "__AVR_ATxmega64C3" },<br>
> +  { "atxmega64d3", "__AVR_ATxmega64D3" },<br>
> +  { "atxmega64d4", "__AVR_ATxmega64D4" },<br>
> +  { "atxmega64a1", "__AVR_ATxmega64A1" },<br>
> +  { "atxmega64a1u", "__AVR_ATxmega64A1U" },<br>
> +  { "atxmega128a3", "__AVR_ATxmega128A3" },<br>
> +  { "atxmega128a3u", "__AVR_ATxmega128A3U" },<br>
> +  { "atxmega128b1", "__AVR_ATxmega128B1" },<br>
> +  { "atxmega128b3", "__AVR_ATxmega128B3" },<br>
> +  { "atxmega128c3", "__AVR_ATxmega128C3" },<br>
> +  { "atxmega128d3", "__AVR_ATxmega128D3" },<br>
> +  { "atxmega128d4", "__AVR_ATxmega128D4" },<br>
> +  { "atxmega192a3", "__AVR_ATxmega192A3" },<br>
> +  { "atxmega192a3u", "__AVR_ATxmega192A3U" },<br>
> +  { "atxmega192c3", "__AVR_ATxmega192C3" },<br>
> +  { "atxmega192d3", "__AVR_ATxmega192D3" },<br>
> +  { "atxmega256a3", "__AVR_ATxmega256A3" },<br>
> +  { "atxmega256a3u", "__AVR_ATxmega256A3U" },<br>
> +  { "atxmega256a3b", "__AVR_ATxmega256A3B" },<br>
> +  { "atxmega256a3bu", "__AVR_ATxmega256A3BU" },<br>
> +  { "atxmega256c3", "__AVR_ATxmega256C3" },<br>
> +  { "atxmega256d3", "__AVR_ATxmega256D3" },<br>
> +  { "atxmega384c3", "__AVR_ATxmega384C3" },<br>
> +  { "atxmega384d3", "__AVR_ATxmega384D3" },<br>
> +  { "atxmega128a1", "__AVR_ATxmega128A1" },<br>
> +  { "atxmega128a1u", "__AVR_ATxmega128A1U" },<br>
> +  { "atxmega128a4u", "__AVR_ATxmega128a4U" },<br>
> +  { "attiny4", "__AVR_ATtiny4" },<br>
> +  { "attiny5", "__AVR_ATtiny5" },<br>
> +  { "attiny9", "__AVR_ATtiny9" },<br>
> +  { "attiny10", "__AVR_ATtiny10" },<br>
> +  { "attiny20", "__AVR_ATtiny20" },<br>
> +  { "attiny40", "__AVR_ATtiny40" },<br>
> +  { "attiny102", "__AVR_ATtiny102" },<br>
> +  { "attiny104", "__AVR_ATtiny104" },<br>
> +};<br>
><br>
>  // AVR Target<br>
>  class AVRTargetInfo : public TargetInfo {<br>
> @@ -8476,7 +8724,17 @@ public:<br>
><br>
>    void getTargetDefines(const LangOptions &Opts,<br>
>                          MacroBuilder &Builder) const override {<br>
> +    Builder.defineMacro("AVR");<br>
> +    Builder.defineMacro("__AVR");<br>
>      Builder.defineMacro("__AVR__")<wbr>;<br>
> +<br>
> +    if (!this->CPU.empty()) {<br>
> +      auto It = std::find_if(AVRMcus.begin(), AVRMcus.end(),<br>
> +        [&](const MCUInfo &Info) { return Info.Name == this->CPU; });<br>
> +<br>
> +      if (It != AVRMcus.end())<br>
> +        Builder.defineMacro(It-><wbr>DefineName);<br>
> +    }<br>
>    }<br>
><br>
>    ArrayRef<Builtin::Info> getTargetBuiltins() const override {<br>
> @@ -8585,6 +8843,41 @@ public:<br>
>                 ? (IsSigned ? SignedInt : UnsignedInt)<br>
>                 : TargetInfo::<wbr>getLeastIntTypeByWidth(<wbr>BitWidth, IsSigned);<br>
>    }<br>
> +<br>
> +  bool setCPU(const std::string &Name) override {<br>
> +    bool IsFamily = llvm::StringSwitch<bool>(Name)<br>
> +      .Case("avr1", true)<br>
> +      .Case("avr2", true)<br>
> +      .Case("avr25", true)<br>
> +      .Case("avr3", true)<br>
> +      .Case("avr31", true)<br>
> +      .Case("avr35", true)<br>
> +      .Case("avr4", true)<br>
> +      .Case("avr5", true)<br>
> +      .Case("avr51", true)<br>
> +      .Case("avr6", true)<br>
> +      .Case("avrxmega1", true)<br>
> +      .Case("avrxmega2", true)<br>
> +      .Case("avrxmega3", true)<br>
> +      .Case("avrxmega4", true)<br>
> +      .Case("avrxmega5", true)<br>
> +      .Case("avrxmega6", true)<br>
> +      .Case("avrxmega7", true)<br>
> +      .Case("avrtiny", true)<br>
> +      .Default(false);<br>
> +<br>
> +    if (IsFamily) this->CPU = Name;<br>
> +<br>
> +    bool IsMCU = std::find_if(AVRMcus.begin(), AVRMcus.end(),<br>
> +      [&](const MCUInfo &Info) { return Info.Name == Name; }) != AVRMcus.end();<br>
> +<br>
> +    if (IsMCU) this->CPU = Name;<br>
> +<br>
> +    return IsFamily || IsMCU;<br>
> +  }<br>
> +<br>
> +protected:<br>
> +  std::string CPU;<br>
>  };<br>
><br>
>  } // end anonymous namespace<br>
><br>
> Added: cfe/trunk/test/CodeGen/avr/<wbr>target-cpu-defines/atmega328p.<wbr>c<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/avr/target-cpu-defines/atmega328p.c?rev=294177&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/cfe/trunk/test/<wbr>CodeGen/avr/target-cpu-<wbr>defines/atmega328p.c?rev=<wbr>294177&view=auto</a><br>
> ==============================<wbr>==============================<wbr>==================<br>
> --- cfe/trunk/test/CodeGen/avr/<wbr>target-cpu-defines/atmega328p.<wbr>c (added)<br>
> +++ cfe/trunk/test/CodeGen/avr/<wbr>target-cpu-defines/atmega328p.<wbr>c Mon Feb  6 03:07:56 2017<br>
> @@ -0,0 +1,6 @@<br>
> +// RUN: %clang_cc1 -E -dM -triple avr-unknown-unknown -target-cpu atmega328p /dev/null | FileCheck -match-full-lines %s<br>
> +<br>
> +// CHECK: #define AVR 1<br>
> +// CHECK: #define __AVR 1<br>
> +// CHECK: #define __AVR_ATmega328P 1<br>
> +// CHECK: #define __AVR__ 1<br>
><br>
> Added: cfe/trunk/test/CodeGen/avr/<wbr>target-cpu-defines/attiny104.c<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/avr/target-cpu-defines/attiny104.c?rev=294177&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/cfe/trunk/test/<wbr>CodeGen/avr/target-cpu-<wbr>defines/attiny104.c?rev=<wbr>294177&view=auto</a><br>
> ==============================<wbr>==============================<wbr>==================<br>
> --- cfe/trunk/test/CodeGen/avr/<wbr>target-cpu-defines/attiny104.c (added)<br>
> +++ cfe/trunk/test/CodeGen/avr/<wbr>target-cpu-defines/attiny104.c Mon Feb  6 03:07:56 2017<br>
> @@ -0,0 +1,6 @@<br>
> +// RUN: %clang_cc1 -E -dM -triple avr-unknown-unknown -target-cpu attiny104 /dev/null | FileCheck -match-full-lines %s<br>
> +<br>
> +// CHECK: #define AVR 1<br>
> +// CHECK: #define __AVR 1<br>
> +// CHECK: #define __AVR_ATtiny104 1<br>
> +// CHECK: #define __AVR__ 1<br>
><br>
> Added: cfe/trunk/test/CodeGen/avr/<wbr>target-cpu-defines/common.c<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/avr/target-cpu-defines/common.c?rev=294177&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/cfe/trunk/test/<wbr>CodeGen/avr/target-cpu-<wbr>defines/common.c?rev=294177&<wbr>view=auto</a><br>
> ==============================<wbr>==============================<wbr>==================<br>
> --- cfe/trunk/test/CodeGen/avr/<wbr>target-cpu-defines/common.c (added)<br>
> +++ cfe/trunk/test/CodeGen/avr/<wbr>target-cpu-defines/common.c Mon Feb  6 03:07:56 2017<br>
> @@ -0,0 +1,5 @@<br>
> +// RUN: %clang_cc1 -E -dM -triple avr-unknown-unknown /dev/null | FileCheck -match-full-lines %s<br>
> +<br>
> +// CHECK: #define AVR 1<br>
> +// CHECK: #define __AVR 1<br>
> +// CHECK: #define __AVR__ 1<br>
><br>
><br>
> ______________________________<wbr>_________________<br>
> cfe-commits mailing list<br>
> <a href="mailto:cfe-commits@lists.llvm.org">cfe-commits@lists.llvm.org</a><br>
> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/cfe-commits</a><br>
______________________________<wbr>_________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@lists.llvm.org">cfe-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/cfe-commits</a><br>
</div></div></blockquote></div><br></div>