; NOTE: Assertions have been autogenerated by utils/update_llubi_test_checks.py UTC_ARGS: --version 6 ; RUN: llubi --verbose < %s 2>&1 | FileCheck %s ; For over-aligned arrays, the padding bytes between elements should be filled with undef. target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:64:64-i64:64:64" define void @main() { %alloca = alloca [2 x i32] store <4 x i32> zeroinitializer, ptr %alloca, align 8 store [2 x i32] [i32 1, i32 1], ptr %alloca, align 8 ; The padding bytes in the middle are filled with undef, ; while the tail padding bytes are still zero-initialized. %load1 = load <4 x i32>, ptr %alloca, align 8 %load2 = load <4 x i32>, ptr %alloca, align 8 %load3 = load <4 x i32>, ptr %alloca, align 8 %load_arr = load [2 x i32], ptr %alloca, align 8 ret void } ; CHECK: Entering function: main ; CHECK-NEXT: %alloca = alloca [2 x i32], align 8 => ptr 0x8 [alloca] ; CHECK-NEXT: store <4 x i32> zeroinitializer, ptr %alloca, align 8 ; CHECK-NEXT: store [2 x i32] [i32 1, i32 1], ptr %alloca, align 8 ; CHECK-NEXT: %load1 = load <4 x i32>, ptr %alloca, align 8 => { i32 1, i32 -289830082, i32 1, i32 -399511892 } ; CHECK-NEXT: %load2 = load <4 x i32>, ptr %alloca, align 8 => { i32 1, i32 -132966042, i32 1, i32 1094190734 } ; CHECK-NEXT: %load3 = load <4 x i32>, ptr %alloca, align 8 => { i32 1, i32 -1670034957, i32 1, i32 -899485425 } ; CHECK-NEXT: %load_arr = load [2 x i32], ptr %alloca, align 8 => { i32 1, i32 1 } ; CHECK-NEXT: ret void ; CHECK-NEXT: Exiting function: main