brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.0 KiB · 6a0ddb5 Raw
49 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --function-signature --scrub-attributes2; RUN: opt -S -passes=inline < %s | FileCheck %s3 4;; Check that we correctly use the index size when accumulating offsets during CallPromotion5 6target datalayout = "p200:128:128:128:64-A200-P200-G200"7 8define void @test(ptr addrspace(200) %arg1, ptr addrspace(200) %arg2) local_unnamed_addr addrspace(200) {9; CHECK-LABEL: define {{[^@]+}}@test10; CHECK-SAME: (ptr addrspace(200) [[ARG1:%.*]], ptr addrspace(200) [[ARG2:%.*]]) local_unnamed_addr addrspace(200) {11; CHECK-NEXT:  entry:12; CHECK-NEXT:    [[TMP0:%.*]] = load ptr addrspace(200), ptr addrspace(200) [[ARG2]], align 1613; CHECK-NEXT:    call addrspace(200) void [[TMP0]](ptr addrspace(200) [[ARG1]])14; CHECK-NEXT:    ret void15;16entry:17  call void @call_fnptr(ptr addrspace(200) %arg1, ptr addrspace(200) %arg2)18  ret void19}20 21define internal void @call_fnptr(ptr addrspace(200) %this, ptr addrspace(200) %arg) unnamed_addr addrspace(200) align 2 {22entry:23  %0 = load ptr addrspace(200), ptr addrspace(200) %arg, align 1624  call void %0(ptr addrspace(200) %this)25  ret void26}27 28define void @test2(ptr addrspace(200) %this) local_unnamed_addr addrspace(200) {29; CHECK-LABEL: define {{[^@]+}}@test230; CHECK-SAME: (ptr addrspace(200) [[THIS:%.*]]) local_unnamed_addr addrspace(200) {31; CHECK-NEXT:  entry:32; CHECK-NEXT:    [[VTABLE_I:%.*]] = load ptr addrspace(200), ptr addrspace(200) [[THIS]], align 1633; CHECK-NEXT:    [[FN_I:%.*]] = load ptr addrspace(200), ptr addrspace(200) [[VTABLE_I]], align 1634; CHECK-NEXT:    call addrspace(200) void [[FN_I]](ptr addrspace(200) [[THIS]])35; CHECK-NEXT:    ret void36;37entry:38  call void @call_via_vtable(ptr addrspace(200) %this)39  ret void40}41 42define internal void @call_via_vtable(ptr addrspace(200) %this) unnamed_addr addrspace(200) {43entry:44  %vtable = load ptr addrspace(200), ptr addrspace(200) %this, align 1645  %fn = load ptr addrspace(200), ptr addrspace(200) %vtable, align 1646  call void %fn(ptr addrspace(200) %this)47  ret void48}49