diff options
| author | Chris Lattner <sabre@nondot.org> | 2009-02-06 05:04:11 +0000 | 
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2009-02-06 05:04:11 +0000 | 
| commit | a91c30fdb08408fb340d344706d4ff7ad9a3d43b (patch) | |
| tree | a0372781d18a955106546b7d4081b77e161194bd /clang | |
| parent | 61898606dc89b1c72fce11cf348cf0626defa10a (diff) | |
| download | bcm5719-llvm-a91c30fdb08408fb340d344706d4ff7ad9a3d43b.tar.gz bcm5719-llvm-a91c30fdb08408fb340d344706d4ff7ad9a3d43b.zip  | |
simplify and refactor a bunch of type definition code in Preprocessor
predefines buffer initialization.
llvm-svn: 63919
Diffstat (limited to 'clang')
| -rw-r--r-- | clang/include/clang/Basic/TargetInfo.h | 6 | ||||
| -rw-r--r-- | clang/lib/Basic/TargetInfo.cpp | 16 | ||||
| -rw-r--r-- | clang/lib/Lex/Preprocessor.cpp | 73 | 
3 files changed, 34 insertions, 61 deletions
diff --git a/clang/include/clang/Basic/TargetInfo.h b/clang/include/clang/Basic/TargetInfo.h index 5eb74391c80..a0bd74b421b 100644 --- a/clang/include/clang/Basic/TargetInfo.h +++ b/clang/include/clang/Basic/TargetInfo.h @@ -61,7 +61,7 @@ public:    ///===---- Target Data Type Query Methods -------------------------------===//    enum IntType { -    NoInt = 0x0, +    NoInt = 0,      SignedShort,      UnsignedShort,      SignedInt, @@ -165,6 +165,10 @@ public:      return UserLabelPrefix;    } +  /// getTypeName - Return the user string for the specified integer type enum. +  /// For example, SignedShort -> "short". +  static const char *getTypeName(IntType T); +      ///===---- Other target property query methods --------------------------===//    /// getTargetDefines - Appends the target-specific #define values for this diff --git a/clang/lib/Basic/TargetInfo.cpp b/clang/lib/Basic/TargetInfo.cpp index 2b73582b786..378a91503bf 100644 --- a/clang/lib/Basic/TargetInfo.cpp +++ b/clang/lib/Basic/TargetInfo.cpp @@ -51,6 +51,22 @@ TargetInfo::TargetInfo(const std::string &T) : Triple(T) {  // Out of line virtual dtor for TargetInfo.  TargetInfo::~TargetInfo() {} +/// getTypeName - Return the user string for the specified integer type enum. +/// For example, SignedShort -> "short". +const char *TargetInfo::getTypeName(IntType T) { +  switch (T) { +  default: assert(0 && "not an integer!"); +  case SignedShort:      return "short"; +  case UnsignedShort:    return "unsigned short"; +  case SignedInt:        return "int"; +  case UnsignedInt:      return "unsigned int"; +  case SignedLong:       return "long int"; +  case UnsignedLong:     return "long unsigned int"; +  case SignedLongLong:   return "long long int"; +  case UnsignedLongLong: return "long long unsigned int"; +  } +} +  //===----------------------------------------------------------------------===// diff --git a/clang/lib/Lex/Preprocessor.cpp b/clang/lib/Lex/Preprocessor.cpp index 69761c824a8..c1e852cd2a2 100644 --- a/clang/lib/Lex/Preprocessor.cpp +++ b/clang/lib/Lex/Preprocessor.cpp @@ -428,6 +428,14 @@ static void DefineTypeSize(const char *MacroName, unsigned TypeWidth,    DefineBuiltinMacro(Buf, MacroBuf);  } +static void DefineType(const char *MacroName, TargetInfo::IntType Ty, +                       std::vector<char> &Buf) { +  char MacroBuf[60]; +  sprintf(MacroBuf, "%s=%s", MacroName, TargetInfo::getTypeName(Ty)); +  DefineBuiltinMacro(Buf, MacroBuf); +} + +  static void InitializePredefinedMacros(Preprocessor &PP,                                          std::vector<char> &Buf) {    // Compiler version introspection macros. @@ -520,8 +528,6 @@ static void InitializePredefinedMacros(Preprocessor &PP,    DefineBuiltinMacro(Buf, "__WCHAR_TYPE__=int");    DefineBuiltinMacro(Buf, "__WINT_TYPE__=int"); - -      unsigned IntMaxWidth;    const char *IntMaxSuffix;    if (TI.getIntMaxType() == TargetInfo::SignedLongLong) { @@ -544,64 +550,11 @@ static void InitializePredefinedMacros(Preprocessor &PP,    DefineTypeSize("__WCHAR_MAX__", TI.getWCharWidth(), "", true, Buf);    DefineTypeSize("__INTMAX_MAX__", IntMaxWidth, IntMaxSuffix, true, Buf); -  if (TI.getIntMaxType() == TargetInfo::UnsignedLongLong) -    DefineBuiltinMacro(Buf, "__INTMAX_TYPE__=unsigned long long int"); -  else if (TI.getIntMaxType() == TargetInfo::SignedLongLong) -    DefineBuiltinMacro(Buf, "__INTMAX_TYPE__=long long int"); -  else if (TI.getIntMaxType() == TargetInfo::UnsignedLong) -    DefineBuiltinMacro(Buf, "__INTMAX_TYPE__=unsigned long int"); -  else if (TI.getIntMaxType() == TargetInfo::SignedLong) -    DefineBuiltinMacro(Buf, "__INTMAX_TYPE__=long int"); -  else if (TI.getIntMaxType() == TargetInfo::UnsignedInt) -    DefineBuiltinMacro(Buf, "__INTMAX_TYPE__=unsigned int"); -  else -    DefineBuiltinMacro(Buf, "__INTMAX_TYPE__=int"); -   -  if (TI.getUIntMaxType() == TargetInfo::UnsignedLongLong) -    DefineBuiltinMacro(Buf, "__UINTMAX_TYPE__=unsigned long long int"); -  else if (TI.getUIntMaxType() == TargetInfo::SignedLongLong) -    DefineBuiltinMacro(Buf, "__UINTMAX_TYPE__=long long int"); -  else if (TI.getUIntMaxType() == TargetInfo::UnsignedLong) -    DefineBuiltinMacro(Buf, "__UINTMAX_TYPE__=unsigned long int"); -  else if (TI.getUIntMaxType() == TargetInfo::SignedLong) -    DefineBuiltinMacro(Buf, "__UINTMAX_TYPE__=long int"); -  else if (TI.getUIntMaxType() == TargetInfo::UnsignedInt) -    DefineBuiltinMacro(Buf, "__UINTMAX_TYPE__=unsigned int"); -  else -    DefineBuiltinMacro(Buf, "__UINTMAX_TYPE__=int"); -   -  if (TI.getPtrDiffType(0) == TargetInfo::UnsignedLongLong) -    DefineBuiltinMacro(Buf, "__PTRDIFF_TYPE__=unsigned long long int"); -  else if (TI.getPtrDiffType(0) == TargetInfo::SignedLongLong) -    DefineBuiltinMacro(Buf, "__PTRDIFF_TYPE__=long long int"); -  else if (TI.getPtrDiffType(0) == TargetInfo::UnsignedLong) -    DefineBuiltinMacro(Buf, "__PTRDIFF_TYPE__=unsigned long int"); -  else if (TI.getPtrDiffType(0) == TargetInfo::SignedLong) -    DefineBuiltinMacro(Buf, "__PTRDIFF_TYPE__=long int"); -  else if (TI.getPtrDiffType(0) == TargetInfo::UnsignedInt) -    DefineBuiltinMacro(Buf, "__PTRDIFF_TYPE__=unsigned int"); -  else { -    assert(TI.getPtrDiffType(0) == TargetInfo::SignedInt); -    DefineBuiltinMacro(Buf, "__PTRDIFF_TYPE__=int"); -  } -   -  if (TI.getSizeType() == TargetInfo::UnsignedLongLong) -    DefineBuiltinMacro(Buf, "__SIZE_TYPE__=unsigned long long int"); -  else if (TI.getSizeType() == TargetInfo::SignedLongLong) -    DefineBuiltinMacro(Buf, "__SIZE_TYPE__=long long int"); -  else if (TI.getSizeType() == TargetInfo::UnsignedLong) -    DefineBuiltinMacro(Buf, "__SIZE_TYPE__=unsigned long int"); -  else if (TI.getSizeType() == TargetInfo::SignedLong) -    DefineBuiltinMacro(Buf, "__SIZE_TYPE__=long int"); -  else if (TI.getSizeType() == TargetInfo::UnsignedInt) -    DefineBuiltinMacro(Buf, "__SIZE_TYPE__=unsigned int"); -  else if (TI.getSizeType() == TargetInfo::SignedInt) -    DefineBuiltinMacro(Buf, "__SIZE_TYPE__=int"); -  else { -    assert(TI.getPtrDiffType(0) == TargetInfo::UnsignedShort); -    DefineBuiltinMacro(Buf, "__SIZE_TYPE__=unsigned short"); -  } -   +  DefineType("__INTMAX_TYPE__", TI.getIntMaxType(), Buf); +  DefineType("__UINTMAX_TYPE__", TI.getUIntMaxType(), Buf); +  DefineType("__PTRDIFF_TYPE__", TI.getPtrDiffType(0), Buf); +  DefineType("__SIZE_TYPE__", TI.getSizeType(), Buf); +        DefineFloatMacros(Buf, "FLT", &TI.getFloatFormat());    DefineFloatMacros(Buf, "DBL", &TI.getDoubleFormat());    DefineFloatMacros(Buf, "LDBL", &TI.getLongDoubleFormat());  | 

