diff options
| author | Chris Lattner <sabre@nondot.org> | 2010-08-03 16:48:42 +0000 | 
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2010-08-03 16:48:42 +0000 | 
| commit | 278008f5460f54be1fcde8d83076b248a6d417b8 (patch) | |
| tree | 63a298db9646f2619fc71301b01d06288ff4fc4e /clang/lib/Frontend/InitPreprocessor.cpp | |
| parent | 081627ceb8598c44883dc051a653bd6d768c9338 (diff) | |
| download | llvm-278008f5460f54be1fcde8d83076b248a6d417b8.zip llvm-278008f5460f54be1fcde8d83076b248a6d417b8.tar.gz llvm-278008f5460f54be1fcde8d83076b248a6d417b8.tar.bz2  | |
fix some undefined behavior, PR7779.
llvm-svn: 110116
Diffstat (limited to 'clang/lib/Frontend/InitPreprocessor.cpp')
| -rw-r--r-- | clang/lib/Frontend/InitPreprocessor.cpp | 7 | 
1 files changed, 4 insertions, 3 deletions
diff --git a/clang/lib/Frontend/InitPreprocessor.cpp b/clang/lib/Frontend/InitPreprocessor.cpp index 9990fc4..e5a4169 100644 --- a/clang/lib/Frontend/InitPreprocessor.cpp +++ b/clang/lib/Frontend/InitPreprocessor.cpp @@ -169,9 +169,10 @@ static void DefineTypeSize(llvm::StringRef MacroName, unsigned TypeWidth,                             llvm::StringRef ValSuffix, bool isSigned,                             MacroBuilder& Builder) {    long long MaxVal; -  if (isSigned) -    MaxVal = (1LL << (TypeWidth - 1)) - 1; -  else +  if (isSigned) { +    assert(TypeWidth != 1); +    MaxVal = ~0ULL >> (65-TypeWidth); +  } else      MaxVal = ~0LL >> (64-TypeWidth);    Builder.defineMacro(MacroName, llvm::Twine(MaxVal) + ValSuffix);  | 
