Un-revert: the buildbot failure in LLVM on lld-x86_64-win7 had me with
authorKevin Enderby <enderby@apple.com>
Thu, 19 Dec 2013 23:16:14 +0000 (23:16 +0000)
committerKevin Enderby <enderby@apple.com>
Thu, 19 Dec 2013 23:16:14 +0000 (23:16 +0000)
commit3121da3298fba5e4cb69af67557f74700624a6bd
treed35d4b18a97ee630050d81857b1a1fa6e144f0ae
parentb4fcab42ca052b215f6445e2b20965e2bfe08dc8
Un-revert: the buildbot failure in LLVM on lld-x86_64-win7 had me with
this commit as the only one on the Blamelist so I quickly reverted this.
However it was actually Nick's change who has since fixed that issue.

Original commit message:

Changed the X86 assembler for intel syntax to work with directional labels.

The X86 assembler as a separate code to parser the intel assembly syntax
in X86AsmParser::ParseIntelOperand().  This did not parse directional labels.
And if something like 1f was used as a branch target it would get an
"Unexpected token" error.

The fix starts in X86AsmParser::ParseIntelExpression() in the case for
AsmToken::Integer, it needs to grab the IntVal from the current token
then look for a 'b' or 'f' following an Integer.  Then it basically needs to
do what is done in AsmParser::parsePrimaryExpr() for directional
labels.  It saves the MCExpr it creates in the IntelExprStateMachine
in the Sym field.

When it returns to X86AsmParser::ParseIntelOperand() it looks
for a non-zero Sym field in the IntelExprStateMachine and if
set it creates a memory operand not an immediate operand
it would normally do for the Integer.

rdar://14961158

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197744 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/AsmParser/X86AsmParser.cpp
test/MC/X86/intel-syntax-directional-label.s [new file with mode: 0644]