summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorMarina Yatsina <marina.yatsina@intel.com>2016-02-23 08:53:45 +0000
committerMarina Yatsina <marina.yatsina@intel.com>2016-02-23 08:53:45 +0000
commit146d2ec06d07f01762cd80561b59e1ff88965a8b (patch)
tree3ae4b3df35bfbbcf6772b4b0c9585233fb2570d4 /clang/lib
parent7862c173c3615ec07d2fdfa3a92363544dfb19b6 (diff)
downloadbcm5719-llvm-146d2ec06d07f01762cd80561b59e1ff88965a8b.tar.gz
bcm5719-llvm-146d2ec06d07f01762cd80561b59e1ff88965a8b.zip
[ms-inline-asm] Fixing bug in single asm statement support
Fixing a crash caused by trying to merge a single-line asm statement with an asm block that follows it, e.g: asm int 4 asm { int 5 } Now, only adjacent single-line asm statements that are not surrounded by braces will be merged into one asm call. Differential Revision: http://reviews.llvm.org/D17496 llvm-svn: 261618
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/Parse/ParseStmtAsm.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/clang/lib/Parse/ParseStmtAsm.cpp b/clang/lib/Parse/ParseStmtAsm.cpp
index 3a236226707..7acf324bbe2 100644
--- a/clang/lib/Parse/ParseStmtAsm.cpp
+++ b/clang/lib/Parse/ParseStmtAsm.cpp
@@ -423,6 +423,10 @@ StmtResult Parser::ParseMicrosoftAsmStatement(SourceLocation AsmLoc) {
// We're no longer in a comment.
InAsmComment = false;
if (isAsm) {
+ // If this is a new __asm {} block we want to process it seperately
+ // from the single-line __asm statements
+ if (PP.LookAhead(0).is(tok::l_brace))
+ break;
LineNo = SrcMgr.getLineNumber(ExpLoc.first, ExpLoc.second);
SkippedStartOfLine = Tok.isAtStartOfLine();
}
OpenPOWER on IntegriCloud