Stop using tests with grep, or no output checks at all. Just use FileCheck and generate checks. Also remove unnecessary requires asserts.
46 lines
1.4 KiB
LLVM
46 lines
1.4 KiB
LLVM
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
|
; RUN: opt -S -passes=jump-threading,loop-rotate,instcombine,indvars,loop-unroll,simplifycfg -simplifycfg-require-and-preserve-domtree=1 -verify-dom-info -verify-loop-info < %s | FileCheck %s
|
|
|
|
; Jump threading should not prevent this loop from being unrolled.
|
|
; There should be 3 volatile stores and no branch
|
|
|
|
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"
|
|
@v1 = external global i32 ; <ptr> [#uses=2]
|
|
|
|
define i32 @unroll() nounwind {
|
|
; CHECK-LABEL: @unroll(
|
|
; CHECK-NEXT: entry:
|
|
; CHECK-NEXT: store volatile i32 1000, ptr @v1, align 4
|
|
; CHECK-NEXT: store volatile i32 1001, ptr @v1, align 4
|
|
; CHECK-NEXT: store volatile i32 1001, ptr @v1, align 4
|
|
; CHECK-NEXT: ret i32 0
|
|
;
|
|
entry:
|
|
br label %bb4
|
|
|
|
bb: ; preds = %bb4
|
|
%0 = icmp eq i32 %i.0, 0 ; <i1> [#uses=1]
|
|
br i1 %0, label %bb1, label %bb2
|
|
|
|
bb1: ; preds = %bb
|
|
store volatile i32 1000, ptr @v1, align 4
|
|
br label %bb3
|
|
|
|
bb2: ; preds = %bb
|
|
store volatile i32 1001, ptr @v1, align 4
|
|
br label %bb3
|
|
|
|
bb3: ; preds = %bb2, %bb1
|
|
%1 = add i32 %i.0, 1 ; <i32> [#uses=1]
|
|
br label %bb4
|
|
|
|
bb4: ; preds = %bb3, %entry
|
|
%i.0 = phi i32 [ 0, %entry ], [ %1, %bb3 ] ; <i32> [#uses=3]
|
|
%2 = icmp sgt i32 %i.0, 2 ; <i1> [#uses=1]
|
|
br i1 %2, label %bb5, label %bb
|
|
|
|
bb5: ; preds = %bb4
|
|
ret i32 0
|
|
}
|