Index: lib/Target/X86/AsmParser/X86AsmParser.cpp =================================================================== --- lib/Target/X86/AsmParser/X86AsmParser.cpp +++ lib/Target/X86/AsmParser/X86AsmParser.cpp @@ -844,7 +844,6 @@ const InlineAsmIdentifierInfo &Info); bool parseDirectiveEven(SMLoc L); - bool ParseDirectiveWord(unsigned Size, SMLoc L); bool ParseDirectiveCode(StringRef IDVal, SMLoc L); /// CodeView FPO data directives. @@ -943,6 +942,8 @@ : MCTargetAsmParser(Options, sti, mii), InstInfo(nullptr), Code16GCC(false) { + Parser.addAliasForDirective(".word", ".4byte"); + // Initialize the set of available features. setAvailableFeatures(ComputeAvailableFeatures(getSTI().getFeatureBits())); Instrumentation.reset( @@ -3155,9 +3156,7 @@ bool X86AsmParser::ParseDirective(AsmToken DirectiveID) { MCAsmParser &Parser = getParser(); StringRef IDVal = DirectiveID.getIdentifier(); - if (IDVal == ".word") - return ParseDirectiveWord(2, DirectiveID.getLoc()); - else if (IDVal.startswith(".code")) + if (IDVal.startswith(".code")) return ParseDirectiveCode(IDVal, DirectiveID.getLoc()); else if (IDVal.startswith(".att_syntax")) { getParser().setParsingInlineAsm(false); @@ -3218,27 +3217,6 @@ getStreamer().EmitValueToAlignment(2, 0, 1, 0); return false; } -/// ParseDirectiveWord -/// ::= .word [ expression (, expression)* ] -bool X86AsmParser::ParseDirectiveWord(unsigned Size, SMLoc L) { - auto parseOp = [&]() -> bool { - const MCExpr *Value; - SMLoc ExprLoc = getLexer().getLoc(); - if (getParser().parseExpression(Value)) - return true; - if (const auto *MCE = dyn_cast(Value)) { - assert(Size <= 8 && "Invalid size"); - uint64_t IntValue = MCE->getValue(); - if (!isUIntN(8 * Size, IntValue) && !isIntN(8 * Size, IntValue)) - return Error(ExprLoc, "literal value out of range for directive"); - getStreamer().EmitIntValue(IntValue, Size); - } else - getStreamer().EmitValue(Value, Size, ExprLoc); - return false; - }; - parseMany(parseOp); - return false; -} /// ParseDirectiveCode /// ::= .code16 | .code32 | .code64