/// if an internal buffer is returned.
unsigned getSpelling(const Token &Tok, const char *&Buffer) const;
- /// getPhysicalCharacterAt - Return a pointer to the start of the specified
- /// location in the appropriate MemoryBuffer.
- char getPhysicalCharacterAt(SourceLocation SL) const {
+ /// getSpelledCharacterAt - Return a pointer to the start of the specified
+ /// location in the appropriate MemoryBuffer.
+ char getSpelledCharacterAt(SourceLocation SL) const {
if (PTH) {
SL = SourceMgr.getSpellingLoc(SL);
- unsigned fid = SourceMgr.getCanonicalFileID(SL);
- unsigned fpos = SourceMgr.getFullFilePos(SL);
- const char* data;
- if (PTH->getSpelling(fid, fpos, data))
- return *data;
+ unsigned FID = SourceMgr.getCanonicalFileID(SL);
+ unsigned FPos = SourceMgr.getFullFilePos(SL);
+ const char *Data;
+ if (PTH->getSpelling(FID, FPos, Data))
+ return *Data;
}
return *SourceMgr.getCharacterData(SL);
}
Action::ExprResult Sema::ActOnNumericConstant(const Token &Tok) {
- // fast path for a single digit (which is quite common). A single digit
+ // Fast path for a single digit (which is quite common). A single digit
// cannot have a trigraph, escaped newline, radix prefix, or type suffix.
if (Tok.getLength() == 1) {
- const char Ty = PP.getPhysicalCharacterAt(Tok.getLocation());
- unsigned IntSize =static_cast<unsigned>(Context.getTypeSize(Context.IntTy));
- return ExprResult(new IntegerLiteral(llvm::APInt(IntSize, Ty-'0'),
+ const char Val = PP.getSpelledCharacterAt(Tok.getLocation());
+ unsigned IntSize = Context.Target.getIntWidth();
+ return ExprResult(new IntegerLiteral(llvm::APInt(IntSize, Val-'0'),
Context.IntTy,
Tok.getLocation()));
}