Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(591)

Side by Side Diff: test/CodeGen/NaCl/atomics.c

Issue 22294002: Treat __sync_synchronize and asm("":::"memory") as stronger fences. (Closed) Base URL: http://git.chromium.org/native_client/pnacl-clang.git@master
Patch Set: Make isAsmMemory a member of InlineAsm as suggested by eliben. Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « lib/CodeGen/TargetInfo.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Test frontend handling of synchronization builtins which NaCl handles
2 // differently.
3 // Modified from test/CodeGen/Atomics.c
4 // RUN: %clang_cc1 -triple le32-unknown-nacl -emit-llvm %s -o - | FileCheck %s
5
6 // CHECK: define void @test_sync_synchronize()
7 // CHECK-NEXT: entry:
8 void test_sync_synchronize (void)
9 {
10 __sync_synchronize ();
11 // CHECK-NEXT: call void asm sideeffect "", "~{memory}"()
12 // CHECK-NEXT: fence seq_cst
13 // CHECK-NEXT: call void asm sideeffect "", "~{memory}"()
14
15 // CHECK-NEXT: ret void
16 }
17
18 // CHECK: define void @test_asm_memory_1()
19 // CHECK-NEXT: entry:
20 void test_asm_memory_1 (void)
21 {
22 asm ("":::"memory");
23 // CHECK-NEXT: call void asm sideeffect "", "~{memory}"()
24 // CHECK-NEXT: fence seq_cst
25 // CHECK-NEXT: call void asm sideeffect "", "~{memory}"()
26
27 // CHECK-NEXT: ret void
28 }
29
30 // CHECK: define void @test_asm_memory_2()
31 // CHECK-NEXT: entry:
32 void test_asm_memory_2 (void)
33 {
34 asm volatile ("":::"memory");
35 // CHECK-NEXT: call void asm sideeffect "", "~{memory}"()
36 // CHECK-NEXT: fence seq_cst
37 // CHECK-NEXT: call void asm sideeffect "", "~{memory}"()
38
39 // CHECK-NEXT: ret void
40 }
41
42 // CHECK: define void @test_asm_memory_3()
43 // CHECK-NEXT: entry:
44 void test_asm_memory_3 (void)
45 {
46 __asm__ ("":::"memory");
47 // CHECK-NEXT: call void asm sideeffect "", "~{memory}"()
48 // CHECK-NEXT: fence seq_cst
49 // CHECK-NEXT: call void asm sideeffect "", "~{memory}"()
50
51 // CHECK-NEXT: ret void
52 }
53
54 // CHECK: define void @test_asm_memory_4()
55 // CHECK-NEXT: entry:
56 void test_asm_memory_4 (void)
57 {
58 __asm__ __volatile__ ("":::"memory");
59 // CHECK-NEXT: call void asm sideeffect "", "~{memory}"()
60 // CHECK-NEXT: fence seq_cst
61 // CHECK-NEXT: call void asm sideeffect "", "~{memory}"()
62
63 // CHECK-NEXT: ret void
64 }
OLDNEW
« no previous file with comments | « lib/CodeGen/TargetInfo.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698