diff options
author | JF Bastien <jfb@google.com> | 2014-06-25 01:31:33 +0000 |
---|---|---|
committer | JF Bastien <jfb@google.com> | 2014-06-25 01:31:33 +0000 |
commit | ab8d0a0dd514e8313f39e3f09482468577ffe144 (patch) | |
tree | 2cc77994b233c2cc978abc21efc672902e05fa53 /clang/lib/Basic/TargetInfo.cpp | |
parent | 7899d5049b0e96f18c27b18793c1891672ba080c (diff) | |
download | llvm-ab8d0a0dd514e8313f39e3f09482468577ffe144.zip llvm-ab8d0a0dd514e8313f39e3f09482468577ffe144.tar.gz llvm-ab8d0a0dd514e8313f39e3f09482468577ffe144.tar.bz2 |
Implement predefined stdint macros
Add predefined stdint macros that match the given patterns:
U?INT{_,_FAST,_LEAST}{8,16,32,64}_{MAX,TYPE}
U?INT{PTR,MAX}_{MAX,TYPE}
http://reviews.llvm.org/D4141
Author: binji
llvm-svn: 211657
Diffstat (limited to 'clang/lib/Basic/TargetInfo.cpp')
-rw-r--r-- | clang/lib/Basic/TargetInfo.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/clang/lib/Basic/TargetInfo.cpp b/clang/lib/Basic/TargetInfo.cpp index 4d06648..71e39dd 100644 --- a/clang/lib/Basic/TargetInfo.cpp +++ b/clang/lib/Basic/TargetInfo.cpp @@ -168,6 +168,21 @@ TargetInfo::IntType TargetInfo::getIntTypeByWidth( return NoInt; } +TargetInfo::IntType TargetInfo::getLeastIntTypeByWidth(unsigned BitWidth, + bool IsSigned) const { + if (getCharWidth() >= BitWidth) + return IsSigned ? SignedChar : UnsignedChar; + if (getShortWidth() >= BitWidth) + return IsSigned ? SignedShort : UnsignedShort; + if (getIntWidth() >= BitWidth) + return IsSigned ? SignedInt : UnsignedInt; + if (getLongWidth() >= BitWidth) + return IsSigned ? SignedLong : UnsignedLong; + if (getLongLongWidth() >= BitWidth) + return IsSigned ? SignedLongLong : UnsignedLongLong; + return NoInt; +} + TargetInfo::RealType TargetInfo::getRealTypeByWidth(unsigned BitWidth) const { if (getFloatWidth() == BitWidth) return Float; |