mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-11-01 00:17:01 +00:00 
			
		
		
		
	Patch by: Igor Laevsky <igor@azulsystems.com> "Currently SplitBlockPredecessors generates incorrect code in case if basic block we are going to split has a landingpad. Also seems like it is fairly common case among it's users to conditionally call either SplitBlockPredecessors or SplitLandingPadPredecessors. Because of this I think it is reasonable to add this condition directly into SplitBlockPredecessors." Differential Revision: http://reviews.llvm.org/D7157 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227390 91177308-0d34-0410-b5e6-96231b3b80d8
		
			
				
	
	
		
			46 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			LLVM
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			LLVM
		
	
	
	
	
	
| ; RUN: opt < %s -loop-simplify -S | FileCheck %s
 | |
| ; PR11575
 | |
| 
 | |
| @catchtypeinfo = external unnamed_addr constant { i8*, i8*, i8* }
 | |
| 
 | |
| define void @main() uwtable ssp {
 | |
| entry:
 | |
|   invoke void @f1()
 | |
|           to label %try.cont19 unwind label %catch
 | |
| 
 | |
| ; CHECK: catch.preheader:
 | |
| ; CHECK-NEXT: landingpad
 | |
| ; CHECK: br label %catch
 | |
| 
 | |
| ; CHECK: catch.preheader.split-lp:
 | |
| ; CHECK-NEXT: landingpad
 | |
| ; CHECK: br label %catch
 | |
| 
 | |
| catch:                                            ; preds = %if.else, %entry
 | |
|   %0 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
 | |
|           catch i8* bitcast ({ i8*, i8*, i8* }* @catchtypeinfo to i8*)
 | |
|   invoke void @f3()
 | |
|           to label %if.else unwind label %eh.resume
 | |
| 
 | |
| if.else:                                          ; preds = %catch
 | |
|   invoke void @f2()
 | |
|           to label %try.cont19 unwind label %catch
 | |
| 
 | |
| try.cont19:                                       ; preds = %if.else, %entry
 | |
|   ret void
 | |
| 
 | |
| eh.resume:                                        ; preds = %catch
 | |
|   %1 = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*)
 | |
|           cleanup
 | |
|           catch i8* bitcast ({ i8*, i8*, i8* }* @catchtypeinfo to i8*)
 | |
|   resume { i8*, i32 } undef
 | |
| }
 | |
| 
 | |
| declare i32 @__gxx_personality_v0(...)
 | |
| 
 | |
| declare void @f1()
 | |
| 
 | |
| declare void @f2()
 | |
| 
 | |
| declare void @f3()
 |