xor EAX, EAX
ret
-_main:
+.set number, 8
+.global _foo
+
+.text
+ .global main
+main:
+
+// CHECK: leaq _foo(%rbx,%rax,0), %rdx
+ lea RDX, [number * RAX + RBX + _foo]
+// CHECK: leaq _foo(%rbx,%rax,8), %rdx
+ lea RDX, [8 * RAX + RBX + _foo]
+
+// CHECK: leaq 8(%rbx,%rax,0), %rdx
+ lea RDX, [_foo + number * RAX + RBX]
+// CHECK: leaq _foo(%rbx,%rax,8), %rdx
+ lea RDX, [_foo + 8 * RAX + RBX]
+
+// CHECK: leaq 8(%rcx,%rax,8), %rdx
+ lea RDX, [8 + RAX * 8 + RCX]
+
+// CHECK: leaq 8+8(%rcx,%rax,0), %rdx
+ lea RDX, [8 + number * RAX + RCX]
+// CHECK: leaq 8(%rcx,%rax,8), %rdx
+ lea RDX, [number + 8 * RAX + RCX]
+
+// CHECK: leaq _foo(,%rax,8), %rdx
+ lea RDX, [_foo + RAX * 8]
+
+// CHECK: leaq _foo(%rbx,%rax,8), %rdx
+ lea RDX, [_foo + RAX * 8 + RBX]
+
+// CHECK: leaq 8(%rax), %rdx
+ lea RDX, [RAX - number]
+// CHECK: leaq -8(%rax), %rdx
+ lea RDX, [RAX - 8]
+
+// CHECK: leaq _foo(%rax), %rdx
+ lea RDX, [RAX + _foo]
+// CHECK: leaq 8(%rax), %rdx
+ lea RDX, [RAX + number]
+// CHECK: leaq 8(%rax), %rdx
+ lea RDX, [RAX + 8]
+
+// CHECK: leaq _foo(%rax), %rdx
+ lea RDX, [_foo + RAX]
+// CHECK: leaq 8(%rax), %rdx
+ lea RDX, [number + RAX]
+// CHECK: leaq 8(%rax), %rdx
+ lea RDX, [8 + RAX]
+
// CHECK: movl $257, -4(%rsp)
mov DWORD PTR [RSP - 4], 257
// CHECK: movl $258, 4(%rsp)
--- /dev/null
+// RUN: not llvm-mc -triple x86_64-unknown-unknown -x86-asm-syntax=intel %s 2> %t.err
+// RUN: FileCheck --check-prefix=CHECK-STDERR < %t.err %s
+
+_test:
+// CHECK-LABEL: _test:
+// CHECK: xorl %eax, %eax
+
+ xor EAX, EAX
+ ret
+
+.set number, 8
+.global _foo
+
+.text
+ .global main
+main:
+
+// CHECK-STDERR: error: unknown token in expression
+ lea RDX, [RAX * number + RBX + _foo]
+
+// CHECK-STDERR: error: unknown token in expression
+ lea RDX, [_foo + RAX * number + RBX]
+
+// CHECK-STDERR: error: unknown token in expression
+ lea RDX, [number + RAX * number + RCX]
+
+// CHECK-STDERR: error: unknown token in expression
+ lea RDX, [_foo + RAX * number]
+
+// CHECK-STDERR: error: unknown token in expression
+ lea RDX, [_foo + RAX * number + RBX]
+