[llvm] r308609 - This patch added some test cases to demonsrate the issues described in Bug 33848 - X86 Asm does not support symbolic names inside address calculation.

Andrew V. Tischenko via llvm-commits llvm-commits at lists.llvm.org
Thu Jul 20 05:46:03 PDT 2017


Author: avt77
Date: Thu Jul 20 05:46:02 2017
New Revision: 308609

URL: http://llvm.org/viewvc/llvm-project?rev=308609&view=rev
Log:
This patch added some test cases to demonsrate the issues described in Bug 33848 - X86 Asm does not support symbolic names inside address calculation.

Added:
    llvm/trunk/test/MC/X86/intel-syntax2.s
Modified:
    llvm/trunk/test/MC/X86/intel-syntax.s

Modified: llvm/trunk/test/MC/X86/intel-syntax.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/X86/intel-syntax.s?rev=308609&r1=308608&r2=308609&view=diff
==============================================================================
--- llvm/trunk/test/MC/X86/intel-syntax.s (original)
+++ llvm/trunk/test/MC/X86/intel-syntax.s Thu Jul 20 05:46:02 2017
@@ -6,7 +6,56 @@ _test:
 	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)

Added: llvm/trunk/test/MC/X86/intel-syntax2.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/X86/intel-syntax2.s?rev=308609&view=auto
==============================================================================
--- llvm/trunk/test/MC/X86/intel-syntax2.s (added)
+++ llvm/trunk/test/MC/X86/intel-syntax2.s Thu Jul 20 05:46:02 2017
@@ -0,0 +1,32 @@
+// 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]
+




More information about the llvm-commits mailing list