mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-03-12 17:37:13 +00:00
to be unreliable on platforms which require memcpy calls, and it is complicating broader legalize cleanups. It is hoped that these cleanups will make memcpy byval easier to implement in the future. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138977 91177308-0d34-0410-b5e6-96231b3b80d8
27 lines
776 B
LLVM
27 lines
776 B
LLVM
; RUN: llc -march=mipsel -mcpu=4ke < %s | FileCheck %s
|
|
|
|
; byval is currently unsupported.
|
|
; XFAIL: *
|
|
|
|
%struct.S1 = type { [65536 x i8] }
|
|
|
|
@s1 = external global %struct.S1
|
|
|
|
define void @f() nounwind {
|
|
entry:
|
|
; CHECK: lui $at, 65534
|
|
; CHECK: addu $at, $sp, $at
|
|
; CHECK: addiu $sp, $at, -24
|
|
; CHECK: .cprestore 65536
|
|
|
|
%agg.tmp = alloca %struct.S1, align 1
|
|
%tmp = getelementptr inbounds %struct.S1* %agg.tmp, i32 0, i32 0, i32 0
|
|
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %tmp, i8* getelementptr inbounds (%struct.S1* @s1, i32 0, i32 0, i32 0), i32 65536, i32 1, i1 false)
|
|
call void @f2(%struct.S1* byval %agg.tmp) nounwind
|
|
ret void
|
|
}
|
|
|
|
declare void @f2(%struct.S1* byval)
|
|
|
|
declare void @llvm.memcpy.p0i8.p0i8.i32(i8* nocapture, i8* nocapture, i32, i32, i1) nounwind
|