annotate clang/test/CodeGen/asm-attrs.c @ 207:2e18cbf3894f

LLVM12
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 08 Jun 2021 06:07:14 +0900
parents 1d019706d866
children 1f2b6ac9f198
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 // RUN: %clang_cc1 -triple armv7-apple-darwin -emit-llvm %s -o - | FileCheck %s
anatofuz
parents:
diff changeset
2
anatofuz
parents:
diff changeset
3 // CHECK: call i32 asm "foo0", {{.*}} [[READNONE:#[0-9]+]]
anatofuz
parents:
diff changeset
4 // CHECK: call i32 asm "foo1", {{.*}} [[READNONE]]
anatofuz
parents:
diff changeset
5 // CHECK: call i32 asm "foo2", {{.*}} [[NOATTRS:#[0-9]+]]
anatofuz
parents:
diff changeset
6 // CHECK: call i32 asm sideeffect "foo3", {{.*}} [[NOATTRS]]
anatofuz
parents:
diff changeset
7 // CHECK: call i32 asm "foo4", {{.*}} [[READONLY:#[0-9]+]]
anatofuz
parents:
diff changeset
8 // CHECK: call i32 asm "foo5", {{.*}} [[READONLY]]
anatofuz
parents:
diff changeset
9 // CHECK: call i32 asm "foo6", {{.*}} [[NOATTRS]]
anatofuz
parents:
diff changeset
10 // CHECK: call void asm sideeffect "foo7", {{.*}} [[NOATTRS]]
anatofuz
parents:
diff changeset
11 // CHECK: call i32 asm "foo8", {{.*}} [[READNONE]]
anatofuz
parents:
diff changeset
12
anatofuz
parents:
diff changeset
13 // CHECK: attributes [[READNONE]] = { nounwind readnone }
anatofuz
parents:
diff changeset
14 // CHECK: attributes [[NOATTRS]] = { nounwind }
anatofuz
parents:
diff changeset
15 // CHECK: attributes [[READONLY]] = { nounwind readonly }
anatofuz
parents:
diff changeset
16
anatofuz
parents:
diff changeset
17 int g0, g1;
anatofuz
parents:
diff changeset
18
anatofuz
parents:
diff changeset
19 struct S {
anatofuz
parents:
diff changeset
20 int i;
anatofuz
parents:
diff changeset
21 } g2;
anatofuz
parents:
diff changeset
22
anatofuz
parents:
diff changeset
23 void test_attrs(int a) {
anatofuz
parents:
diff changeset
24 __asm__ ("foo0" : "=r"(g1) : "r"(a));
anatofuz
parents:
diff changeset
25 __asm__ ("foo1" : "=r"(g1) : "r"(a) : "cc");
anatofuz
parents:
diff changeset
26 __asm__ ("foo2" : "=r"(g1) : "r"(a) : "memory");
anatofuz
parents:
diff changeset
27 __asm__ volatile("foo3" : "=r"(g1) : "r"(a));
anatofuz
parents:
diff changeset
28 __asm__ ("foo4" : "=r"(g1) : "r"(a), "m"(g0));
anatofuz
parents:
diff changeset
29 __asm__ ("foo5" : "=r"(g1) : "r"(a), "Q"(g0));
anatofuz
parents:
diff changeset
30 __asm__ ("foo6" : "=r"(g1), "=m"(g0) : "r"(a));
anatofuz
parents:
diff changeset
31 __asm__ ("foo7" : : "r"(a));
anatofuz
parents:
diff changeset
32 __asm__ ("foo8" : "=r"(g2) : "r"(a));
anatofuz
parents:
diff changeset
33 }