blob: 4221bbaca580e7697a2a645b61663fd1a0aa0b20 [file] [edit]
; NOTE: Assertions have been autogenerated by utils/update_llubi_test_checks.py UTC_ARGS: --version 6
; RUN: llubi --verbose < %s 2>&1 | FileCheck %s
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64"
%struct = type {i8, i32, i8}
define void @callee(ptr byval(%struct) %p) {
%concrete_zero1 = load i8, ptr %p
%concrete_zero2 = load i8, ptr %p
%p_padding1 = getelementptr i8, ptr %p, i64 1
%def1_padding1 = load i8, ptr %p_padding1
%def2_padding1 = load i8, ptr %p_padding1
%p_padding2 = getelementptr i8, ptr %p, i64 9
%def1_padding2 = load i8, ptr %p_padding2
%def2_padding2 = load i8, ptr %p_padding2
ret void
}
@g = global [12 x i8] zeroinitializer
define void @main() {
%p_padding1 = getelementptr i8, ptr @g, i64 1
store i8 10, ptr %p_padding1
%p_padding2 = getelementptr i8, ptr @g, i64 9
store i8 12, ptr %p_padding2
call void @callee(ptr byval(%struct) @g)
ret void
}
; CHECK: Entering function: main
; CHECK-NEXT: %p_padding1 = getelementptr i8, ptr @g, i64 1 => ptr 0x9 [@g + 1]
; CHECK-NEXT: store i8 10, ptr %p_padding1, align 1
; CHECK-NEXT: %p_padding2 = getelementptr i8, ptr @g, i64 9 => ptr 0x11 [@g + 9]
; CHECK-NEXT: store i8 12, ptr %p_padding2, align 1
; CHECK-NEXT: Entering function: callee
; CHECK-NEXT: ptr %p = ptr 0x18 [p]
; CHECK-NEXT: %concrete_zero1 = load i8, ptr %p, align 1 => i8 0
; CHECK-NEXT: %concrete_zero2 = load i8, ptr %p, align 1 => i8 0
; CHECK-NEXT: %p_padding1 = getelementptr i8, ptr %p, i64 1 => ptr 0x19 [p + 1]
; CHECK-NEXT: %def1_padding1 = load i8, ptr %p_padding1, align 1 => i8 10
; CHECK-NEXT: %def2_padding1 = load i8, ptr %p_padding1, align 1 => i8 10
; CHECK-NEXT: %p_padding2 = getelementptr i8, ptr %p, i64 9 => ptr 0x21 [p + 9]
; CHECK-NEXT: %def1_padding2 = load i8, ptr %p_padding2, align 1 => i8 12
; CHECK-NEXT: %def2_padding2 = load i8, ptr %p_padding2, align 1 => i8 12
; CHECK-NEXT: ret void
; CHECK-NEXT: Exiting function: callee
; CHECK-NEXT: call void @callee(ptr byval(%struct) @g)
; CHECK-NEXT: ret void
; CHECK-NEXT: Exiting function: main