You've already forked linux-packaging-mono
							
							
		
			
				
	
	
		
			53 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| # RUN: llc -mtriple=arm-apple-ios -run-pass=if-converter %s -o - | FileCheck %s
 | |
| --- |
 | |
|   declare void @__stack_chk_fail()
 | |
|   declare void @bar()
 | |
| 
 | |
|   define void @foo() {
 | |
|     ret void
 | |
|   }
 | |
| ...
 | |
| ---
 | |
| name:            foo
 | |
| body:             |
 | |
| 
 | |
|   bb.0:
 | |
|     Bcc %bb.1, 1, %cpsr
 | |
|     B %bb.2
 | |
| 
 | |
|   bb.1:
 | |
|     Bcc %bb.3, 0, %cpsr
 | |
| 
 | |
|   bb.2:
 | |
|   successors:
 | |
|     tBL 14, %cpsr, @__stack_chk_fail
 | |
| 
 | |
|   bb.3:
 | |
|   successors:
 | |
|     %sp = tADDspi %sp, 2, 14, _
 | |
|     %sp = tADDspi %sp, 2, 14, _
 | |
|     tTAILJMPdND @bar, 14, %cpsr
 | |
| ...
 | |
| 
 | |
| # bb.2 has no successors, presumably because __stack_chk_fail doesn't return,
 | |
| # so there should be no edge from bb.2 to bb.3.
 | |
| # Nevertheless, IfConversion treats bb.1, bb.2, bb.3 as a triangle and
 | |
| # inserts a predicated copy of bb.2 in bb.1.
 | |
| 
 | |
| # This caused r302876 to die with a failed assertion.
 | |
| 
 | |
| # CHECK:     bb.0:
 | |
| # CHECK:       successors: %bb.2(0x40000000), %bb.1(0x40000000)
 | |
| # CHECK:       Bcc %bb.2, 1, %cpsr
 | |
| 
 | |
| # CHECK:     bb.1:
 | |
| # CHECK-NOT:   successors: %bb
 | |
| # CHECK:       tBL 14, %cpsr, @__stack_chk_fail
 | |
| 
 | |
| # CHECK:     bb.2:
 | |
| # CHECK-NOT:   successors: %bb
 | |
| # CHECK:       tBL 1, %cpsr, @__stack_chk_fail
 | |
| # CHECK:       %sp = tADDspi %sp, 2, 14, %noreg
 | |
| # CHECK:       %sp = tADDspi %sp, 2, 14, %noreg
 | |
| # CHECK:       tTAILJMPdND @bar, 14, %cpsr
 |