You've already forked linux-packaging-mono
							
							
		
			
	
	
		
			33 lines
		
	
	
		
			729 B
		
	
	
	
		
			LLVM
		
	
	
	
	
	
		
		
			
		
	
	
			33 lines
		
	
	
		
			729 B
		
	
	
	
		
			LLVM
		
	
	
	
	
	
|   | ; RUN: opt < %s -lcssa -licm -S | FileCheck %s
 | ||
|  | ; PR30454
 | ||
|  | target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" | ||
|  | target triple = "x86_64-unknown-linux-gnu" | ||
|  | 
 | ||
|  | declare i8 @bar() | ||
|  | 
 | ||
|  | ; Test that we preserve LCSSA form when removing edges from unreachable blocks.
 | ||
|  | ; CHECK-LABEL: @foo
 | ||
|  | define void @foo() { | ||
|  | entry: | ||
|  |   br label %for.cond | ||
|  | 
 | ||
|  | for.cond: | ||
|  |   %x = phi i8 [ undef, %entry ], [ %y, %for.latch ] | ||
|  |   br i1 undef, label %for.latch, label %exit | ||
|  | 
 | ||
|  | ; CHECK:      unreachable.bb:
 | ||
|  | ; CHECK-NEXT:   unreachable
 | ||
|  | unreachable.bb: | ||
|  |   br i1 undef, label %exit, label %for.latch | ||
|  | 
 | ||
|  | for.latch: | ||
|  |   %y = call i8 @bar() | ||
|  |   br label %for.cond | ||
|  | 
 | ||
|  | ; CHECK:      exit:
 | ||
|  | ; CHECK-NEXT:   %x.lcssa = phi i8 [ %x, %for.cond ]
 | ||
|  | exit: | ||
|  |   %z = zext i8 %x to i32 | ||
|  |   ret void | ||
|  | } |