mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-30 16:17:05 +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
 | |
| }
 |