]> granicus.if.org Git - clang/commitdiff
[X86][InlineAsm][Ms Compatibility]Prefer variable name over a register when the two...
authorCoby Tayree <coby.tayree@intel.com>
Mon, 24 Jul 2017 07:06:37 +0000 (07:06 +0000)
committerCoby Tayree <coby.tayree@intel.com>
Mon, 24 Jul 2017 07:06:37 +0000 (07:06 +0000)
On MS-style, the following snippet:

int eax;
__asm mov eax, ebx

should yield loading of ebx, into the location pointed by the variable eax

This patch sees to it.

Currently, a reg-to-reg move would have been invoked.

llvm: D34739

Differential Revision: https://reviews.llvm.org/D34740

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

test/CodeGen/ms-inline-asm-var-name.c [new file with mode: 0644]

diff --git a/test/CodeGen/ms-inline-asm-var-name.c b/test/CodeGen/ms-inline-asm-var-name.c
new file mode 100644 (file)
index 0000000..084e905
--- /dev/null
@@ -0,0 +1,12 @@
+// REQUIRES: x86-registered-target
+// RUN: %clang_cc1 %s -triple i386-apple-darwin10 -fasm-blocks -emit-llvm -o - | FileCheck %s
+
+void t() {
+  int eax;
+  int Ecx;
+  __asm mov eax, ebx
+  // CHECK: mov $0, ebx
+  __asm add ecx, Ecx
+  // CHECK: add ecx, $1
+}
+