diff options
author | Abramo Bagnara <abramo.bagnara@gmail.com> | 2011-03-06 22:21:56 +0000 |
---|---|---|
committer | Abramo Bagnara <abramo.bagnara@gmail.com> | 2011-03-06 22:21:56 +0000 |
commit | ead67d9b8834e7314ccead0b01c6612015898b2c (patch) | |
tree | 0331f26c38b472731aac3466e869b73a7c366dde /clang/lib/Sema/DeclSpec.cpp | |
parent | 9cb33deebf2c5f105dfd6be31bb438a266c9e51f (diff) | |
download | bcm5719-llvm-ead67d9b8834e7314ccead0b01c6612015898b2c.tar.gz bcm5719-llvm-ead67d9b8834e7314ccead0b01c6612015898b2c.zip |
Improved type source location for long long type.
llvm-svn: 127132
Diffstat (limited to 'clang/lib/Sema/DeclSpec.cpp')
-rw-r--r-- | clang/lib/Sema/DeclSpec.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/clang/lib/Sema/DeclSpec.cpp b/clang/lib/Sema/DeclSpec.cpp index a154fbd79a9..2f8a1593365 100644 --- a/clang/lib/Sema/DeclSpec.cpp +++ b/clang/lib/Sema/DeclSpec.cpp @@ -380,12 +380,14 @@ bool DeclSpec::SetStorageClassSpecThread(SourceLocation Loc, bool DeclSpec::SetTypeSpecWidth(TSW W, SourceLocation Loc, const char *&PrevSpec, unsigned &DiagID) { - if (TypeSpecWidth != TSW_unspecified && - // Allow turning long -> long long. - (W != TSW_longlong || TypeSpecWidth != TSW_long)) + // Overwrite TSWLoc only if TypeSpecWidth was unspecified, so that + // for 'long long' we will keep the source location of the first 'long'. + if (TypeSpecWidth == TSW_unspecified) + TSWLoc = Loc; + // Allow turning long -> long long. + else if (W != TSW_longlong || TypeSpecWidth != TSW_long) return BadSpecifier(W, (TSW)TypeSpecWidth, PrevSpec, DiagID); TypeSpecWidth = W; - TSWLoc = Loc; if (TypeAltiVecVector && !TypeAltiVecBool && ((TypeSpecWidth == TSW_long) || (TypeSpecWidth == TSW_longlong))) { PrevSpec = DeclSpec::getSpecifierName((TST) TypeSpecType); |