<html><body bgcolor="#FFFFFF"><div><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.296875); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469); font-size: medium; ">Doug's 134614 should have fixed this.  Sorry about the breakage. </span></div><div><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.292969); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469); font-size: medium;"><br></span></div><div><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.292969); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469); font-size: medium;">Evan<br></span><br>On Jul 7, 2011, at 4:18 AM, James Molloy <<a href="mailto:james.molloy@arm.com">james.molloy@arm.com</a>> wrote:<br><br></div><div></div><blockquote type="cite"><div><span>Hi Evan,</span><br><span></span><br><span>This (or one of the very closely committed diffs) has broken ARM builds. For</span><br><span>some reason the buildbot passed, but our internal builds (and a manual</span><br><span>checkout just to be sure) all fail with a link error:</span><br><span></span><br><span>Linking CXX executable ../../bin/llc</span><br><span>         ../../lib/libLLVMARMCodeGen.a(ARMSubtarget.cpp.o): In function</span><br><span>`llvm::ARMSubtarget::ARMSubtarget(std::basic_string<char,</span><br><span>std::char_traits<char>, std::allocator<char> > const&,</span><br><span>std::basic_string<char, std::char_traits<char>, std::allocator<char> ></span><br><span>const&, std::basic_string<char, std::char_traits<char>, std::allocator<char></span><br><blockquote type="cite"><span>const&)':</span><br></blockquote><span>         ARMSubtarget.cpp:(.text+0x82c): undefined reference to</span><br><span>`llvm::ARM_MC::ParseARMTriple(llvm::StringRef)'</span><br><span>         ../../lib/libLLVMARMCodeGen.a(ARMSubtarget.cpp.o): In function</span><br><span>`llvm::ARMSubtarget::ARMSubtarget(std::basic_string<char,</span><br><span>std::char_traits<char>, std::allocator<char> > const&,</span><br><span>std::basic_string<char, std::char_traits<char>, std::allocator<char> ></span><br><span>const&, std::basic_string<char, std::char_traits<char>, std::allocator<char></span><br><blockquote type="cite"><span>const&)':</span><br></blockquote><span>         ARMSubtarget.cpp:(.text+0xf10): undefined reference to</span><br><span>`llvm::ARM_MC::ParseARMTriple(llvm::StringRef)'</span><br><span>         collect2: ld returned 1 exit status</span><br><span></span><br><span>Cheers,</span><br><span></span><br><span>James</span><br><span></span><br><blockquote type="cite"><span>-----Original Message-----</span><br></blockquote><blockquote type="cite"><span>From: <a href="mailto:llvm-commits-bounces@cs.uiuc.edu">llvm-commits-bounces@cs.uiuc.edu</a> [mailto:llvm-commits-</span><br></blockquote><blockquote type="cite"><span><a href="mailto:bounces@cs.uiuc.edu">bounces@cs.uiuc.edu</a>] On Behalf Of Evan Cheng</span><br></blockquote><blockquote type="cite"><span>Sent: 07 July 2011 09:27</span><br></blockquote><blockquote type="cite"><span>To: <a href="mailto:llvm-commits@cs.uiuc.edu"><a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a></a></span><br></blockquote><blockquote type="cite"><span>Subject: [llvm-commits] [llvm] r134608 - in /llvm/trunk/lib/Target/ARM:</span><br></blockquote><blockquote type="cite"><span>ARM.td ARMSubtarget.cpp MCTargetDesc/ARMMCTargetDesc.cpp</span><br></blockquote><blockquote type="cite"><span>MCTargetDesc/ARMMCTargetDesc.h</span><br></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><span>Author: evancheng</span><br></blockquote><blockquote type="cite"><span>Date: Thu Jul  7 03:26:46 2011</span><br></blockquote><blockquote type="cite"><span>New Revision: 134608</span><br></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><span>URL: <a href="http://llvm.org/viewvc/llvm-project?rev=134608&view=rev"><a href="http://llvm.org/viewvc/llvm-project?rev=134608&view=rev">http://llvm.org/viewvc/llvm-project?rev=134608&view=rev</a></a></span><br></blockquote><blockquote type="cite"><span>Log:</span><br></blockquote><blockquote type="cite"><span>Sink feature IsThumb into MC layer.</span><br></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><span>Modified:</span><br></blockquote><blockquote type="cite"><span>    llvm/trunk/lib/Target/ARM/ARM.td</span><br></blockquote><blockquote type="cite"><span>    llvm/trunk/lib/Target/ARM/ARMSubtarget.cpp</span><br></blockquote><blockquote type="cite"><span>    llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp</span><br></blockquote><blockquote type="cite"><span>    llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.h</span><br></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><span>Modified: llvm/trunk/lib/Target/ARM/ARM.td</span><br></blockquote><blockquote type="cite"><span>URL: <a href="http://llvm.org/viewvc/llvm-"><a href="http://llvm.org/viewvc/llvm-">http://llvm.org/viewvc/llvm-</a></a></span><br></blockquote><blockquote type="cite"><span>project/llvm/trunk/lib/Target/ARM/ARM.td?rev=134608&r1=134607&r2=134608</span><br></blockquote><blockquote type="cite"><span>&view=diff</span><br></blockquote><blockquote type="cite"><span>=======================================================================</span><br></blockquote><blockquote type="cite"><span>=======</span><br></blockquote><blockquote type="cite"><span>--- llvm/trunk/lib/Target/ARM/ARM.td (original)</span><br></blockquote><blockquote type="cite"><span>+++ llvm/trunk/lib/Target/ARM/ARM.td Thu Jul  7 03:26:46 2011</span><br></blockquote><blockquote type="cite"><span>@@ -16,6 +16,12 @@</span><br></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><span> include "llvm/Target/Target.td"</span><br></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><span>+//===-----------------------------------------------------------------</span><br></blockquote><blockquote type="cite"><span>-----===//</span><br></blockquote><blockquote type="cite"><span>+// ARM Subtarget state.</span><br></blockquote><blockquote type="cite"><span>+//</span><br></blockquote><blockquote type="cite"><span>+</span><br></blockquote><blockquote type="cite"><span>+def ModeThumb  : SubtargetFeature<"thumb", "IsThumb", "true",</span><br></blockquote><blockquote type="cite"><span>+                                  "Thumb mode">;</span><br></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><span> //===-----------------------------------------------------------------</span><br></blockquote><blockquote type="cite"><span>-----===//</span><br></blockquote><blockquote type="cite"><span> // ARM Subtarget features.</span><br></blockquote><blockquote type="cite"><span>@@ -85,23 +91,23 @@</span><br></blockquote><blockquote type="cite"><span> def FeatureMP : SubtargetFeature<"mp", "HasMPExtension", "true",</span><br></blockquote><blockquote type="cite"><span>                                  "Supports Multiprocessing</span><br></blockquote><blockquote type="cite"><span>extension">;</span><br></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><span>-// ARM architectures.</span><br></blockquote><blockquote type="cite"><span>+// ARM ISAs.</span><br></blockquote><blockquote type="cite"><span> def HasV4TOps   : SubtargetFeature<"v4t", "HasV4TOps", "true",</span><br></blockquote><blockquote type="cite"><span>-                                   "ARM v4T">;</span><br></blockquote><blockquote type="cite"><span>+                                   "Support ARM v4T instructions">;</span><br></blockquote><blockquote type="cite"><span> def HasV5TOps   : SubtargetFeature<"v5t", "HasV5TOps", "true",</span><br></blockquote><blockquote type="cite"><span>-                                   "ARM v5T",</span><br></blockquote><blockquote type="cite"><span>+                                   "Support ARM v5T instructions",</span><br></blockquote><blockquote type="cite"><span>                                    [HasV4TOps]>;</span><br></blockquote><blockquote type="cite"><span> def HasV5TEOps  : SubtargetFeature<"v5te", "HasV5TEOps", "true",</span><br></blockquote><blockquote type="cite"><span>-                                   "ARM v5TE, v5TEj, v5TExp",</span><br></blockquote><blockquote type="cite"><span>+                             "Support ARM v5TE, v5TEj, and v5TExp</span><br></blockquote><blockquote type="cite"><span>instructions",</span><br></blockquote><blockquote type="cite"><span>                                    [HasV5TOps]>;</span><br></blockquote><blockquote type="cite"><span> def HasV6Ops    : SubtargetFeature<"v6", "HasV6Ops", "true",</span><br></blockquote><blockquote type="cite"><span>-                                   "ARM v6",</span><br></blockquote><blockquote type="cite"><span>+                                   "Support ARM v6 instructions",</span><br></blockquote><blockquote type="cite"><span>                                    [HasV5TEOps]>;</span><br></blockquote><blockquote type="cite"><span> def HasV6T2Ops  : SubtargetFeature<"v6t2", "HasV6T2Ops", "true",</span><br></blockquote><blockquote type="cite"><span>-                                   "ARM v6t2",</span><br></blockquote><blockquote type="cite"><span>+                                   "Support ARM v6t2 instructions",</span><br></blockquote><blockquote type="cite"><span>                                    [HasV6Ops, FeatureThumb2,</span><br></blockquote><blockquote type="cite"><span>FeatureDSPThumb2]>;</span><br></blockquote><blockquote type="cite"><span> def HasV7Ops    : SubtargetFeature<"v7", "HasV7Ops", "true",</span><br></blockquote><blockquote type="cite"><span>-                                   "ARM v7",</span><br></blockquote><blockquote type="cite"><span>+                                   "Support ARM v7 instructions",</span><br></blockquote><blockquote type="cite"><span>                                    [HasV6T2Ops]>;</span><br></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><span> //===-----------------------------------------------------------------</span><br></blockquote><blockquote type="cite"><span>-----===//</span><br></blockquote><blockquote type="cite"><span>@@ -111,8 +117,6 @@</span><br></blockquote><blockquote type="cite"><span> include "ARMSchedule.td"</span><br></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><span> // ARM processor families.</span><br></blockquote><blockquote type="cite"><span>-def ProcOthers  : SubtargetFeature<"others", "ARMProcFamily",</span><br></blockquote><blockquote type="cite"><span>"Others",</span><br></blockquote><blockquote type="cite"><span>-                                   "One of the other ARM processor</span><br></blockquote><blockquote type="cite"><span>families">;</span><br></blockquote><blockquote type="cite"><span> def ProcA8      : SubtargetFeature<"a8", "ARMProcFamily", "CortexA8",</span><br></blockquote><blockquote type="cite"><span>                                    "Cortex-A8 ARM processors",</span><br></blockquote><blockquote type="cite"><span>                                    [FeatureSlowFPBrcc,</span><br></blockquote><blockquote type="cite"><span>FeatureNEONForFP,</span><br></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><span>Modified: llvm/trunk/lib/Target/ARM/ARMSubtarget.cpp</span><br></blockquote><blockquote type="cite"><span>URL: <a href="http://llvm.org/viewvc/llvm-"><a href="http://llvm.org/viewvc/llvm-">http://llvm.org/viewvc/llvm-</a></a></span><br></blockquote><blockquote type="cite"><span>project/llvm/trunk/lib/Target/ARM/ARMSubtarget.cpp?rev=134608&r1=134607</span><br></blockquote><blockquote type="cite"><span>&r2=134608&view=diff</span><br></blockquote><blockquote type="cite"><span>=======================================================================</span><br></blockquote><blockquote type="cite"><span>=======</span><br></blockquote><blockquote type="cite"><span>--- llvm/trunk/lib/Target/ARM/ARMSubtarget.cpp (original)</span><br></blockquote><blockquote type="cite"><span>+++ llvm/trunk/lib/Target/ARM/ARMSubtarget.cpp Thu Jul  7 03:26:46 2011</span><br></blockquote><blockquote type="cite"><span>@@ -81,14 +81,13 @@</span><br></blockquote><blockquote type="cite"><span>   // Insert the architecture feature derived from the target triple</span><br></blockquote><blockquote type="cite"><span>into the</span><br></blockquote><blockquote type="cite"><span>   // feature string. This is important for setting features that are</span><br></blockquote><blockquote type="cite"><span>implied</span><br></blockquote><blockquote type="cite"><span>   // based on the architecture version.</span><br></blockquote><blockquote type="cite"><span>-  std::string ArchFS = ARM_MC::ParseARMTriple(TT, IsThumb);</span><br></blockquote><blockquote type="cite"><span>+  std::string ArchFS = ARM_MC::ParseARMTriple(TT);</span><br></blockquote><blockquote type="cite"><span>   if (!FS.empty()) {</span><br></blockquote><blockquote type="cite"><span>     if (!ArchFS.empty())</span><br></blockquote><blockquote type="cite"><span>       ArchFS = ArchFS + "," + FS;</span><br></blockquote><blockquote type="cite"><span>     else</span><br></blockquote><blockquote type="cite"><span>       ArchFS = FS;</span><br></blockquote><blockquote type="cite"><span>   }</span><br></blockquote><blockquote type="cite"><span>-</span><br></blockquote><blockquote type="cite"><span>   ParseSubtargetFeatures(CPUString, ArchFS);</span><br></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><span>   // Thumb2 implies at least V6T2. FIXME: Fix tests to explicitly</span><br></blockquote><blockquote type="cite"><span>specify a</span><br></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><span>Modified: llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp</span><br></blockquote><blockquote type="cite"><span>URL: <a href="http://llvm.org/viewvc/llvm-"><a href="http://llvm.org/viewvc/llvm-">http://llvm.org/viewvc/llvm-</a></a></span><br></blockquote><blockquote type="cite"><span>project/llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp?rev=</span><br></blockquote><blockquote type="cite"><span>134608&r1=134607&r2=134608&view=diff</span><br></blockquote><blockquote type="cite"><span>=======================================================================</span><br></blockquote><blockquote type="cite"><span>=======</span><br></blockquote><blockquote type="cite"><span>--- llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp</span><br></blockquote><blockquote type="cite"><span>(original)</span><br></blockquote><blockquote type="cite"><span>+++ llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp Thu Jul</span><br></blockquote><blockquote type="cite"><span>7 03:26:46 2011</span><br></blockquote><blockquote type="cite"><span>@@ -42,8 +42,16 @@</span><br></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><span> MCSubtargetInfo *createARMMCSubtargetInfo(StringRef TT, StringRef CPU,</span><br></blockquote><blockquote type="cite"><span>                                           StringRef FS) {</span><br></blockquote><blockquote type="cite"><span>+  std::string ArchFS = ARM_MC::ParseARMTriple(TT);</span><br></blockquote><blockquote type="cite"><span>+  if (!FS.empty()) {</span><br></blockquote><blockquote type="cite"><span>+    if (!ArchFS.empty())</span><br></blockquote><blockquote type="cite"><span>+      ArchFS = ArchFS + "," + FS.str();</span><br></blockquote><blockquote type="cite"><span>+    else</span><br></blockquote><blockquote type="cite"><span>+      ArchFS = FS;</span><br></blockquote><blockquote type="cite"><span>+  }</span><br></blockquote><blockquote type="cite"><span>+</span><br></blockquote><blockquote type="cite"><span>   MCSubtargetInfo *X = new MCSubtargetInfo();</span><br></blockquote><blockquote type="cite"><span>-  InitARMMCSubtargetInfo(X, CPU, FS);</span><br></blockquote><blockquote type="cite"><span>+  InitARMMCSubtargetInfo(X, CPU, ArchFS);</span><br></blockquote><blockquote type="cite"><span>   return X;</span><br></blockquote><blockquote type="cite"><span> }</span><br></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><span>@@ -74,16 +82,17 @@</span><br></blockquote><blockquote type="cite"><span>                                           createARMMCSubtargetInfo);</span><br></blockquote><blockquote type="cite"><span> }</span><br></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><span>-std::string ARM_MC::ParseARMTriple(StringRef TT, bool &IsThumb) {</span><br></blockquote><blockquote type="cite"><span>+std::string ARM_MC::ParseARMTriple(StringRef TT) {</span><br></blockquote><blockquote type="cite"><span>   // Set the boolean corresponding to the current target triple, or</span><br></blockquote><blockquote type="cite"><span>the default</span><br></blockquote><blockquote type="cite"><span>   // if one cannot be determined, to true.</span><br></blockquote><blockquote type="cite"><span>   unsigned Len = TT.size();</span><br></blockquote><blockquote type="cite"><span>   unsigned Idx = 0;</span><br></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><span>+  bool isThumb = false;</span><br></blockquote><blockquote type="cite"><span>   if (Len >= 5 && TT.substr(0, 4) == "armv")</span><br></blockquote><blockquote type="cite"><span>     Idx = 4;</span><br></blockquote><blockquote type="cite"><span>   else if (Len >= 6 && TT.substr(0, 5) == "thumb") {</span><br></blockquote><blockquote type="cite"><span>-    IsThumb = true;</span><br></blockquote><blockquote type="cite"><span>+    isThumb = true;</span><br></blockquote><blockquote type="cite"><span>     if (Len >= 7 && TT[5] == 'v')</span><br></blockquote><blockquote type="cite"><span>       Idx = 6;</span><br></blockquote><blockquote type="cite"><span>   }</span><br></blockquote><blockquote type="cite"><span>@@ -116,5 +125,12 @@</span><br></blockquote><blockquote type="cite"><span>       ARMArchFeature = "+v4t";</span><br></blockquote><blockquote type="cite"><span>   }</span><br></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><span>+  if (isThumb) {</span><br></blockquote><blockquote type="cite"><span>+    if (ARMArchFeature.empty())</span><br></blockquote><blockquote type="cite"><span>+      ARMArchFeature = "+thumb";</span><br></blockquote><blockquote type="cite"><span>+    else</span><br></blockquote><blockquote type="cite"><span>+      ARMArchFeature += ",+thumb";</span><br></blockquote><blockquote type="cite"><span>+  }</span><br></blockquote><blockquote type="cite"><span>+</span><br></blockquote><blockquote type="cite"><span>   return ARMArchFeature;</span><br></blockquote><blockquote type="cite"><span> }</span><br></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><span>Modified: llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.h</span><br></blockquote><blockquote type="cite"><span>URL: <a href="http://llvm.org/viewvc/llvm-"><a href="http://llvm.org/viewvc/llvm-">http://llvm.org/viewvc/llvm-</a></a></span><br></blockquote><blockquote type="cite"><span>project/llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.h?rev=13</span><br></blockquote><blockquote type="cite"><span>4608&r1=134607&r2=134608&view=diff</span><br></blockquote><blockquote type="cite"><span>=======================================================================</span><br></blockquote><blockquote type="cite"><span>=======</span><br></blockquote><blockquote type="cite"><span>--- llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.h (original)</span><br></blockquote><blockquote type="cite"><span>+++ llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.h Thu Jul  7</span><br></blockquote><blockquote type="cite"><span>03:26:46 2011</span><br></blockquote><blockquote type="cite"><span>@@ -23,7 +23,7 @@</span><br></blockquote><blockquote type="cite"><span> extern Target TheARMTarget, TheThumbTarget;</span><br></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><span> namespace ARM_MC {</span><br></blockquote><blockquote type="cite"><span>-  std::string ParseARMTriple(StringRef TT, bool &IsThumb);</span><br></blockquote><blockquote type="cite"><span>+  std::string ParseARMTriple(StringRef TT);</span><br></blockquote><blockquote type="cite"><span> }</span><br></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><span> } // End llvm namespace</span><br></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><span></span><br></blockquote><blockquote type="cite"><span>_______________________________________________</span><br></blockquote><blockquote type="cite"><span>llvm-commits mailing list</span><br></blockquote><blockquote type="cite"><span><a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a></span><br></blockquote><blockquote type="cite"><span><a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a></span><br></blockquote><span></span><br><span></span><br><span></span><br><span></span><br></div></blockquote></body></html>