зеркало из https://github.com/microsoft/clang-1.git
correct and generalize computation of __INTMAX_MAX__.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63848 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
3fa8f7491a
Коммит
659dc14559
|
@ -531,10 +531,22 @@ static void InitializePredefinedMacros(Preprocessor &PP,
|
|||
else
|
||||
assert(0 && "Unknown long size");
|
||||
char MacroBuf[60];
|
||||
sprintf(MacroBuf, "__INTMAX_MAX__=%lld",
|
||||
(TI.getIntMaxType() == TargetInfo::UnsignedLongLong?
|
||||
(1LL << (TI.getLongLongWidth() - 1)) :
|
||||
((1LL << (TI.getLongLongWidth() - 2)) - 1)));
|
||||
unsigned IntMaxWidth;
|
||||
const char *IntMaxSuffix;
|
||||
if (TI.getIntMaxType() == TargetInfo::SignedLongLong) {
|
||||
IntMaxWidth = TI.getLongLongWidth();
|
||||
IntMaxSuffix = "LL";
|
||||
} else if (TI.getIntMaxType() == TargetInfo::SignedLong) {
|
||||
IntMaxWidth = TI.getLongWidth();
|
||||
IntMaxSuffix = "L";
|
||||
} else {
|
||||
assert(TI.getIntMaxType() == TargetInfo::SignedInt);
|
||||
IntMaxWidth = TI.getIntWidth();
|
||||
IntMaxSuffix = "";
|
||||
}
|
||||
|
||||
sprintf(MacroBuf, "__INTMAX_MAX__=%lld%s", (1LL << (IntMaxWidth - 1)) - 1,
|
||||
IntMaxSuffix);
|
||||
DefineBuiltinMacro(Buf, MacroBuf);
|
||||
|
||||
if (TI.getIntMaxType() == TargetInfo::UnsignedLongLong)
|
||||
|
|
Загрузка…
Ссылка в новой задаче