[llvm-commits] [llvm] r134608 - in /llvm/trunk/lib/Target/ARM: ARM.td ARMSubtarget.cpp MCTargetDesc/ARMMCTargetDesc.cpp MCTargetDesc/ARMMCTargetDesc.h

James Molloy james.molloy at arm.com
Thu Jul 7 04:18:17 PDT 2011


Hi Evan,

This (or one of the very closely committed diffs) has broken ARM builds. For
some reason the buildbot passed, but our internal builds (and a manual
checkout just to be sure) all fail with a link error:

Linking CXX executable ../../bin/llc
         ../../lib/libLLVMARMCodeGen.a(ARMSubtarget.cpp.o): In function
`llvm::ARMSubtarget::ARMSubtarget(std::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&,
std::basic_string<char, std::char_traits<char>, std::allocator<char> >
const&, std::basic_string<char, std::char_traits<char>, std::allocator<char>
> const&)':
         ARMSubtarget.cpp:(.text+0x82c): undefined reference to
`llvm::ARM_MC::ParseARMTriple(llvm::StringRef)'
         ../../lib/libLLVMARMCodeGen.a(ARMSubtarget.cpp.o): In function
`llvm::ARMSubtarget::ARMSubtarget(std::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&,
std::basic_string<char, std::char_traits<char>, std::allocator<char> >
const&, std::basic_string<char, std::char_traits<char>, std::allocator<char>
> const&)':
         ARMSubtarget.cpp:(.text+0xf10): undefined reference to
`llvm::ARM_MC::ParseARMTriple(llvm::StringRef)'
         collect2: ld returned 1 exit status

Cheers,

James

> -----Original Message-----
> From: llvm-commits-bounces at cs.uiuc.edu [mailto:llvm-commits-
> bounces at cs.uiuc.edu] On Behalf Of Evan Cheng
> Sent: 07 July 2011 09:27
> To: llvm-commits at cs.uiuc.edu
> Subject: [llvm-commits] [llvm] r134608 - in /llvm/trunk/lib/Target/ARM:
> ARM.td ARMSubtarget.cpp MCTargetDesc/ARMMCTargetDesc.cpp
> MCTargetDesc/ARMMCTargetDesc.h
> 
> Author: evancheng
> Date: Thu Jul  7 03:26:46 2011
> New Revision: 134608
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=134608&view=rev
> Log:
> Sink feature IsThumb into MC layer.
> 
> Modified:
>     llvm/trunk/lib/Target/ARM/ARM.td
>     llvm/trunk/lib/Target/ARM/ARMSubtarget.cpp
>     llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp
>     llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.h
> 
> Modified: llvm/trunk/lib/Target/ARM/ARM.td
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/lib/Target/ARM/ARM.td?rev=134608&r1=134607&r2=134608
> &view=diff
> =======================================================================
> =======
> --- llvm/trunk/lib/Target/ARM/ARM.td (original)
> +++ llvm/trunk/lib/Target/ARM/ARM.td Thu Jul  7 03:26:46 2011
> @@ -16,6 +16,12 @@
> 
>  include "llvm/Target/Target.td"
> 
> +//===-----------------------------------------------------------------
> -----===//
> +// ARM Subtarget state.
> +//
> +
> +def ModeThumb  : SubtargetFeature<"thumb", "IsThumb", "true",
> +                                  "Thumb mode">;
> 
>  //===-----------------------------------------------------------------
> -----===//
>  // ARM Subtarget features.
> @@ -85,23 +91,23 @@
>  def FeatureMP : SubtargetFeature<"mp", "HasMPExtension", "true",
>                                   "Supports Multiprocessing
> extension">;
> 
> -// ARM architectures.
> +// ARM ISAs.
>  def HasV4TOps   : SubtargetFeature<"v4t", "HasV4TOps", "true",
> -                                   "ARM v4T">;
> +                                   "Support ARM v4T instructions">;
>  def HasV5TOps   : SubtargetFeature<"v5t", "HasV5TOps", "true",
> -                                   "ARM v5T",
> +                                   "Support ARM v5T instructions",
>                                     [HasV4TOps]>;
>  def HasV5TEOps  : SubtargetFeature<"v5te", "HasV5TEOps", "true",
> -                                   "ARM v5TE, v5TEj, v5TExp",
> +                             "Support ARM v5TE, v5TEj, and v5TExp
> instructions",
>                                     [HasV5TOps]>;
>  def HasV6Ops    : SubtargetFeature<"v6", "HasV6Ops", "true",
> -                                   "ARM v6",
> +                                   "Support ARM v6 instructions",
>                                     [HasV5TEOps]>;
>  def HasV6T2Ops  : SubtargetFeature<"v6t2", "HasV6T2Ops", "true",
> -                                   "ARM v6t2",
> +                                   "Support ARM v6t2 instructions",
>                                     [HasV6Ops, FeatureThumb2,
> FeatureDSPThumb2]>;
>  def HasV7Ops    : SubtargetFeature<"v7", "HasV7Ops", "true",
> -                                   "ARM v7",
> +                                   "Support ARM v7 instructions",
>                                     [HasV6T2Ops]>;
> 
>  //===-----------------------------------------------------------------
> -----===//
> @@ -111,8 +117,6 @@
>  include "ARMSchedule.td"
> 
>  // ARM processor families.
> -def ProcOthers  : SubtargetFeature<"others", "ARMProcFamily",
> "Others",
> -                                   "One of the other ARM processor
> families">;
>  def ProcA8      : SubtargetFeature<"a8", "ARMProcFamily", "CortexA8",
>                                     "Cortex-A8 ARM processors",
>                                     [FeatureSlowFPBrcc,
> FeatureNEONForFP,
> 
> Modified: llvm/trunk/lib/Target/ARM/ARMSubtarget.cpp
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/lib/Target/ARM/ARMSubtarget.cpp?rev=134608&r1=134607
> &r2=134608&view=diff
> =======================================================================
> =======
> --- llvm/trunk/lib/Target/ARM/ARMSubtarget.cpp (original)
> +++ llvm/trunk/lib/Target/ARM/ARMSubtarget.cpp Thu Jul  7 03:26:46 2011
> @@ -81,14 +81,13 @@
>    // Insert the architecture feature derived from the target triple
> into the
>    // feature string. This is important for setting features that are
> implied
>    // based on the architecture version.
> -  std::string ArchFS = ARM_MC::ParseARMTriple(TT, IsThumb);
> +  std::string ArchFS = ARM_MC::ParseARMTriple(TT);
>    if (!FS.empty()) {
>      if (!ArchFS.empty())
>        ArchFS = ArchFS + "," + FS;
>      else
>        ArchFS = FS;
>    }
> -
>    ParseSubtargetFeatures(CPUString, ArchFS);
> 
>    // Thumb2 implies at least V6T2. FIXME: Fix tests to explicitly
> specify a
> 
> Modified: llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp?rev=
> 134608&r1=134607&r2=134608&view=diff
> =======================================================================
> =======
> --- llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp
> (original)
> +++ llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp Thu Jul
> 7 03:26:46 2011
> @@ -42,8 +42,16 @@
> 
>  MCSubtargetInfo *createARMMCSubtargetInfo(StringRef TT, StringRef CPU,
>                                            StringRef FS) {
> +  std::string ArchFS = ARM_MC::ParseARMTriple(TT);
> +  if (!FS.empty()) {
> +    if (!ArchFS.empty())
> +      ArchFS = ArchFS + "," + FS.str();
> +    else
> +      ArchFS = FS;
> +  }
> +
>    MCSubtargetInfo *X = new MCSubtargetInfo();
> -  InitARMMCSubtargetInfo(X, CPU, FS);
> +  InitARMMCSubtargetInfo(X, CPU, ArchFS);
>    return X;
>  }
> 
> @@ -74,16 +82,17 @@
>                                            createARMMCSubtargetInfo);
>  }
> 
> -std::string ARM_MC::ParseARMTriple(StringRef TT, bool &IsThumb) {
> +std::string ARM_MC::ParseARMTriple(StringRef TT) {
>    // Set the boolean corresponding to the current target triple, or
> the default
>    // if one cannot be determined, to true.
>    unsigned Len = TT.size();
>    unsigned Idx = 0;
> 
> +  bool isThumb = false;
>    if (Len >= 5 && TT.substr(0, 4) == "armv")
>      Idx = 4;
>    else if (Len >= 6 && TT.substr(0, 5) == "thumb") {
> -    IsThumb = true;
> +    isThumb = true;
>      if (Len >= 7 && TT[5] == 'v')
>        Idx = 6;
>    }
> @@ -116,5 +125,12 @@
>        ARMArchFeature = "+v4t";
>    }
> 
> +  if (isThumb) {
> +    if (ARMArchFeature.empty())
> +      ARMArchFeature = "+thumb";
> +    else
> +      ARMArchFeature += ",+thumb";
> +  }
> +
>    return ARMArchFeature;
>  }
> 
> Modified: llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.h
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.h?rev=13
> 4608&r1=134607&r2=134608&view=diff
> =======================================================================
> =======
> --- llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.h (original)
> +++ llvm/trunk/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.h Thu Jul  7
> 03:26:46 2011
> @@ -23,7 +23,7 @@
>  extern Target TheARMTarget, TheThumbTarget;
> 
>  namespace ARM_MC {
> -  std::string ParseARMTriple(StringRef TT, bool &IsThumb);
> +  std::string ParseARMTriple(StringRef TT);
>  }
> 
>  } // End llvm namespace
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits








More information about the llvm-commits mailing list