aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Basic/TargetInfo.cpp
diff options
context:
space:
mode:
authorJF Bastien <jfb@google.com>2014-06-25 01:31:33 +0000
committerJF Bastien <jfb@google.com>2014-06-25 01:31:33 +0000
commitab8d0a0dd514e8313f39e3f09482468577ffe144 (patch)
tree2cc77994b233c2cc978abc21efc672902e05fa53 /clang/lib/Basic/TargetInfo.cpp
parent7899d5049b0e96f18c27b18793c1891672ba080c (diff)
downloadllvm-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.cpp15
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;