xref: /llvm-project/llvm/test/Transforms/InstCombine/align-attr.ll (revision 3e992d81afc3925a8685eb15f794dd4a6ba3e97e)
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2; RUN: opt < %s -passes=instcombine -S | FileCheck %s
3target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
4target triple = "x86_64-unknown-linux-gnu"
5
6; Function Attrs: nounwind uwtable
7define i32 @foo1(ptr align 32 %a) #0 {
8; CHECK-LABEL: @foo1(
9; CHECK-NEXT:  entry:
10; CHECK-NEXT:    [[TMP0:%.*]] = load i32, ptr [[A:%.*]], align 4
11; CHECK-NEXT:    ret i32 [[TMP0]]
12;
13entry:
14  %0 = load i32, ptr %a, align 4
15  ret i32 %0
16
17}
18
19define i32 @foo2(ptr align 32 %a) #0 {
20; CHECK-LABEL: @foo2(
21; CHECK-NEXT:  entry:
22; CHECK-NEXT:    [[V:%.*]] = call ptr @func1(ptr [[A:%.*]])
23; CHECK-NEXT:    [[TMP0:%.*]] = load i32, ptr [[A]], align 4
24; CHECK-NEXT:    ret i32 [[TMP0]]
25;
26entry:
27  %v = call ptr @func1(ptr %a)
28  %0 = load i32, ptr %v, align 4
29  ret i32 %0
30
31}
32
33declare ptr @func1(ptr returned) nounwind
34
35