xref: /llvm-project/llvm/test/Transforms/InferAlignment/attributes.ll (revision 0f152a55d3e4e71f7c795bf555e40c8895b97077)
13978f37cSDhruv Chawla; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 2
2*0f152a55SDhruv Chawla; RUN: opt < %s -passes=infer-alignment -S | FileCheck %s
33978f37cSDhruv Chawla
43978f37cSDhruv Chawladefine void @attribute(ptr align 32 %a) {
53978f37cSDhruv Chawla; CHECK-LABEL: define void @attribute
63978f37cSDhruv Chawla; CHECK-SAME: (ptr align 32 [[A:%.*]]) {
7*0f152a55SDhruv Chawla; CHECK-NEXT:    [[LOAD:%.*]] = load i32, ptr [[A]], align 32
8*0f152a55SDhruv Chawla; CHECK-NEXT:    store i32 123, ptr [[A]], align 32
93978f37cSDhruv Chawla; CHECK-NEXT:    ret void
103978f37cSDhruv Chawla;
113978f37cSDhruv Chawla  %load = load i32, ptr %a, align 1
123978f37cSDhruv Chawla  store i32 123, ptr %a, align 1
133978f37cSDhruv Chawla  ret void
143978f37cSDhruv Chawla}
153978f37cSDhruv Chawla
163978f37cSDhruv Chawladefine void @attribute_through_call(ptr align 32 %a) {
173978f37cSDhruv Chawla; CHECK-LABEL: define void @attribute_through_call
183978f37cSDhruv Chawla; CHECK-SAME: (ptr align 32 [[A:%.*]]) {
193978f37cSDhruv Chawla; CHECK-NEXT:    [[RES:%.*]] = call ptr @call(ptr [[A]])
20*0f152a55SDhruv Chawla; CHECK-NEXT:    [[LOAD:%.*]] = load i32, ptr [[RES]], align 32
21*0f152a55SDhruv Chawla; CHECK-NEXT:    store i32 123, ptr [[RES]], align 32
223978f37cSDhruv Chawla; CHECK-NEXT:    ret void
233978f37cSDhruv Chawla;
243978f37cSDhruv Chawla  %res = call ptr @call(ptr %a)
253978f37cSDhruv Chawla  %load = load i32, ptr %res, align 1
263978f37cSDhruv Chawla  store i32 123, ptr %res, align 1
273978f37cSDhruv Chawla  ret void
283978f37cSDhruv Chawla}
293978f37cSDhruv Chawla
303978f37cSDhruv Chawladefine void @attribute_return_value(ptr %a) {
313978f37cSDhruv Chawla; CHECK-LABEL: define void @attribute_return_value
323978f37cSDhruv Chawla; CHECK-SAME: (ptr [[A:%.*]]) {
333978f37cSDhruv Chawla; CHECK-NEXT:    [[RES:%.*]] = call align 32 ptr @call(ptr [[A]])
34*0f152a55SDhruv Chawla; CHECK-NEXT:    [[LOAD:%.*]] = load i32, ptr [[RES]], align 32
35*0f152a55SDhruv Chawla; CHECK-NEXT:    store i32 123, ptr [[RES]], align 32
363978f37cSDhruv Chawla; CHECK-NEXT:    ret void
373978f37cSDhruv Chawla;
383978f37cSDhruv Chawla  %res = call align 32 ptr @call(ptr %a)
393978f37cSDhruv Chawla  %load = load i32, ptr %res, align 1
403978f37cSDhruv Chawla  store i32 123, ptr %res, align 1
413978f37cSDhruv Chawla  ret void
423978f37cSDhruv Chawla}
433978f37cSDhruv Chawla
443978f37cSDhruv Chawladeclare ptr @call(ptr returned)
45