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

Side by Side Diff: test/Transforms/NaCl/strip-attributes.ll

Issue 939073008: Rebased PNaCl localmods in LLVM to 223109 (Closed)
Patch Set: undo localmod Created 5 years, 9 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
OLDNEW
(Empty)
1 ; RUN: opt -S -nacl-strip-attributes %s 2>&1 | FileCheck %s
2
3
4 ; Check that we emit a warning for some special meaning sections:
5 ; CHECK: Warning: func_init_array will have its section (.init_array) stripped.
6 ; CHECK-NOT: Warning: __rustc_debug_gdb_scripts_section__ will have its section
7
8 @var = unnamed_addr global i32 0
9 ; CHECK: @var = global i32 0
10
11 @__rustc_debug_gdb_scripts_section__ = internal unnamed_addr constant [34 x i8] c"\01gdb_load_rust_pretty_printers.py\00", section ".debug_gdb_scripts", align 1
12 ; CHECK: @__rustc_debug_gdb_scripts_section__ = internal constant [34 x i8] c"\0 1gdb_load_rust_pretty_printers.py\00", align 1
13
14 define void @func_section() section ".some_section" {
15 ret void
16 }
17 ; CHECK-LABEL: define void @func_section() {
18
19 define void @func_init_array() section ".init_array" {
20 ret void
21 }
22 ; CHECK-LABEL: define void @func_init_array() {
23
24
25 define fastcc void @func_attrs(i32 inreg, i32 zeroext)
26 unnamed_addr noreturn nounwind readonly align 8 {
27 ret void
28 }
29 ; CHECK: define void @func_attrs(i32, i32) {
30
31 define hidden void @hidden_visibility() {
32 ret void
33 }
34 ; CHECK: define void @hidden_visibility() {
35
36 define protected void @protected_visibility() {
37 ret void
38 }
39 ; CHECK: define void @protected_visibility() {
40
41
42 define void @call_attrs() {
43 call fastcc void @func_attrs(i32 inreg 10, i32 zeroext 20) noreturn nounwind r eadonly
44 ret void
45 }
46 ; CHECK: define void @call_attrs()
47 ; CHECK: call void @func_attrs(i32 10, i32 20){{$}}
48
49
50 ; We currently don't attempt to strip attributes from intrinsic
51 ; declarations because the reader automatically inserts attributes
52 ; based on built-in knowledge of intrinsics, so it is difficult to get
53 ; rid of them here.
54 declare i8* @llvm.nacl.read.tp()
55 ; CHECK: declare i8* @llvm.nacl.read.tp() #{{[0-9]+}}
56
57 define void @arithmetic_attrs() {
58 %add = add nsw i32 1, 2
59 %shl = shl nuw i32 3, 4
60 %lshr = lshr exact i32 2, 1
61 ret void
62 }
63 ; CHECK: define void @arithmetic_attrs() {
64 ; CHECK-NEXT: %add = add i32 1, 2
65 ; CHECK-NEXT: %shl = shl i32 3, 4
66 ; CHECK-NEXT: %lshr = lshr i32 2, 1
67
68
69 ; Implicit default alignments are changed to explicit alignments.
70 define void @default_alignment_attrs(float %f, double %d) {
71 load i8* null
72 load i32* null
73 load float* null
74 load double* null
75
76 store i8 100, i8* null
77 store i32 100, i32* null
78 store float %f, float* null
79 store double %d, double* null
80 ret void
81 }
82 ; CHECK: define void @default_alignment_attrs
83 ; CHECK-NEXT: load i8* null, align 1
84 ; CHECK-NEXT: load i32* null, align 1
85 ; CHECK-NEXT: load float* null, align 4
86 ; CHECK-NEXT: load double* null, align 8
87 ; CHECK-NEXT: store i8 100, i8* null, align 1
88 ; CHECK-NEXT: store i32 100, i32* null, align 1
89 ; CHECK-NEXT: store float %f, float* null, align 4
90 ; CHECK-NEXT: store double %d, double* null, align 8
91
92 define void @reduce_alignment_assumptions() {
93 load i32* null, align 4
94 load float* null, align 2
95 load float* null, align 4
96 load float* null, align 8
97 load double* null, align 2
98 load double* null, align 8
99 load double* null, align 16
100
101 ; Higher alignment assumptions must be retained for atomics.
102 load atomic i32* null seq_cst, align 4
103 load atomic i32* null seq_cst, align 8
104 store atomic i32 100, i32* null seq_cst, align 4
105 store atomic i32 100, i32* null seq_cst, align 8
106 ret void
107 }
108 ; CHECK: define void @reduce_alignment_assumptions
109 ; CHECK-NEXT: load i32* null, align 1
110 ; CHECK-NEXT: load float* null, align 1
111 ; CHECK-NEXT: load float* null, align 4
112 ; CHECK-NEXT: load float* null, align 4
113 ; CHECK-NEXT: load double* null, align 1
114 ; CHECK-NEXT: load double* null, align 8
115 ; CHECK-NEXT: load double* null, align 8
116 ; CHECK-NEXT: load atomic i32* null seq_cst, align 4
117 ; CHECK-NEXT: load atomic i32* null seq_cst, align 4
118 ; CHECK-NEXT: store atomic i32 100, i32* null seq_cst, align 4
119 ; CHECK-NEXT: store atomic i32 100, i32* null seq_cst, align 4
120
121 declare void @llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1)
122 declare void @llvm.memmove.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1)
123 declare void @llvm.memset.p0i8.i32(i8*, i8, i32, i32, i1)
124
125 define void @reduce_memcpy_alignment_assumptions(i8* %ptr) {
126 call void @llvm.memcpy.p0i8.p0i8.i32(i8* %ptr, i8* %ptr,
127 i32 20, i32 4, i1 false)
128 call void @llvm.memmove.p0i8.p0i8.i32(i8* %ptr, i8* %ptr,
129 i32 20, i32 4, i1 false)
130 call void @llvm.memset.p0i8.i32(i8* %ptr, i8 99,
131 i32 20, i32 4, i1 false)
132 ret void
133 }
134 ; CHECK: define void @reduce_memcpy_alignment_assumptions
135 ; CHECK-NEXT: call void @llvm.memcpy.{{.*}} i32 20, i32 1, i1 false)
136 ; CHECK-NEXT: call void @llvm.memmove.{{.*}} i32 20, i32 1, i1 false)
137 ; CHECK-NEXT: call void @llvm.memset.{{.*}} i32 20, i32 1, i1 false)
OLDNEW
« no previous file with comments | « test/Transforms/NaCl/simplify-allocas.ll ('k') | test/Transforms/NaCl/strip-branchweight-metadata.ll » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698