mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-31 08:16:47 +00:00 
			
		
		
		
	We used to return PartialAlias if *either* variable being queried interacted with arguments or globals. AFAICT, we can change this to only returning MayAlias iff *both* variables being queried interacted with arguments or globals. Also, adding some basic functionality tests: some basic IPA tests, checking that we give conservative responses with arguments/globals thrown in the mix, and ensuring that we trace values through stores and loads. Note that saying that 'x' interacted with arguments or globals means that the Attributes of the StratifiedSet that 'x' belongs to has any bits set. Patch by George Burgess IV, thanks! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219122 91177308-0d34-0410-b5e6-96231b3b80d8
		
			
				
	
	
		
			25 lines
		
	
	
		
			573 B
		
	
	
	
		
			LLVM
		
	
	
	
	
	
			
		
		
	
	
			25 lines
		
	
	
		
			573 B
		
	
	
	
		
			LLVM
		
	
	
	
	
	
| ; This testcase ensures that CFL AA gives conservative answers on variables
 | |
| ; that involve arguments.
 | |
| 
 | |
| ; RUN: opt < %s -cfl-aa -aa-eval -print-may-aliases -disable-output 2>&1 | FileCheck %s
 | |
| 
 | |
| ; CHECK:     Function: test
 | |
| ; CHECK: 2 Total Alias Queries Performed
 | |
| ; CHECK: 1 no alias responses
 | |
| ; ^^ In @test2, %arg1 and %arg2 may alias
 | |
| 
 | |
| define void @test2(i32* %arg1, i32* %arg2) {
 | |
|   store i32 0, i32* %arg1
 | |
|   store i32 0, i32* %arg2
 | |
| 
 | |
|   ret void
 | |
| }
 | |
| 
 | |
| define void @test() {
 | |
|   %a = alloca i32, align 4
 | |
|   %b = alloca i32, align 4
 | |
|   call void @test2(i32* %a, i32* %b)
 | |
| 
 | |
|   ret void
 | |
| }
 |