mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-31 08:16:47 +00:00 
			
		
		
		
	This adds the domtree analysis to the new pass manager. The analysis returns the same DominatorTree result entity used by the old pass manager and essentially all of the code is shared. We just have different boilerplate for running and printing the analysis. I've converted one test to run in both modes just to make sure this is exercised while both are live in the tree. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@225969 91177308-0d34-0410-b5e6-96231b3b80d8
		
			
				
	
	
		
			61 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			LLVM
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			LLVM
		
	
	
	
	
	
| ; RUN: opt < %s -domtree -analyze | FileCheck %s -check-prefix=CHECK -check-prefix=CHECK-OLDPM
 | |
| ; RUN: opt < %s -disable-output -passes='print<domtree>' 2>&1 | FileCheck %s -check-prefix=CHECK -check-prefix=CHECK-NEWPM
 | |
| 
 | |
| define void @test1() {
 | |
| ; CHECK-OLDPM-LABEL: 'Dominator Tree Construction' for function 'test1':
 | |
| ; CHECK-NEWPM-LABEL: DominatorTree for function: test1
 | |
| ; CHECK:      [1] %entry
 | |
| ; CHECK-NEXT:   [2] %a
 | |
| ; CHECK-NEXT:   [2] %c
 | |
| ; CHECK-NEXT:     [3] %d
 | |
| ; CHECK-NEXT:     [3] %e
 | |
| ; CHECK-NEXT:   [2] %b
 | |
| 
 | |
| entry:
 | |
|   br i1 undef, label %a, label %b
 | |
| 
 | |
| a:
 | |
|   br label %c
 | |
| 
 | |
| b:
 | |
|   br label %c
 | |
| 
 | |
| c:
 | |
|   br i1 undef, label %d, label %e
 | |
| 
 | |
| d:
 | |
|   ret void
 | |
| 
 | |
| e:
 | |
|   ret void
 | |
| }
 | |
| 
 | |
| define void @test2() {
 | |
| ; CHECK-OLDPM-LABEL: 'Dominator Tree Construction' for function 'test2':
 | |
| ; CHECK-NEWPM-LABEL: DominatorTree for function: test2
 | |
| ; CHECK:      [1] %entry
 | |
| ; CHECK-NEXT:   [2] %a
 | |
| ; CHECK-NEXT:     [3] %b
 | |
| ; CHECK-NEXT:       [4] %c
 | |
| ; CHECK-NEXT:         [5] %d
 | |
| ; CHECK-NEXT:         [5] %ret
 | |
| 
 | |
| entry:
 | |
|   br label %a
 | |
| 
 | |
| a:
 | |
|   br label %b
 | |
| 
 | |
| b:
 | |
|   br i1 undef, label %a, label %c
 | |
| 
 | |
| c:
 | |
|   br i1 undef, label %d, label %ret
 | |
| 
 | |
| d:
 | |
|   br i1 undef, label %a, label %ret
 | |
| 
 | |
| ret:
 | |
|   ret void
 | |
| }
 |