llvm-project/llvm/test/Transforms/InstCombine/call-cast-target-preallocated.ll
Nikita Popov 32a4566fbb [InstCombine] Convert tests to opaque pointers (NFC)
The two debuginfo tests go away because the relevant transforms
no longer occur in this form, e.g. the "cast of alloca" transform
just doesn't exist with opaque pointers.
2023-04-05 15:25:53 +02:00

35 lines
1.2 KiB
LLVM

; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 2
; RUN: opt < %s -passes=instcombine -S | FileCheck %s
target datalayout = "e-p:32:32"
target triple = "i686-pc-win32"
declare token @llvm.call.preallocated.setup(i32)
declare ptr @llvm.call.preallocated.arg(token, i32)
declare void @takes_i32(i32)
declare void @takes_i32_preallocated(ptr preallocated(i32))
define void @f() {
; CHECK-LABEL: define void @f() {
; CHECK-NEXT: [[T:%.*]] = call token @llvm.call.preallocated.setup(i32 1)
; CHECK-NEXT: [[A:%.*]] = call ptr @llvm.call.preallocated.arg(token [[T]], i32 0) #[[ATTR1:[0-9]+]]
; CHECK-NEXT: call void @takes_i32(ptr preallocated(i32) [[A]]) [ "preallocated"(token [[T]]) ]
; CHECK-NEXT: ret void
;
%t = call token @llvm.call.preallocated.setup(i32 1)
%a = call ptr @llvm.call.preallocated.arg(token %t, i32 0) preallocated(i32)
call void @takes_i32(ptr preallocated(i32) %a) ["preallocated"(token %t)]
ret void
}
define void @g() {
; CHECK-LABEL: define void @g() {
; CHECK-NEXT: call void @takes_i32_preallocated(i32 0)
; CHECK-NEXT: ret void
;
call void @takes_i32_preallocated(i32 0)
ret void
}