[cfe-commits] r62725 - in /cfe/trunk: lib/Lex/PTHLexer.cpp test/SemaObjC/cocoa.m

Ted Kremenek kremenek at apple.com
Wed Jan 21 18:12:06 PST 2009


That makes a lot of sense.  It would better document the PTH file  
format and help obviate such breakage in the future.

On Jan 21, 2009, at 3:03 PM, Daniel Dunbar <daniel at zuster.org> wrote:

> Couldn't code like this be wrapped in a simple class which would
> centralize the format (even if the actual reading is still distributed
> throughout the code)?
>
> That is,
> --
>  const unsigned char *OffsetPtr = CurPtr + (1 + 1 + 3);
>  const unsigned char *OffsetPtr = CurPtr + (DISK_TOKEN_SIZE - 4);
> uint32_t Offset = Read32(OffsetPtr);
> --
> could be
> --
> uint32_t Offset = DiskTokenPtr(CurPtr).Read32();
> --
>
> and somewhere else there would be
>
> --
> class DiskTokenPtr {
>  const unsigned char *Ptr;
> public:
>  DiskTokenPtr(const unsigned char *_Ptr) : Ptr(_Ptr) {}
>
>  uint32_t ReadIdentifier() { return Read32(Ptr + ...); }
>  uint32_t ReadOffset() { return Read32(Ptr + ...); }
> }
> --
>
> Etc.
>
> - Daniel
>
> On Wed, Jan 21, 2009 at 2:41 PM, Ted Kremenek <kremenek at apple.com>  
> wrote:
>> Author: kremenek
>> Date: Wed Jan 21 16:41:38 2009
>> New Revision: 62725
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=62725&view=rev
>> Log:
>> Fix <rdar://problem/6512717> by correctly reading the right offset  
>> in the token data in PTHLexer::getSourceLocation().
>>
>> Modified:
>>   cfe/trunk/lib/Lex/PTHLexer.cpp
>>   cfe/trunk/test/SemaObjC/cocoa.m
>>
>> Modified: cfe/trunk/lib/Lex/PTHLexer.cpp
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/PTHLexer.cpp?rev=62725&r1=62724&r2=62725&view=diff
>>
>> === 
>> === 
>> === 
>> =====================================================================
>> --- cfe/trunk/lib/Lex/PTHLexer.cpp (original)
>> +++ cfe/trunk/lib/Lex/PTHLexer.cpp Wed Jan 21 16:41:38 2009
>> @@ -324,7 +324,7 @@
>>  // handling a #included file.  Just read the necessary data from  
>> the token
>>  // data buffer to construct the SourceLocation object.
>>  // NOTE: This is a virtual function; hence it is defined out-of- 
>> line.
>> -  const unsigned char *OffsetPtr = CurPtr + (1 + 1 + 3);
>> +  const unsigned char *OffsetPtr = CurPtr + (DISK_TOKEN_SIZE - 4);
>>  uint32_t Offset = Read32(OffsetPtr);
>>  return FileStartLoc.getFileLocWithOffset(Offset);
>> }
>>
>> Modified: cfe/trunk/test/SemaObjC/cocoa.m
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaObjC/cocoa.m?rev=62725&r1=62724&r2=62725&view=diff
>>
>> === 
>> === 
>> === 
>> =====================================================================
>> --- cfe/trunk/test/SemaObjC/cocoa.m (original)
>> +++ cfe/trunk/test/SemaObjC/cocoa.m Wed Jan 21 16:41:38 2009
>> @@ -1,5 +1,6 @@
>> // RUN: clang %s -print-stats &&
>> -// RUN: clang -x objective-c-header -o %t %s && clang -token-cache  
>> %t %s
>> +// RUN: clang -x objective-c-header -o %t %s && clang -token-cache  
>> %t %s &&
>> +// RUN: clang -x objective-c-header -o %t %s && clang -token-cache  
>> %t %s -E %s -o /dev/null
>> #ifdef __APPLE__
>> #include <Cocoa/Cocoa.h>
>> #endif
>>
>>
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>>



More information about the cfe-commits mailing list