| OLD | NEW | 
|     1 //===--- Targets.cpp - Implement -arch option and targets -----------------===// |     1 //===--- Targets.cpp - Implement -arch option and targets -----------------===// | 
|     2 // |     2 // | 
|     3 //                     The LLVM Compiler Infrastructure |     3 //                     The LLVM Compiler Infrastructure | 
|     4 // |     4 // | 
|     5 // This file is distributed under the University of Illinois Open Source |     5 // This file is distributed under the University of Illinois Open Source | 
|     6 // License. See LICENSE.TXT for details. |     6 // License. See LICENSE.TXT for details. | 
|     7 // |     7 // | 
|     8 //===----------------------------------------------------------------------===// |     8 //===----------------------------------------------------------------------===// | 
|     9 // |     9 // | 
|    10 // This file implements construction of a TargetInfo object from a |    10 // This file implements construction of a TargetInfo object from a | 
| (...skipping 2825 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  2836                                         MacroBuilder &Builder) const { |  2836                                         MacroBuilder &Builder) const { | 
|  2837   DefineStd(Builder, "mips", Opts); |  2837   DefineStd(Builder, "mips", Opts); | 
|  2838   Builder.defineMacro("_mips"); |  2838   Builder.defineMacro("_mips"); | 
|  2839   DefineStd(Builder, "MIPSEL", Opts); |  2839   DefineStd(Builder, "MIPSEL", Opts); | 
|  2840   Builder.defineMacro("_MIPSEL"); |  2840   Builder.defineMacro("_MIPSEL"); | 
|  2841   Builder.defineMacro("__REGISTER_PREFIX__", ""); |  2841   Builder.defineMacro("__REGISTER_PREFIX__", ""); | 
|  2842   getArchDefines(Opts, Builder); |  2842   getArchDefines(Opts, Builder); | 
|  2843 } |  2843 } | 
|  2844 } // end anonymous namespace. |  2844 } // end anonymous namespace. | 
|  2845  |  2845  | 
 |  2846 namespace { | 
 |  2847 class PNaClTargetInfo : public TargetInfo { | 
 |  2848 public: | 
 |  2849   PNaClTargetInfo(const std::string& triple) : TargetInfo(triple) { | 
 |  2850     this->UserLabelPrefix = ""; | 
 |  2851     this->LongAlign = 32; | 
 |  2852     this->LongWidth = 32; | 
 |  2853     this->PointerAlign = 32; | 
 |  2854     this->PointerWidth = 32; | 
 |  2855     this->IntMaxType = TargetInfo::SignedLongLong; | 
 |  2856     this->UIntMaxType = TargetInfo::UnsignedLongLong; | 
 |  2857     this->Int64Type = TargetInfo::SignedLongLong; | 
 |  2858     this->SizeType = TargetInfo::UnsignedInt; | 
 |  2859     DescriptionString = "e-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-" | 
 |  2860                         "f32:32:32-f64:64:64-p:32:32:32-v128:32:32"; | 
 |  2861   } | 
 |  2862  | 
 |  2863   void getDefaultFeatures(const std::string &CPU, | 
 |  2864                           llvm::StringMap<bool> &Features) const { | 
 |  2865   } | 
 |  2866   virtual void getArchDefines(const LangOptions &Opts, | 
 |  2867                               MacroBuilder &Builder) const { | 
 |  2868     Builder.defineMacro("__le32__"); | 
 |  2869     Builder.defineMacro("__pnacl__"); | 
 |  2870   } | 
 |  2871   virtual void getTargetDefines(const LangOptions &Opts, | 
 |  2872                                 MacroBuilder &Builder) const { | 
 |  2873     Builder.defineMacro("__native_client__"); | 
 |  2874     getArchDefines(Opts, Builder); | 
 |  2875   } | 
 |  2876   virtual void getTargetBuiltins(const Builtin::Info *&Records, | 
 |  2877                                  unsigned &NumRecords) const { | 
 |  2878   } | 
 |  2879   virtual const char *getVAListDeclaration() const { | 
 |  2880     return "typedef struct __va_list_tag {" | 
 |  2881            "  void* ptr;" | 
 |  2882            "  void* padding1;" | 
 |  2883            "  void* padding2;" | 
 |  2884            "  void* padding3;" | 
 |  2885            "} __builtin_va_list[1];"; | 
 |  2886   } | 
 |  2887   virtual void getGCCRegNames(const char * const *&Names, | 
 |  2888                               unsigned &NumNames) const; | 
 |  2889   virtual void getGCCRegAliases(const GCCRegAlias *&Aliases, | 
 |  2890                                 unsigned &NumAliases) const; | 
 |  2891   virtual bool validateAsmConstraint(const char *&Name, | 
 |  2892                                      TargetInfo::ConstraintInfo &Info) const { | 
 |  2893     return false; | 
 |  2894   } | 
 |  2895  | 
 |  2896   virtual const char *getClobbers() const { | 
 |  2897     return ""; | 
 |  2898   } | 
 |  2899 }; | 
 |  2900  | 
 |  2901 void PNaClTargetInfo::getGCCRegNames(const char * const *&Names, | 
 |  2902                                      unsigned &NumNames) const { | 
 |  2903   Names = NULL; | 
 |  2904   NumNames = 0; | 
 |  2905 } | 
 |  2906  | 
 |  2907 void PNaClTargetInfo::getGCCRegAliases(const GCCRegAlias *&Aliases, | 
 |  2908                                        unsigned &NumAliases) const { | 
 |  2909   Aliases = NULL; | 
 |  2910   NumAliases = 0; | 
 |  2911 } | 
 |  2912 } // end anonymous namespace. | 
 |  2913  | 
 |  2914  | 
|  2846 //===----------------------------------------------------------------------===// |  2915 //===----------------------------------------------------------------------===// | 
|  2847 // Driver code |  2916 // Driver code | 
|  2848 //===----------------------------------------------------------------------===// |  2917 //===----------------------------------------------------------------------===// | 
|  2849  |  2918  | 
|  2850 static TargetInfo *AllocateTarget(const std::string &T) { |  2919 static TargetInfo *AllocateTarget(const std::string &T) { | 
|  2851   llvm::Triple Triple(T); |  2920   llvm::Triple Triple(T); | 
|  2852   llvm::Triple::OSType os = Triple.getOS(); |  2921   llvm::Triple::OSType os = Triple.getOS(); | 
|  2853  |  2922  | 
|  2854   switch (Triple.getArch()) { |  2923   switch (Triple.getArch()) { | 
|  2855   default: |  2924   default: | 
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  2906     case llvm::Triple::RTEMS: |  2975     case llvm::Triple::RTEMS: | 
|  2907       return new RTEMSTargetInfo<MipselTargetInfo>(T); |  2976       return new RTEMSTargetInfo<MipselTargetInfo>(T); | 
|  2908     case llvm::Triple::FreeBSD: |  2977     case llvm::Triple::FreeBSD: | 
|  2909       return new FreeBSDTargetInfo<MipselTargetInfo>(T); |  2978       return new FreeBSDTargetInfo<MipselTargetInfo>(T); | 
|  2910     case llvm::Triple::NetBSD: |  2979     case llvm::Triple::NetBSD: | 
|  2911       return new NetBSDTargetInfo<MipselTargetInfo>(T); |  2980       return new NetBSDTargetInfo<MipselTargetInfo>(T); | 
|  2912     default: |  2981     default: | 
|  2913       return new MipsTargetInfo(T); |  2982       return new MipsTargetInfo(T); | 
|  2914     } |  2983     } | 
|  2915  |  2984  | 
 |  2985   case llvm::Triple::le32: | 
 |  2986     switch (os) { | 
 |  2987       case llvm::Triple::NativeClient: | 
 |  2988         return new PNaClTargetInfo(T); | 
 |  2989       default: | 
 |  2990         return NULL; | 
 |  2991     } | 
 |  2992  | 
|  2916   case llvm::Triple::ppc: |  2993   case llvm::Triple::ppc: | 
|  2917     if (Triple.isOSDarwin()) |  2994     if (Triple.isOSDarwin()) | 
|  2918       return new DarwinPPC32TargetInfo(T); |  2995       return new DarwinPPC32TargetInfo(T); | 
|  2919     switch (os) { |  2996     switch (os) { | 
|  2920     case llvm::Triple::FreeBSD: |  2997     case llvm::Triple::FreeBSD: | 
|  2921       return new FreeBSDTargetInfo<PPC32TargetInfo>(T); |  2998       return new FreeBSDTargetInfo<PPC32TargetInfo>(T); | 
|  2922     case llvm::Triple::NetBSD: |  2999     case llvm::Triple::NetBSD: | 
|  2923       return new NetBSDTargetInfo<PPC32TargetInfo>(T); |  3000       return new NetBSDTargetInfo<PPC32TargetInfo>(T); | 
|  2924     case llvm::Triple::RTEMS: |  3001     case llvm::Triple::RTEMS: | 
|  2925       return new RTEMSTargetInfo<PPC32TargetInfo>(T); |  3002       return new RTEMSTargetInfo<PPC32TargetInfo>(T); | 
| (...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  3092   // need to pass the minuses. |  3169   // need to pass the minuses. | 
|  3093   Opts.Features.clear(); |  3170   Opts.Features.clear(); | 
|  3094   for (llvm::StringMap<bool>::const_iterator it = Features.begin(), |  3171   for (llvm::StringMap<bool>::const_iterator it = Features.begin(), | 
|  3095          ie = Features.end(); it != ie; ++it) |  3172          ie = Features.end(); it != ie; ++it) | 
|  3096     Opts.Features.push_back(std::string(it->second ? "+" : "-") + |  3173     Opts.Features.push_back(std::string(it->second ? "+" : "-") + | 
|  3097                             it->first().str()); |  3174                             it->first().str()); | 
|  3098   Target->HandleTargetFeatures(Opts.Features); |  3175   Target->HandleTargetFeatures(Opts.Features); | 
|  3099  |  3176  | 
|  3100   return Target.take(); |  3177   return Target.take(); | 
|  3101 } |  3178 } | 
| OLD | NEW |