- // Look for 'b' or 'f' following an Integer as a directional label
- SMLoc Loc = getTok().getLoc();
- int64_t IntVal = getTok().getIntVal();
- End = consumeToken();
- UpdateLocLex = false;
- if (getLexer().getKind() == AsmToken::Identifier) {
- StringRef IDVal = getTok().getString();
- if (IDVal == "f" || IDVal == "b") {
- MCSymbol *Sym =
- getContext().GetDirectionalLocalSymbol(IntVal,
- IDVal == "f" ? 1 : 0);
- MCSymbolRefExpr::VariantKind Variant = MCSymbolRefExpr::VK_None;
- const MCExpr *Val =
- MCSymbolRefExpr::Create(Sym, Variant, getContext());
- if (IDVal == "b" && Sym->isUndefined())
- return Error(Loc, "invalid reference to undefined symbol");
- StringRef Identifier = Sym->getName();
- SM.onIdentifierExpr(Val, Identifier);
- End = consumeToken();
- } else {
- SM.onInteger(IntVal);
- }
- } else {
- SM.onInteger(IntVal);
- }