When extending a memset range past the front, set the alignment of the
[oota-llvm.git] / test / Transforms / MemCpyOpt / align.ll
1 ; RUN: opt < %s -S -memcpyopt | FileCheck %s
2
3 ; The resulting memset is only 4-byte aligned, despite containing
4 ; a 16-byte alignmed store in the middle.
5
6 ; CHECK: call void @llvm.memset.i64(i8* %a01, i8 0, i64 16, i32 4)
7
8 define void @foo(i32* %p) {
9   %a0 = getelementptr i32* %p, i64 0
10   store i32 0, i32* %a0, align 4
11   %a1 = getelementptr i32* %p, i64 1
12   store i32 0, i32* %a1, align 16
13   %a2 = getelementptr i32* %p, i64 2
14   store i32 0, i32* %a2, align 4
15   %a3 = getelementptr i32* %p, i64 3
16   store i32 0, i32* %a3, align 4
17   ret void
18 }