xref: /llvm-project/llvm/test/Transforms/ArgumentPromotion/volatile-atomic.ll (revision bcbc6151640f53e9d78392c66de9760c664d8b1d)
1be20ee67SNikita Popov; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2217e8576SNikita Popov; RUN: opt -S -passes=argpromotion < %s | FileCheck %s
3be20ee67SNikita Popov
4be20ee67SNikita Popov; Make sure volatile and atomic loads are not promoted.
5be20ee67SNikita Popov
6*bcbc6151SNikita Popovdefine internal i32 @callee_volatile(ptr %p) {
7be20ee67SNikita Popov; CHECK-LABEL: @callee_volatile(
8*bcbc6151SNikita Popov; CHECK-NEXT:    [[V:%.*]] = load volatile i32, ptr [[P:%.*]], align 4
9be20ee67SNikita Popov; CHECK-NEXT:    ret i32 [[V]]
10be20ee67SNikita Popov;
11*bcbc6151SNikita Popov  %v = load volatile i32, ptr %p
12be20ee67SNikita Popov  ret i32 %v
13be20ee67SNikita Popov}
14be20ee67SNikita Popov
15*bcbc6151SNikita Popovdefine void @caller_volatile(ptr %p) {
16be20ee67SNikita Popov; CHECK-LABEL: @caller_volatile(
17*bcbc6151SNikita Popov; CHECK-NEXT:    [[TMP1:%.*]] = call i32 @callee_volatile(ptr [[P:%.*]])
18be20ee67SNikita Popov; CHECK-NEXT:    ret void
19be20ee67SNikita Popov;
20*bcbc6151SNikita Popov  call i32 @callee_volatile(ptr %p)
21be20ee67SNikita Popov  ret void
22be20ee67SNikita Popov}
23be20ee67SNikita Popov
24*bcbc6151SNikita Popovdefine internal i32 @callee_atomic(ptr %p) {
25be20ee67SNikita Popov; CHECK-LABEL: @callee_atomic(
26*bcbc6151SNikita Popov; CHECK-NEXT:    [[V:%.*]] = load atomic i32, ptr [[P:%.*]] seq_cst, align 4
27be20ee67SNikita Popov; CHECK-NEXT:    ret i32 [[V]]
28be20ee67SNikita Popov;
29*bcbc6151SNikita Popov  %v = load atomic i32, ptr %p seq_cst, align 4
30be20ee67SNikita Popov  ret i32 %v
31be20ee67SNikita Popov}
32be20ee67SNikita Popov
33*bcbc6151SNikita Popovdefine void @caller_atomic(ptr %p) {
34be20ee67SNikita Popov; CHECK-LABEL: @caller_atomic(
35*bcbc6151SNikita Popov; CHECK-NEXT:    [[TMP1:%.*]] = call i32 @callee_atomic(ptr [[P:%.*]])
36be20ee67SNikita Popov; CHECK-NEXT:    ret void
37be20ee67SNikita Popov;
38*bcbc6151SNikita Popov  call i32 @callee_atomic(ptr %p)
39be20ee67SNikita Popov  ret void
40be20ee67SNikita Popov}
41