[llvm] r275742 - [GVN] Move other PRE tests to a subdirectory.

Davide Italiano via llvm-commits llvm-commits at lists.llvm.org
Sun Jul 17 16:55:21 PDT 2016


Author: davide
Date: Sun Jul 17 18:55:20 2016
New Revision: 275742

URL: http://llvm.org/viewvc/llvm-project?rev=275742&view=rev
Log:
[GVN] Move other PRE tests to a subdirectory.

Added:
    llvm/trunk/test/Transforms/GVN/PRE/2009-02-17-LoadPRECrash.ll
      - copied, changed from r275741, llvm/trunk/test/Transforms/GVN/2009-02-17-LoadPRECrash.ll
    llvm/trunk/test/Transforms/GVN/PRE/2009-06-17-InvalidPRE.ll
      - copied, changed from r275741, llvm/trunk/test/Transforms/GVN/2009-06-17-InvalidPRE.ll
    llvm/trunk/test/Transforms/GVN/PRE/local-pre.ll
      - copied, changed from r275741, llvm/trunk/test/Transforms/GVN/local-pre.ll
    llvm/trunk/test/Transforms/GVN/PRE/pre-basic-add.ll
      - copied, changed from r275741, llvm/trunk/test/Transforms/GVN/pre-basic-add.ll
    llvm/trunk/test/Transforms/GVN/PRE/pre-single-pred.ll
      - copied, changed from r275741, llvm/trunk/test/Transforms/GVN/pre-single-pred.ll
Removed:
    llvm/trunk/test/Transforms/GVN/2009-02-17-LoadPRECrash.ll
    llvm/trunk/test/Transforms/GVN/2009-06-17-InvalidPRE.ll
    llvm/trunk/test/Transforms/GVN/local-pre.ll
    llvm/trunk/test/Transforms/GVN/pre-basic-add.ll
    llvm/trunk/test/Transforms/GVN/pre-single-pred.ll

Removed: llvm/trunk/test/Transforms/GVN/2009-02-17-LoadPRECrash.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/GVN/2009-02-17-LoadPRECrash.ll?rev=275741&view=auto
==============================================================================
--- llvm/trunk/test/Transforms/GVN/2009-02-17-LoadPRECrash.ll (original)
+++ llvm/trunk/test/Transforms/GVN/2009-02-17-LoadPRECrash.ll (removed)
@@ -1,193 +0,0 @@
-; RUN: opt < %s -gvn -enable-load-pre -disable-output
-
-	%struct.VEC_rtx_base = type { i32, i32, [1 x %struct.rtx_def*] }
-	%struct.VEC_rtx_gc = type { %struct.VEC_rtx_base }
-	%struct.block_symbol = type { [3 x %struct.cgraph_rtl_info], %struct.object_block*, i64 }
-	%struct.cgraph_rtl_info = type { i32 }
-	%struct.object_block = type { %struct.section*, i32, i64, %struct.VEC_rtx_gc*, %struct.VEC_rtx_gc* }
-	%struct.rtvec_def = type { i32, [1 x %struct.rtx_def*] }
-	%struct.rtx_def = type { i16, i8, i8, %struct.u }
-	%struct.section = type { %struct.unnamed_section }
-	%struct.u = type { %struct.block_symbol }
-	%struct.unnamed_section = type { %struct.cgraph_rtl_info, void (i8*)*, i8*, %struct.section* }
-
-declare %struct.rtvec_def* @gen_rtvec(i32, ...)
-
-declare %struct.rtx_def* @plus_constant(%struct.rtx_def*, i64)
-
-declare %struct.rtx_def* @gen_rtx_fmt_Ei(i32, i32, %struct.rtvec_def*, i32)
-
-declare i32 @local_symbolic_operand(%struct.rtx_def*, i32)
-
-define %struct.rtx_def* @legitimize_pic_address(%struct.rtx_def* %orig, %struct.rtx_def* %reg) nounwind {
-entry:
-	%addr = alloca %struct.rtx_def*		; <%struct.rtx_def**> [#uses=5]
-	%iftmp.1532 = alloca %struct.rtx_def*		; <%struct.rtx_def**> [#uses=3]
-	store %struct.rtx_def* %orig, %struct.rtx_def** null
-	%0 = load %struct.rtx_def*, %struct.rtx_def** null, align 4		; <%struct.rtx_def*> [#uses=0]
-	br i1 false, label %bb96, label %bb59
-
-bb59:		; preds = %entry
-	%1 = load %struct.rtx_def*, %struct.rtx_def** %addr, align 4		; <%struct.rtx_def*> [#uses=1]
-	%2 = call i32 @local_symbolic_operand(%struct.rtx_def* %1, i32 0) nounwind		; <i32> [#uses=0]
-	br i1 false, label %bb96, label %bb63
-
-bb63:		; preds = %bb59
-	br i1 false, label %bb64, label %bb74
-
-bb64:		; preds = %bb63
-	br i1 false, label %bb72, label %bb65
-
-bb65:		; preds = %bb64
-	br label %bb72
-
-bb72:		; preds = %bb65, %bb64
-	br label %bb74
-
-bb74:		; preds = %bb72, %bb63
-	br i1 false, label %bb75, label %bb76
-
-bb75:		; preds = %bb74
-	br label %bb76
-
-bb76:		; preds = %bb75, %bb74
-	br i1 false, label %bb77, label %bb84
-
-bb77:		; preds = %bb76
-	%3 = getelementptr [1 x %struct.cgraph_rtl_info], [1 x %struct.cgraph_rtl_info]* null, i32 0, i32 0		; <%struct.cgraph_rtl_info*> [#uses=0]
-	unreachable
-
-bb84:		; preds = %bb76
-	br i1 false, label %bb85, label %bb86
-
-bb85:		; preds = %bb84
-	br label %bb87
-
-bb86:		; preds = %bb84
-	br label %bb87
-
-bb87:		; preds = %bb86, %bb85
-	%4 = call %struct.rtx_def* @gen_rtx_fmt_Ei(i32 16, i32 0, %struct.rtvec_def* null, i32 1) nounwind		; <%struct.rtx_def*> [#uses=0]
-	br i1 false, label %bb89, label %bb90
-
-bb89:		; preds = %bb87
-	br label %bb91
-
-bb90:		; preds = %bb87
-	br label %bb91
-
-bb91:		; preds = %bb90, %bb89
-	br i1 false, label %bb92, label %bb93
-
-bb92:		; preds = %bb91
-	br label %bb94
-
-bb93:		; preds = %bb91
-	br label %bb94
-
-bb94:		; preds = %bb93, %bb92
-	unreachable
-
-bb96:		; preds = %bb59, %entry
-	%5 = load %struct.rtx_def*, %struct.rtx_def** %addr, align 4		; <%struct.rtx_def*> [#uses=1]
-	%6 = getelementptr %struct.rtx_def, %struct.rtx_def* %5, i32 0, i32 0		; <i16*> [#uses=1]
-	%7 = load i16, i16* %6, align 2		; <i16> [#uses=0]
-	br i1 false, label %bb147, label %bb97
-
-bb97:		; preds = %bb96
-	%8 = load %struct.rtx_def*, %struct.rtx_def** %addr, align 4		; <%struct.rtx_def*> [#uses=0]
-	br i1 false, label %bb147, label %bb99
-
-bb99:		; preds = %bb97
-	unreachable
-
-bb147:		; preds = %bb97, %bb96
-	%9 = load %struct.rtx_def*, %struct.rtx_def** %addr, align 4		; <%struct.rtx_def*> [#uses=1]
-	%10 = getelementptr %struct.rtx_def, %struct.rtx_def* %9, i32 0, i32 0		; <i16*> [#uses=1]
-	%11 = load i16, i16* %10, align 2		; <i16> [#uses=0]
-	br i1 false, label %bb164, label %bb148
-
-bb148:		; preds = %bb147
-	br i1 false, label %bb164, label %bb149
-
-bb149:		; preds = %bb148
-	br i1 false, label %bb150, label %bb152
-
-bb150:		; preds = %bb149
-	unreachable
-
-bb152:		; preds = %bb149
-	br label %bb164
-
-bb164:		; preds = %bb152, %bb148, %bb147
-	%12 = getelementptr [1 x %struct.cgraph_rtl_info], [1 x %struct.cgraph_rtl_info]* null, i32 0, i32 1		; <%struct.cgraph_rtl_info*> [#uses=0]
-	br i1 false, label %bb165, label %bb166
-
-bb165:		; preds = %bb164
-	br label %bb167
-
-bb166:		; preds = %bb164
-	br label %bb167
-
-bb167:		; preds = %bb166, %bb165
-	br i1 false, label %bb211, label %bb168
-
-bb168:		; preds = %bb167
-	br i1 false, label %bb211, label %bb170
-
-bb170:		; preds = %bb168
-	br i1 false, label %bb172, label %bb181
-
-bb172:		; preds = %bb170
-	br i1 false, label %bb179, label %bb174
-
-bb174:		; preds = %bb172
-	br i1 false, label %bb177, label %bb175
-
-bb175:		; preds = %bb174
-	br i1 false, label %bb177, label %bb176
-
-bb176:		; preds = %bb175
-	br label %bb178
-
-bb177:		; preds = %bb175, %bb174
-	br label %bb178
-
-bb178:		; preds = %bb177, %bb176
-	br label %bb180
-
-bb179:		; preds = %bb172
-	br label %bb180
-
-bb180:		; preds = %bb179, %bb178
-	br label %bb181
-
-bb181:		; preds = %bb180, %bb170
-	%13 = call %struct.rtvec_def* (i32, ...) @gen_rtvec(i32 1, %struct.rtx_def* null) nounwind		; <%struct.rtvec_def*> [#uses=0]
-	unreachable
-
-bb211:		; preds = %bb168, %bb167
-	%14 = load %struct.rtx_def*, %struct.rtx_def** %addr, align 4		; <%struct.rtx_def*> [#uses=0]
-	%15 = getelementptr [1 x %struct.cgraph_rtl_info], [1 x %struct.cgraph_rtl_info]* null, i32 0, i32 0		; <%struct.cgraph_rtl_info*> [#uses=0]
-	store %struct.rtx_def* null, %struct.rtx_def** null, align 4
-	br i1 false, label %bb212, label %bb213
-
-bb212:		; preds = %bb211
-	store %struct.rtx_def* null, %struct.rtx_def** %iftmp.1532, align 4
-	br label %bb214
-
-bb213:		; preds = %bb211
-	store %struct.rtx_def* null, %struct.rtx_def** %iftmp.1532, align 4
-	br label %bb214
-
-bb214:		; preds = %bb213, %bb212
-	%16 = bitcast %struct.block_symbol* null to [1 x %struct.cgraph_rtl_info]*		; <[1 x %struct.cgraph_rtl_info]*> [#uses=1]
-	%17 = getelementptr [1 x %struct.cgraph_rtl_info], [1 x %struct.cgraph_rtl_info]* %16, i32 0, i32 1		; <%struct.cgraph_rtl_info*> [#uses=0]
-	%18 = load %struct.rtx_def*, %struct.rtx_def** %iftmp.1532, align 4		; <%struct.rtx_def*> [#uses=0]
-	%19 = getelementptr %struct.rtx_def, %struct.rtx_def* null, i32 0, i32 3		; <%struct.u*> [#uses=1]
-	%20 = getelementptr %struct.u, %struct.u* %19, i32 0, i32 0		; <%struct.block_symbol*> [#uses=1]
-	%21 = bitcast %struct.block_symbol* %20 to [1 x i64]*		; <[1 x i64]*> [#uses=1]
-	%22 = getelementptr [1 x i64], [1 x i64]* %21, i32 0, i32 0		; <i64*> [#uses=0]
-	%23 = call %struct.rtx_def* @plus_constant(%struct.rtx_def* null, i64 0) nounwind		; <%struct.rtx_def*> [#uses=0]
-	unreachable
-}

Removed: llvm/trunk/test/Transforms/GVN/2009-06-17-InvalidPRE.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/GVN/2009-06-17-InvalidPRE.ll?rev=275741&view=auto
==============================================================================
--- llvm/trunk/test/Transforms/GVN/2009-06-17-InvalidPRE.ll (original)
+++ llvm/trunk/test/Transforms/GVN/2009-06-17-InvalidPRE.ll (removed)
@@ -1,73 +0,0 @@
-; RUN: opt < %s -gvn -enable-load-pre -S | FileCheck %s
-; CHECK-NOT: pre1
-; GVN load pre was hoisting the loads at %13 and %16 up to bb4.outer.  
-; This is invalid as it bypasses the check for %m.0.ph==null in bb4. 
-; ModuleID = 'mbuf.c'
-target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128"
-target triple = "i386-apple-darwin9.6"
-  %struct.mbuf = type { %struct.mbuf*, %struct.mbuf*, i32, i8*, i16, i16, i32 }
-
-define void @m_adj(%struct.mbuf* %mp, i32 %req_len) nounwind optsize {
-entry:
-  %0 = icmp eq %struct.mbuf* %mp, null    ; <i1> [#uses=1]
-  %1 = icmp slt i32 %req_len, 0   ; <i1> [#uses=1]
-  %or.cond = or i1 %1, %0   ; <i1> [#uses=1]
-  br i1 %or.cond, label %return, label %bb4.preheader
-
-bb4.preheader:    ; preds = %entry
-  br label %bb4.outer
-
-bb2:    ; preds = %bb1
-  %2 = sub i32 %len.0, %13   ; <i32> [#uses=1]
-  %3 = getelementptr %struct.mbuf, %struct.mbuf* %m.0.ph, i32 0, i32 2    ; <i32*> [#uses=1]
-  store i32 0, i32* %3, align 4
-  %4 = getelementptr %struct.mbuf, %struct.mbuf* %m.0.ph, i32 0, i32 0    ; <%struct.mbuf**> [#uses=1]
-  %5 = load %struct.mbuf*, %struct.mbuf** %4, align 4    ; <%struct.mbuf*> [#uses=1]
-  br label %bb4.outer
-
-bb4.outer:    ; preds = %bb4.preheader, %bb2
-  %m.0.ph = phi %struct.mbuf* [ %5, %bb2 ], [ %mp, %bb4.preheader ]   ; <%struct.mbuf*> [#uses=7]
-  %len.0.ph = phi i32 [ %2, %bb2 ], [ %req_len, %bb4.preheader ]    ; <i32> [#uses=1]
-  %6 = icmp ne %struct.mbuf* %m.0.ph, null    ; <i1> [#uses=1]
-  %7 = getelementptr %struct.mbuf, %struct.mbuf* %m.0.ph, i32 0, i32 2    ; <i32*> [#uses=1]
-  %8 = getelementptr %struct.mbuf, %struct.mbuf* %m.0.ph, i32 0, i32 2   ; <i32*> [#uses=1]
-  %9 = getelementptr %struct.mbuf, %struct.mbuf* %m.0.ph, i32 0, i32 3   ; <i8**> [#uses=1]
-  %10 = getelementptr %struct.mbuf, %struct.mbuf* %m.0.ph, i32 0, i32 3   ; <i8**> [#uses=1]
-  br label %bb4
-
-bb4:    ; preds = %bb4.outer, %bb3
-  %len.0 = phi i32 [ 0, %bb3 ], [ %len.0.ph, %bb4.outer ]   ; <i32> [#uses=6]
-  %11 = icmp sgt i32 %len.0, 0    ; <i1> [#uses=1]
-  %12 = and i1 %11, %6    ; <i1> [#uses=1]
-  br i1 %12, label %bb1, label %bb7
-
-bb1:    ; preds = %bb4
-  %13 = load i32, i32* %7, align 4    ; <i32> [#uses=3]
-  %14 = icmp sgt i32 %13, %len.0    ; <i1> [#uses=1]
-  br i1 %14, label %bb3, label %bb2
-
-bb3:    ; preds = %bb1
-  %15 = sub i32 %13, %len.0    ; <i32> [#uses=1]
-  store i32 %15, i32* %8, align 4
-  %16 = load i8*, i8** %9, align 4    ; <i8*> [#uses=1]
-  %17 = getelementptr i8, i8* %16, i32 %len.0   ; <i8*> [#uses=1]
-  store i8* %17, i8** %10, align 4
-  br label %bb4
-
-bb7:    ; preds = %bb4
-  %18 = getelementptr %struct.mbuf, %struct.mbuf* %mp, i32 0, i32 5   ; <i16*> [#uses=1]
-  %19 = load i16, i16* %18, align 2    ; <i16> [#uses=1]
-  %20 = zext i16 %19 to i32   ; <i32> [#uses=1]
-  %21 = and i32 %20, 2    ; <i32> [#uses=1]
-  %22 = icmp eq i32 %21, 0    ; <i1> [#uses=1]
-  br i1 %22, label %return, label %bb8
-
-bb8:    ; preds = %bb7
-  %23 = sub i32 %req_len, %len.0    ; <i32> [#uses=1]
-  %24 = getelementptr %struct.mbuf, %struct.mbuf* %mp, i32 0, i32 6   ; <i32*> [#uses=1]
-  store i32 %23, i32* %24, align 4
-  ret void
-
-return:   ; preds = %bb7, %entry
-  ret void
-}

Copied: llvm/trunk/test/Transforms/GVN/PRE/2009-02-17-LoadPRECrash.ll (from r275741, llvm/trunk/test/Transforms/GVN/2009-02-17-LoadPRECrash.ll)
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/GVN/PRE/2009-02-17-LoadPRECrash.ll?p2=llvm/trunk/test/Transforms/GVN/PRE/2009-02-17-LoadPRECrash.ll&p1=llvm/trunk/test/Transforms/GVN/2009-02-17-LoadPRECrash.ll&r1=275741&r2=275742&rev=275742&view=diff
==============================================================================
    (empty)

Copied: llvm/trunk/test/Transforms/GVN/PRE/2009-06-17-InvalidPRE.ll (from r275741, llvm/trunk/test/Transforms/GVN/2009-06-17-InvalidPRE.ll)
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/GVN/PRE/2009-06-17-InvalidPRE.ll?p2=llvm/trunk/test/Transforms/GVN/PRE/2009-06-17-InvalidPRE.ll&p1=llvm/trunk/test/Transforms/GVN/2009-06-17-InvalidPRE.ll&r1=275741&r2=275742&rev=275742&view=diff
==============================================================================
    (empty)

Copied: llvm/trunk/test/Transforms/GVN/PRE/local-pre.ll (from r275741, llvm/trunk/test/Transforms/GVN/local-pre.ll)
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/GVN/PRE/local-pre.ll?p2=llvm/trunk/test/Transforms/GVN/PRE/local-pre.ll&p1=llvm/trunk/test/Transforms/GVN/local-pre.ll&r1=275741&r2=275742&rev=275742&view=diff
==============================================================================
    (empty)

Copied: llvm/trunk/test/Transforms/GVN/PRE/pre-basic-add.ll (from r275741, llvm/trunk/test/Transforms/GVN/pre-basic-add.ll)
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/GVN/PRE/pre-basic-add.ll?p2=llvm/trunk/test/Transforms/GVN/PRE/pre-basic-add.ll&p1=llvm/trunk/test/Transforms/GVN/pre-basic-add.ll&r1=275741&r2=275742&rev=275742&view=diff
==============================================================================
    (empty)

Copied: llvm/trunk/test/Transforms/GVN/PRE/pre-single-pred.ll (from r275741, llvm/trunk/test/Transforms/GVN/pre-single-pred.ll)
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/GVN/PRE/pre-single-pred.ll?p2=llvm/trunk/test/Transforms/GVN/PRE/pre-single-pred.ll&p1=llvm/trunk/test/Transforms/GVN/pre-single-pred.ll&r1=275741&r2=275742&rev=275742&view=diff
==============================================================================
    (empty)

Removed: llvm/trunk/test/Transforms/GVN/local-pre.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/GVN/local-pre.ll?rev=275741&view=auto
==============================================================================
--- llvm/trunk/test/Transforms/GVN/local-pre.ll (original)
+++ llvm/trunk/test/Transforms/GVN/local-pre.ll (removed)
@@ -1,22 +0,0 @@
-; RUN: opt < %s -gvn -enable-pre -S | FileCheck %s
-
-define i32 @main(i32 %p, i32 %q) {
-block1:
-    %cmp = icmp eq i32 %p, %q 
-	br i1 %cmp, label %block2, label %block3
-
-block2:
- %a = add i32 %p, 1
- br label %block4
-
-block3:
-  br label %block4
-; CHECK: %.pre = add i32 %p, 1
-; CHECK-NEXT: br label %block4
-
-block4:
-  %b = add i32 %p, 1
-  ret i32 %b
-; CHECK: %b.pre-phi = phi i32 [ %.pre, %block3 ], [ %a, %block2 ]
-; CHECK-NEXT: ret i32 %b.pre-phi
-}

Removed: llvm/trunk/test/Transforms/GVN/pre-basic-add.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/GVN/pre-basic-add.ll?rev=275741&view=auto
==============================================================================
--- llvm/trunk/test/Transforms/GVN/pre-basic-add.ll (original)
+++ llvm/trunk/test/Transforms/GVN/pre-basic-add.ll (removed)
@@ -1,32 +0,0 @@
-; RUN: opt < %s -gvn -enable-pre -S | FileCheck %s
-
- at H = common global i32 0		; <i32*> [#uses=2]
- at G = common global i32 0		; <i32*> [#uses=1]
-
-define i32 @test() nounwind {
-entry:
-	%0 = load i32, i32* @H, align 4		; <i32> [#uses=2]
-	%1 = call i32 (...) @foo() nounwind		; <i32> [#uses=1]
-	%2 = icmp ne i32 %1, 0		; <i1> [#uses=1]
-	br i1 %2, label %bb, label %bb1
-
-bb:		; preds = %entry
-	%3 = add i32 %0, 42		; <i32> [#uses=1]
-; CHECK: %.pre = add i32 %0, 42
-	store i32 %3, i32* @G, align 4
-	br label %bb1
-
-bb1:		; preds = %bb, %entry
-	%4 = add i32 %0, 42		; <i32> [#uses=1]
-	store i32 %4, i32* @H, align 4
-	br label %return
-
-; CHECK: %.pre-phi = phi i32 [ %.pre, %entry.bb1_crit_edge ], [ %3, %bb ]
-; CHECK-NEXT: store i32 %.pre-phi, i32* @H, align 4
-; CHECK-NEXT: ret i32 0
-
-return:		; preds = %bb1
-	ret i32 0
-}
-
-declare i32 @foo(...)

Removed: llvm/trunk/test/Transforms/GVN/pre-single-pred.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/GVN/pre-single-pred.ll?rev=275741&view=auto
==============================================================================
--- llvm/trunk/test/Transforms/GVN/pre-single-pred.ll (original)
+++ llvm/trunk/test/Transforms/GVN/pre-single-pred.ll (removed)
@@ -1,45 +0,0 @@
-; RUN: opt < %s -gvn -enable-load-pre -S | FileCheck %s
-; This testcase assumed we'll PRE the load into %for.cond, but we don't actually
-; verify that doing so is safe.  If there didn't _happen_ to be a load in
-; %for.end, we would actually be lengthening the execution on some paths, and
-; we were never actually checking that case.  Now we actually do perform some
-; conservative checking to make sure we don't make paths longer, but we don't
-; currently get this case, which we got lucky on previously.
-;
-; Now that that faulty assumption is corrected, test that we DON'T incorrectly
-; hoist the load.  Doing the right thing for the wrong reasons is still a bug.
-
- at p = external global i32
-define i32 @f(i32 %n) nounwind {
-entry:
-	br label %for.cond
-
-for.cond:		; preds = %for.inc, %entry
-	%i.0 = phi i32 [ 0, %entry ], [ %indvar.next, %for.inc ]		; <i32> [#uses=2]
-	%cmp = icmp slt i32 %i.0, %n		; <i1> [#uses=1]
-	br i1 %cmp, label %for.body, label %for.cond.for.end_crit_edge
-
-for.cond.for.end_crit_edge:		; preds = %for.cond
-	br label %for.end
-
-; CHECK: for.body:
-; CHECK-NEXT: %tmp3 = load i32, i32* @p
-for.body:		; preds = %for.cond
-	%tmp3 = load i32, i32* @p		; <i32> [#uses=1]
-	%dec = add i32 %tmp3, -1		; <i32> [#uses=2]
-	store i32 %dec, i32* @p
-	%cmp6 = icmp slt i32 %dec, 0		; <i1> [#uses=1]
-	br i1 %cmp6, label %for.body.for.end_crit_edge, label %for.inc
-
-; CHECK: for.body.for.end_crit_edge:
-for.body.for.end_crit_edge:		; preds = %for.body
-	br label %for.end
-
-for.inc:		; preds = %for.body
-	%indvar.next = add i32 %i.0, 1		; <i32> [#uses=1]
-	br label %for.cond
-
-for.end:		; preds = %for.body.for.end_crit_edge, %for.cond.for.end_crit_edge
-	%tmp9 = load i32, i32* @p		; <i32> [#uses=1]
-	ret i32 %tmp9
-}




More information about the llvm-commits mailing list