Index: Targets.cpp =================================================================== --- Targets.cpp (revision 116206) +++ Targets.cpp (working copy) @@ -430,17 +430,6 @@ virtual void getTargetDefines(const LangOptions &Opts, MacroBuilder &Builder) const; - virtual const char *getVAListDeclaration() const { - return "typedef char* __builtin_va_list;"; - // This is the right definition for ABI/V4: System V.4/eabi. - /*return "typedef struct __va_list_tag {" - " unsigned char gpr;" - " unsigned char fpr;" - " unsigned short reserved;" - " void* overflow_arg_area;" - " void* reg_save_area;" - "} __builtin_va_list[1];";*/ - } virtual void getGCCRegNames(const char * const *&Names, unsigned &NumNames) const; virtual void getGCCRegAliases(const GCCRegAlias *&Aliases, @@ -704,8 +693,19 @@ "i64:64:64-f32:32:32-f64:64:64-v128:128:128-n32"; if (getTriple().getOS() == llvm::Triple::FreeBSD) - this->SizeType = TargetInfo::UnsignedInt; + SizeType = UnsignedInt; } + + virtual const char *getVAListDeclaration() const { + // This is the ELF definition, and is overridden by the Darwin sub-target + return "typedef struct __va_list_tag {" + " unsigned char gpr;" + " unsigned char fpr;" + " unsigned short reserved;" + " void* overflow_arg_area;" + " void* reg_save_area;" + "} __builtin_va_list[1];"; + } }; } // end anonymous namespace. @@ -720,18 +720,30 @@ DescriptionString = "E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-" "i64:64:64-f32:32:32-f64:64:64-v128:128:128-n32:64"; } + virtual const char *getVAListDeclaration() const { + return "typedef char* __builtin_va_list;"; + } }; } // end anonymous namespace. namespace { class DarwinPPCTargetInfo : - public DarwinTargetInfo { + public DarwinTargetInfo { public: DarwinPPCTargetInfo(const std::string& triple) - : DarwinTargetInfo(triple) { + : DarwinTargetInfo(triple) { HasAlignMac68kSupport = true; } + virtual const char *getVAListDeclaration() const { + return "typedef char* __builtin_va_list;"; + } + virtual unsigned getBoolWidth() { + return 32; + } + virtual unsigned getBoolAlign() { + return 32; + } }; class DarwinPPC64TargetInfo : @@ -741,6 +753,12 @@ : DarwinTargetInfo(triple) { HasAlignMac68kSupport = true; } + virtual unsigned getBoolWidth() { + return 32; + } + virtual unsigned getBoolAlign() { + return 32; + } }; } // end anonymous namespace.