File tree Expand file tree Collapse file tree 1 file changed +40
-0
lines changed
llvm/test/Transforms/ArgumentPromotion Expand file tree Collapse file tree 1 file changed +40
-0
lines changed Original file line number Diff line number Diff line change
1
+ ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2
+ ; RUN: opt -S -argpromotion < %s | FileCheck %s
3
+
4
+ ; Make sure volatile and atomic loads are not promoted.
5
+
6
+ define internal i32 @callee_volatile (i32* %p ) {
7
+ ; CHECK-LABEL: @callee_volatile(
8
+ ; CHECK-NEXT: [[V:%.*]] = load volatile i32, i32* [[P:%.*]], align 4
9
+ ; CHECK-NEXT: ret i32 [[V]]
10
+ ;
11
+ %v = load volatile i32 , i32* %p
12
+ ret i32 %v
13
+ }
14
+
15
+ define void @caller_volatile (i32* %p ) {
16
+ ; CHECK-LABEL: @caller_volatile(
17
+ ; CHECK-NEXT: [[TMP1:%.*]] = call i32 @callee_volatile(i32* [[P:%.*]])
18
+ ; CHECK-NEXT: ret void
19
+ ;
20
+ call i32 @callee_volatile (i32* %p )
21
+ ret void
22
+ }
23
+
24
+ define internal i32 @callee_atomic (i32* %p ) {
25
+ ; CHECK-LABEL: @callee_atomic(
26
+ ; CHECK-NEXT: [[V:%.*]] = load atomic i32, i32* [[P:%.*]] seq_cst, align 4
27
+ ; CHECK-NEXT: ret i32 [[V]]
28
+ ;
29
+ %v = load atomic i32 , i32* %p seq_cst , align 4
30
+ ret i32 %v
31
+ }
32
+
33
+ define void @caller_atomic (i32* %p ) {
34
+ ; CHECK-LABEL: @caller_atomic(
35
+ ; CHECK-NEXT: [[TMP1:%.*]] = call i32 @callee_atomic(i32* [[P:%.*]])
36
+ ; CHECK-NEXT: ret void
37
+ ;
38
+ call i32 @callee_atomic (i32* %p )
39
+ ret void
40
+ }
You can’t perform that action at this time.
0 commit comments