
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.
35 lines
1.2 KiB
LLVM
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
|
|
}
|