From: Abramo Bagnara Date: Sun, 6 Mar 2011 22:21:56 +0000 (+0000) Subject: Improved type source location for long long type. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2553eaf4a6b9ca9ca59383287cdfef2a5c9fca83;p=clang Improved type source location for long long type. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127132 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/DeclSpec.cpp b/lib/Sema/DeclSpec.cpp index a154fbd79a..2f8a159336 100644 --- a/lib/Sema/DeclSpec.cpp +++ b/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);