mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-31 08:16:47 +00:00 
			
		
		
		
	Summary: The alias.scope metadata represents sets of things an instruction might alias with. When generically combining the metadata from two instructions the result must be the union of the original sets, because the new instruction might alias with anything any of the original instructions aliased with. Reviewers: hfinkel Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D7490 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228525 91177308-0d34-0410-b5e6-96231b3b80d8
		
			
				
	
	
		
			25 lines
		
	
	
		
			893 B
		
	
	
	
		
			LLVM
		
	
	
	
	
	
			
		
		
	
	
			25 lines
		
	
	
		
			893 B
		
	
	
	
		
			LLVM
		
	
	
	
	
	
| ; RUN: opt < %s -S -basicaa -memcpyopt | FileCheck %s
 | |
| target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 | |
| 
 | |
| define void @test(i8* noalias dereferenceable(1) %in, i8* noalias dereferenceable(1) %out) {
 | |
|   %tmp = alloca i8
 | |
|   %tmp2 = alloca i8
 | |
| ; CHECK: call void @llvm.memcpy.p0i8.p0i8.i64(i8* %out, i8* %in, i64 1, i32 8, i1 false)
 | |
|   call void @llvm.memcpy.p0i8.p0i8.i64(i8* %tmp, i8* %in, i64 1, i32 8, i1 false), !alias.scope !4
 | |
|   call void @llvm.memcpy.p0i8.p0i8.i64(i8* %tmp2, i8* %tmp, i64 1, i32 8, i1 false), !alias.scope !5
 | |
| 
 | |
|   call void @llvm.memcpy.p0i8.p0i8.i64(i8* %out, i8* %tmp2, i64 1, i32 8, i1 false), !noalias !6
 | |
| 
 | |
|   ret void
 | |
| }
 | |
| 
 | |
| declare void @llvm.memcpy.p0i8.p0i8.i64(i8*, i8*, i64, i32, i1)
 | |
| 
 | |
| !0 = !{!0}
 | |
| !1 = distinct !{!1, !0, !"in"}
 | |
| !2 = distinct !{!2, !0, !"tmp"}
 | |
| !3 = distinct !{!3, !0, !"tmp2"}
 | |
| !4 = distinct !{!1, !2}
 | |
| !5 = distinct !{!2, !3}
 | |
| !6 = distinct !{!1, !2}
 |