[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