[cfe-commits] r62668 - /cfe/trunk/lib/Lex/PTHLexer.cpp

Ted Kremenek kremenek at apple.com
Tue Jan 20 23:21:04 PST 2009


Chris,

I don't think that this is portable.  This assumes that both the host  
and the PTH file encode integers in little endian format.

On Jan 20, 2009, at 11:06 PM, Chris Lattner wrote:

> Author: lattner
> Date: Wed Jan 21 01:06:08 2009
> New Revision: 62668
>
> URL: http://llvm.org/viewvc/llvm-project?rev=62668&view=rev
> Log:
> minor cleanups: now that tokens are 4-byte aligned in a PTH
> file, just load them directly as ints.
>
> Modified:
>    cfe/trunk/lib/Lex/PTHLexer.cpp
>
> Modified: cfe/trunk/lib/Lex/PTHLexer.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/PTHLexer.cpp?rev=62668&r1=62667&r2=62668&view=diff
>
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- cfe/trunk/lib/Lex/PTHLexer.cpp (original)
> +++ cfe/trunk/lib/Lex/PTHLexer.cpp Wed Jan 21 01:06:08 2009
> @@ -50,22 +50,6 @@
>   return V;
> }
>
> -static inline uint32_t Read24(const unsigned char *&Data) {
> -// Targets that directly support unaligned little-endian 16-bit  
> loads can just
> -// use them.
> -#if defined(__i386__) || defined(__x86_64__)
> -  uint32_t V = ((uint16_t*)Data)[0] |
> -                 ((uint32_t)Data[2] << 16);
> -#else
> -  uint32_t V = ((uint32_t)Data[0] <<  0) |
> -               ((uint32_t)Data[1] <<  8) |
> -               ((uint32_t)Data[2] << 16);
> -#endif
> -
> -  Data += 3;
> -  return V;
> -}
> -
> static inline uint32_t Read32(const unsigned char *&Data) {
> // Targets that directly support unaligned little-endian 32-bit  
> loads can just
> // use them.
> @@ -104,18 +88,18 @@
>   //===--------------------------------------==//
>
>   // Shadow CurPtr into an automatic variable.
> -  const unsigned char *CurPtrShadow = CurPtr;
> +  const unsigned *CurPtrShadow = (const unsigned *)CurPtr;
>
>   // Read in the data for the token.
> -  unsigned Word0 = Read32(CurPtrShadow);
> -  uint32_t IdentifierID = Read32(CurPtrShadow);
> -  uint32_t FileOffset = Read32(CurPtrShadow);
> +  unsigned Word0 = CurPtrShadow[0];
> +  unsigned IdentifierID = CurPtrShadow[1];
> +  unsigned FileOffset = CurPtrShadow[2];
>
>   tok::TokenKind TKind = (tok::TokenKind) (Word0 & 0xFF);
>   Token::TokenFlags TFlags = (Token::TokenFlags) ((Word0 >> 8) &  
> 0xFF);
> -  uint32_t Len = Word0 >> 16;
> +  unsigned Len = Word0 >> 16;
>
> -  CurPtr = CurPtrShadow;
> +  CurPtr = (const unsigned char*)(CurPtrShadow+3);
>
>   //===--------------------------------------==//
>   // Construct the token itself.
>
>
> _______________________________________________
> 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