diff options
author | Chad Rosier <mcrosier@apple.com> | 2012-08-16 17:10:59 +0000 |
---|---|---|
committer | Chad Rosier <mcrosier@apple.com> | 2012-08-16 17:10:59 +0000 |
commit | f64c11815e68f025737dc41d8d94e31e1426274d (patch) | |
tree | 0b9d0df8078f1aca80cc6f994afee418be6e3e42 /test/CodeGen/ms-inline-asm.c | |
parent | 089e5b3bf2e57da0173b170ad501867b43395385 (diff) |
[ms-inline asm] Start tracking which tokens are registers and which are
variables, function or label references. The former is a potential clobber.
The latter is either an input or an output. Unfortunately, it's difficult to
test this patch at the moment, but the added test case will eventually do so.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162026 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/ms-inline-asm.c')
-rw-r--r-- | test/CodeGen/ms-inline-asm.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/test/CodeGen/ms-inline-asm.c b/test/CodeGen/ms-inline-asm.c index ee4ca019c7..43ecbe34f4 100644 --- a/test/CodeGen/ms-inline-asm.c +++ b/test/CodeGen/ms-inline-asm.c @@ -82,3 +82,20 @@ void t10() { // CHECK: t10 // CHECK: call void asm sideeffect "push ebx\0Amov ebx, 0x07\0Apop ebx", "~{ebx},~{dirflag},~{fpsr},~{flags}"() nounwind ia_nsdialect } + +unsigned t11(void) { + unsigned i = 1, j; + __asm { + mov eax, i + mov j, eax + } + return j; +// CHECK: t11 +// CHECK: entry: +// CHECK: [[I:%[a-zA-Z0-9]+]] = alloca i32, align 4 +// CHECK: [[J:%[a-zA-Z0-9]+]] = alloca i32, align 4 +// CHECK: store i32 1, i32* [[I]], align 4 +// CHECK: call void asm sideeffect "mov eax, i\0Amov j, eax", "~{dirflag},~{fpsr},~{flags}"() nounwind ia_nsdialect +// CHECK: [[RET:%[a-zA-Z0-9]+]] = load i32* [[J]], align 4 +// CHECK: ret i32 [[RET]] +} |