Eli Friedman | eca55af | 2010-07-16 00:55:21 +0000 | [diff] [blame^] | 1 | // RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm %s -o - | FileCheck %s |
| 2 | // PR3800 |
| 3 | int *foo(void); |
| 4 | |
| 5 | // CHECK: @test1 |
| 6 | void test1() { |
| 7 | // CHECK: [[REGCALLRESULT:%[a-zA-Z0-9\.]+]] = call i32* @foo() |
| 8 | // CHECK: call void asm "foobar", "=*m,*m,~{dirflag},~{fpsr},~{flags}"(i32* [[REGCALLRESULT]], i32* [[REGCALLRESULT]]) |
| 9 | asm ("foobar" : "+m"(*foo())); |
| 10 | } |
| 11 | |
| 12 | // CHECK: @test2 |
| 13 | void test2() { |
| 14 | // CHECK: [[REGCALLRESULT:%[a-zA-Z0-9\.]+]] = call i32* @foo() |
| 15 | // CHECK: load i32* [[REGCALLRESULT]] |
| 16 | // CHECK: call i32 asm |
| 17 | // CHECK: store i32 {{%[a-zA-Z0-9\.]+}}, i32* [[REGCALLRESULT]] |
| 18 | asm ("foobar" : "+r"(*foo())); |
| 19 | } |