From cbec9b05be80736e78b7e0c63fabd4a095253400 Mon Sep 17 00:00:00 2001 From: Sam Clegg Date: Thu, 19 Apr 2018 22:00:53 +0000 Subject: [PATCH] [WebAssembly] Enabled -triple=wasm32-unknown-unknown-wasm path using ELF directive parser. This is a temporary solution until a proper WASM implementation of MCAsmParserExtension is in place, but at least for now will unblock this path. Added test to make sure this path works with the WASM Assembler. Patch By Wouter van Oortmerssen! Differential Revision: https://reviews.llvm.org/D45386 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@330370 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/MC/MCParser/AsmParser.cpp | 10 +++++++--- test/MC/WebAssembly/basic-assembly.s | 1 + 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/lib/MC/MCParser/AsmParser.cpp b/lib/MC/MCParser/AsmParser.cpp index 69720135432..7ee8e1b3e84 100644 --- a/lib/MC/MCParser/AsmParser.cpp +++ b/lib/MC/MCParser/AsmParser.cpp @@ -691,7 +691,11 @@ AsmParser::AsmParser(SourceMgr &SM, MCContext &Ctx, MCStreamer &Out, PlatformParser.reset(createELFAsmParser()); break; case MCObjectFileInfo::IsWasm: - llvm_unreachable("Wasm parsing not supported yet"); + // TODO: WASM will need its own MCAsmParserExtension implementation, but + // for now we can re-use the ELF one, since the directives can be the + // same for now, and this makes the -triple=wasm32-unknown-unknown-wasm + // path work. + PlatformParser.reset(createELFAsmParser()); break; } @@ -1305,7 +1309,7 @@ AsmParser::applyModifierToExpr(const MCExpr *E, /// the End argument will be filled with the last location pointed to the '>' /// character. -/// There is a gap between the AltMacro's documentation and the single quote implementation. +/// There is a gap between the AltMacro's documentation and the single quote implementation. /// GCC does not fully support this feature and so we will not support it. /// TODO: Adding single quote as a string. bool AsmParser::isAltmacroString(SMLoc &StrLoc, SMLoc &EndLoc) { @@ -2204,7 +2208,7 @@ bool AsmParser::parseStatement(ParseStatementInfo &Info, } // Parse and erase curly braces marking block start/end -bool +bool AsmParser::parseCurlyBlockScope(SmallVectorImpl &AsmStrRewrites) { // Identify curly brace marking block start/end if (Lexer.isNot(AsmToken::LCurly) && Lexer.isNot(AsmToken::RCurly)) diff --git a/test/MC/WebAssembly/basic-assembly.s b/test/MC/WebAssembly/basic-assembly.s index ae35263ed1f..a6b4d0be0ec 100644 --- a/test/MC/WebAssembly/basic-assembly.s +++ b/test/MC/WebAssembly/basic-assembly.s @@ -1,4 +1,5 @@ # RUN: llvm-mc -triple=wasm32-unknown-unknown-elf < %s | FileCheck %s +# RUN: llvm-mc -triple=wasm32-unknown-unknown-wasm < %s | FileCheck %s .text .type test0,@function -- 2.11.0