190 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			LLVM
		
	
	
	
			
		
		
	
	
			190 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			LLVM
		
	
	
	
; RUN: opt -licm -enable-mssa-loop-dependency -verify-memoryssa  -S %s | FileCheck %s
 | 
						|
; REQUIRES: asserts
 | 
						|
 | 
						|
target datalayout = "E-m:e-i1:8:16-i8:8:16-i64:64-f128:64-v128:64-a:8:16-n32:64"
 | 
						|
target triple = "s390x-ibm-linux"
 | 
						|
 | 
						|
@g_77 = external dso_local global i16, align 2
 | 
						|
 | 
						|
; CHECK-LABEL: @f1()
 | 
						|
define void @f1() {
 | 
						|
entry:
 | 
						|
  store i16 undef, i16* @g_77, align 2
 | 
						|
  br label %loop_pre
 | 
						|
 | 
						|
unreachablelabel: ; No predecessors
 | 
						|
  br label %loop_pre
 | 
						|
 | 
						|
loop_pre:
 | 
						|
  br label %for.cond.header
 | 
						|
 | 
						|
for.cond.header:
 | 
						|
  store i32 0, i32* undef, align 4
 | 
						|
  br i1 undef, label %for.body, label %for.end
 | 
						|
 | 
						|
for.body:
 | 
						|
  %tmp1 = load volatile i16, i16* undef, align 2
 | 
						|
  br label %for.end
 | 
						|
 | 
						|
for.end:
 | 
						|
  br i1 undef, label %func.exit, label %for.cond.header
 | 
						|
 | 
						|
func.exit:
 | 
						|
  ret void
 | 
						|
}
 | 
						|
 | 
						|
@g_159 = external dso_local global i32, align 4
 | 
						|
 | 
						|
; CHECK-LABEL: @f2()
 | 
						|
define void @f2() {
 | 
						|
entry:
 | 
						|
  br label %for.header.first
 | 
						|
 | 
						|
for.header.first:
 | 
						|
  br label %for.body.first
 | 
						|
 | 
						|
for.body.first:
 | 
						|
  store i32 0, i32* @g_159, align 4
 | 
						|
  br i1 undef, label %for.body.first, label %for.end.first
 | 
						|
 | 
						|
for.end.first:
 | 
						|
  br i1 undef, label %lor.end, label %for.header.first
 | 
						|
 | 
						|
lor.end:
 | 
						|
  br label %for.pre
 | 
						|
 | 
						|
unreachablelabel: ; No predecessors
 | 
						|
  br label %for.pre
 | 
						|
 | 
						|
for.pre:
 | 
						|
  br label %for.header.second
 | 
						|
 | 
						|
for.header.second:
 | 
						|
  store i32 undef, i32* undef, align 4
 | 
						|
  br label %for.header.second
 | 
						|
}
 | 
						|
 | 
						|
@g_271 = external dso_local global i8, align 2
 | 
						|
@g_427 = external dso_local unnamed_addr global [9 x i16], align 2
 | 
						|
 | 
						|
; CHECK-LABEL: @f3()
 | 
						|
define  void @f3() {
 | 
						|
entry:
 | 
						|
  br label %for.preheader
 | 
						|
 | 
						|
for.preheader:
 | 
						|
  store volatile i8 undef, i8* @g_271, align 2
 | 
						|
  br i1 undef, label %for.preheader, label %for.end
 | 
						|
 | 
						|
for.end:
 | 
						|
  br label %lbl_1058.i
 | 
						|
 | 
						|
unreachablelabel: ; No predecessors
 | 
						|
  br label %lbl_1058.i
 | 
						|
 | 
						|
lbl_1058.i:
 | 
						|
  br label %for.cond3.preheader.i
 | 
						|
 | 
						|
for.cond3.preheader.i:
 | 
						|
  %tmp1 = load i16, i16* getelementptr inbounds ([9 x i16], [9 x i16]* @g_427, i64 0, i64 2), align 2
 | 
						|
  %conv620.i129 = zext i16 %tmp1 to i32
 | 
						|
  %cmp621.i130 = icmp ugt i32 undef, %conv620.i129
 | 
						|
  %conv622.i131 = zext i1 %cmp621.i130 to i32
 | 
						|
  store i32 %conv622.i131, i32* undef, align 4
 | 
						|
  br i1 undef, label %func.exit, label %for.cond3.preheader.i
 | 
						|
 | 
						|
func.exit:
 | 
						|
  ret void
 | 
						|
}
 | 
						|
 | 
						|
@g_6 = external dso_local unnamed_addr global [3 x i32], align 4
 | 
						|
@g_244 = external dso_local global i64, align 8
 | 
						|
@g_1164 = external dso_local global i64, align 8
 | 
						|
 | 
						|
; CHECK-LABEL: @f4()
 | 
						|
define void @f4() {
 | 
						|
entry:
 | 
						|
  br label %for.cond8.preheader
 | 
						|
 | 
						|
for.cond8.preheader:
 | 
						|
  store i32 0, i32* getelementptr inbounds ([3 x i32], [3 x i32]* @g_6, i64 0, i64 2), align 4
 | 
						|
  br i1 undef, label %if.end, label %for.cond8.preheader
 | 
						|
 | 
						|
if.end:
 | 
						|
  br i1 undef, label %cleanup1270, label %for.cond504.preheader
 | 
						|
 | 
						|
for.cond504.preheader:
 | 
						|
  store i64 undef, i64* @g_244, align 8
 | 
						|
  br label %cleanup1270
 | 
						|
 | 
						|
for.cond559.preheader:
 | 
						|
  store i64 undef, i64* @g_1164, align 8
 | 
						|
  br i1 undef, label %for.cond559.preheader, label %cleanup1270
 | 
						|
 | 
						|
cleanup1270:
 | 
						|
  ret void
 | 
						|
}
 | 
						|
 | 
						|
@g_1504 = external dso_local local_unnamed_addr global i16****, align 8
 | 
						|
 | 
						|
define void @f5() {
 | 
						|
bb:
 | 
						|
  tail call fastcc void @f21()
 | 
						|
  br label %bb12.outer
 | 
						|
 | 
						|
bb12.outer.loopexit:                              ; No predecessors!
 | 
						|
  br label %bb12.outer
 | 
						|
 | 
						|
bb12.outer:                                       ; preds = %bb12.outer.loopexit, %bb
 | 
						|
  br i1 undef, label %bb12.outer.split.us, label %bb12.preheader
 | 
						|
 | 
						|
bb12.preheader:                                   ; preds = %bb12.outer
 | 
						|
  br label %bb12
 | 
						|
 | 
						|
bb12.outer.split.us:                              ; preds = %bb12.outer
 | 
						|
  br label %bb16.us.us
 | 
						|
 | 
						|
bb16.us.us:                                       ; preds = %bb16.us.us, %bb12.outer.split.us
 | 
						|
  br label %bb16.us.us
 | 
						|
 | 
						|
bb12:                                             ; preds = %bb77.1, %bb12.preheader
 | 
						|
  br i1 undef, label %bb25.preheader, label %bb77
 | 
						|
 | 
						|
bb25.preheader:                                   ; preds = %bb12.1, %bb12
 | 
						|
  br label %bb25
 | 
						|
 | 
						|
bb25:                                             ; preds = %l0, %bb25.preheader
 | 
						|
  br i1 undef, label %bb62, label %bb71.thread
 | 
						|
 | 
						|
bb62:                                             ; preds = %bb25
 | 
						|
  br i1 undef, label %bb92.loopexit, label %l0
 | 
						|
 | 
						|
l0:                                                ; preds = %bb62
 | 
						|
  br label %bb25
 | 
						|
 | 
						|
bb71.thread:                                      ; preds = %bb25
 | 
						|
  br label %bb92
 | 
						|
 | 
						|
bb77:                                             ; preds = %bb12
 | 
						|
  %tmp78 = load i16****, i16***** @g_1504, align 8
 | 
						|
  %tmp79 = load volatile i16***, i16**** %tmp78, align 8
 | 
						|
  br i1 undef, label %bb91, label %bb12.1
 | 
						|
 | 
						|
bb91:                                             ; preds = %bb77.1, %bb77
 | 
						|
  unreachable
 | 
						|
 | 
						|
bb92.loopexit:                                    ; preds = %bb62
 | 
						|
  br label %bb92
 | 
						|
 | 
						|
bb92:                                             ; preds = %bb92.loopexit, %bb71.thread
 | 
						|
  ret void
 | 
						|
 | 
						|
bb12.1:                                           ; preds = %bb77
 | 
						|
  br i1 undef, label %bb25.preheader, label %bb77.1
 | 
						|
 | 
						|
bb77.1:                                           ; preds = %bb12.1
 | 
						|
  br i1 undef, label %bb91, label %bb12
 | 
						|
}
 | 
						|
 | 
						|
declare void @f21()
 |