[cfe-commits] r162053 - /cfe/trunk/lib/Sema/SemaStmt.cpp
Chad Rosier
mcrosier at apple.com
Thu Aug 16 15:40:33 PDT 2012
Author: mcrosier
Date: Thu Aug 16 17:40:32 2012
New Revision: 162053
URL: http://llvm.org/viewvc/llvm-project?rev=162053&view=rev
Log:
[ms-inline asm] Extract a helper function, getSpelling(). Also use this on
tokens we don't know how to handle; this should aid when debugging.
Modified:
cfe/trunk/lib/Sema/SemaStmt.cpp
Modified: cfe/trunk/lib/Sema/SemaStmt.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaStmt.cpp?rev=162053&r1=162052&r2=162053&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaStmt.cpp (original)
+++ cfe/trunk/lib/Sema/SemaStmt.cpp Thu Aug 16 17:40:32 2012
@@ -2773,6 +2773,16 @@
return Ret;
}
+static StringRef getSpelling(Sema &SemaRef, Token AsmTok) {
+ StringRef Asm;
+ SmallString<512> TokenBuf;
+ TokenBuf.resize(512);
+ bool StringInvalid = false;
+ Asm = SemaRef.PP.getSpelling(AsmTok, TokenBuf, &StringInvalid);
+ assert (!StringInvalid && "Expected valid string!");
+ return Asm;
+}
+
static void patchMSAsmStrings(Sema &SemaRef, bool &IsSimple,
SourceLocation AsmLoc,
ArrayRef<Token> AsmToks,
@@ -2824,6 +2834,7 @@
switch (AsmToks[i].getKind()) {
default:
IsSimple = false;
+ Asm += getSpelling(SemaRef, AsmToks[i]);
break;
case tok::comma: Asm += ","; break;
case tok::colon: Asm += ":"; break;
@@ -2831,14 +2842,9 @@
case tok::r_square: Asm += "]"; break;
case tok::l_brace: Asm += "{"; break;
case tok::r_brace: Asm += "}"; break;
- case tok::numeric_constant: {
- SmallString<32> TokenBuf;
- TokenBuf.resize(32);
- bool StringInvalid = false;
- Asm += SemaRef.PP.getSpelling(AsmToks[i], TokenBuf, &StringInvalid);
- assert (!StringInvalid && "Expected valid string!");
+ case tok::numeric_constant:
+ Asm += getSpelling(SemaRef, AsmToks[i]);
break;
- }
case tok::identifier: {
IdentifierInfo *II = AsmToks[i].getIdentifierInfo();
StringRef Name = II->getName();
@@ -2907,11 +2913,9 @@
ArrayRef<Token> AsmToks,
unsigned &NumAsmStrings) {
assert (!AsmToks.empty() && "Didn't expect an empty AsmToks!");
- SmallString<512> Asm;
- SmallString<512> TokenBuf;
- TokenBuf.resize(512);
-
NumAsmStrings = 0;
+
+ SmallString<512> Asm;
for (unsigned i = 0, e = AsmToks.size(); i < e; ++i) {
bool isNewAsm = i == 0 || AsmToks[i].isAtStartOfLine() ||
AsmToks[i].is(tok::kw_asm);
@@ -2929,9 +2933,7 @@
if (i && AsmToks[i].hasLeadingSpace() && !isNewAsm)
Asm += ' ';
- bool StringInvalid = false;
- Asm += SemaRef.PP.getSpelling(AsmToks[i], TokenBuf, &StringInvalid);
- assert (!StringInvalid && "Expected valid string!");
+ Asm += getSpelling(SemaRef, AsmToks[i]);
}
return Asm.c_str();
}
More information about the cfe-commits
mailing list