Revert my change to the X86 assembler for intel syntax to work with
authorKevin Enderby <enderby@apple.com>
Thu, 19 Dec 2013 22:24:09 +0000 (22:24 +0000)
committerKevin Enderby <enderby@apple.com>
Thu, 19 Dec 2013 22:24:09 +0000 (22:24 +0000)
directional labels.  Because it doesn't work for windows :)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197731 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/AsmParser/X86AsmParser.cpp
test/MC/X86/intel-syntax-directional-label.s [deleted file]

index fe533965515e4e897143e6463f0533c846506548..15dcc5cc39b6575044336cd8709ee867c98594d4 100644 (file)
@@ -1329,37 +1329,12 @@ bool X86AsmParser::ParseIntelExpression(IntelExprStateMachine &SM, SMLoc &End) {
       }
       return Error(Tok.getLoc(), "Unexpected identifier!");
     }
-    case AsmToken::Integer: {
+    case AsmToken::Integer:
       if (isParsingInlineAsm() && SM.getAddImmPrefix())
         InstInfo->AsmRewrites->push_back(AsmRewrite(AOK_ImmPrefix,
                                                     Tok.getLoc()));
-      // 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);
-      }
+      SM.onInteger(Tok.getIntVal());
       break;
-    }
     case AsmToken::Plus:    SM.onPlus(); break;
     case AsmToken::Minus:   SM.onMinus(); break;
     case AsmToken::Star:    SM.onStar(); break;
@@ -1709,13 +1684,6 @@ X86Operand *X86AsmParser::ParseIntelOperand() {
     }
 
     if (getLexer().isNot(AsmToken::LBrac)) {
-      // If a directional label (ie. 1f or 2b) was parsed above from
-      // ParseIntelExpression() then SM.getSym() was set to a pointer to
-      // to the MCExpr with the directional local symbol and this is a
-      // memory operand not an immediate operand.
-      if (SM.getSym())
-        return X86Operand::CreateMem(SM.getSym(), Start, End, Size);
-
       const MCExpr *ImmExpr = MCConstantExpr::Create(Imm, getContext());
       return X86Operand::CreateImm(ImmExpr, Start, End);
     }
diff --git a/test/MC/X86/intel-syntax-directional-label.s b/test/MC/X86/intel-syntax-directional-label.s
deleted file mode 100644 (file)
index 1ed1673..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-// RUN: llvm-mc -triple x86_64-apple-darwin -x86-asm-syntax=intel %s | FileCheck %s
-// rdar://14961158
-       .text
-       .align 16
-       .globl FUNCTION_NAME
-       .private_extern FUNCTION_NAME
-FUNCTION_NAME:
-       .intel_syntax
-       cmp rdi, 1
-       jge 1f
-// CHECK:      jge     "L1\ 21"
-       add rdi, 2
-1:
-// CHECK:      "L1\ 21":
-       add rdi, 1
-       ret