mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-26 07:29:55 +00:00
given declare void @llvm.memset.p0i8.i32(i8* nocapture, i8, i32, i32, i1) declare void @foo() define void @bar() { call void @foo() call void @llvm.memset.p0i8.i32(i8* null, i8 0, i32 188, i32 1, i1 false) ret void } We used to produce L_foo$stub: .indirect_symbol _foo .ascii "\364\364\364\364\364" _memset$stub: .indirect_symbol _memset .ascii "\364\364\364\364\364" We not produce a private stub for memset too. Stubs are not needed with recent linkers, but we still produce them for darwin8. Thanks to David Fang for confirming that gcc used to do this too. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196468 91177308-0d34-0410-b5e6-96231b3b80d8
40 lines
1011 B
LLVM
40 lines
1011 B
LLVM
; RUN: llc -mtriple=i386-apple-darwin -mcpu=yonah < %s | FileCheck %s
|
|
|
|
declare void @llvm.memset.i32(i8*, i8, i32, i32) nounwind
|
|
|
|
define fastcc void @t1() nounwind {
|
|
entry:
|
|
; CHECK-LABEL: t1:
|
|
; CHECK: calll L_memset$stub
|
|
call void @llvm.memset.p0i8.i32(i8* null, i8 0, i32 188, i32 1, i1 false)
|
|
unreachable
|
|
}
|
|
|
|
define fastcc void @t2(i8 signext %c) nounwind {
|
|
entry:
|
|
; CHECK-LABEL: t2:
|
|
; CHECK: calll L_memset$stub
|
|
call void @llvm.memset.p0i8.i32(i8* undef, i8 %c, i32 76, i32 1, i1 false)
|
|
unreachable
|
|
}
|
|
|
|
declare void @llvm.memset.p0i8.i32(i8* nocapture, i8, i32, i32, i1) nounwind
|
|
|
|
define void @t3(i8* nocapture %s, i8 %a) nounwind {
|
|
entry:
|
|
tail call void @llvm.memset.p0i8.i32(i8* %s, i8 %a, i32 8, i32 1, i1 false)
|
|
ret void
|
|
; CHECK-LABEL: t3:
|
|
; CHECK: imull $16843009
|
|
}
|
|
|
|
define void @t4(i8* nocapture %s, i8 %a) nounwind {
|
|
entry:
|
|
tail call void @llvm.memset.p0i8.i32(i8* %s, i8 %a, i32 15, i32 1, i1 false)
|
|
ret void
|
|
; CHECK-LABEL: t4:
|
|
; CHECK: imull $16843009
|
|
; CHECK-NOT: imul
|
|
; CHECK: ret
|
|
}
|