diff options
Diffstat (limited to 'test/Transforms/LoopSimplify')
| -rw-r--r-- | test/Transforms/LoopSimplify/2004-04-13-LoopSimplifyUpdateDomFrontier.ll | 2 | ||||
| -rw-r--r-- | test/Transforms/LoopSimplify/basictest.ll | 1 | ||||
| -rw-r--r-- | test/Transforms/LoopSimplify/dbg-loc.ll | 7 | ||||
| -rw-r--r-- | test/Transforms/LoopSimplify/pr26682.ll | 32 | ||||
| -rw-r--r-- | test/Transforms/LoopSimplify/single-backedge.ll | 7 |
5 files changed, 46 insertions, 3 deletions
diff --git a/test/Transforms/LoopSimplify/2004-04-13-LoopSimplifyUpdateDomFrontier.ll b/test/Transforms/LoopSimplify/2004-04-13-LoopSimplifyUpdateDomFrontier.ll index 5818808ae0cd2..df7034baf6614 100644 --- a/test/Transforms/LoopSimplify/2004-04-13-LoopSimplifyUpdateDomFrontier.ll +++ b/test/Transforms/LoopSimplify/2004-04-13-LoopSimplifyUpdateDomFrontier.ll @@ -1,4 +1,4 @@ -; RUN: opt < %s -scalarrepl -loop-simplify -licm -disable-output -verify-dom-info -verify-loop-info +; RUN: opt < %s -sroa -loop-simplify -licm -disable-output -verify-dom-info -verify-loop-info define void @inflate() { entry: diff --git a/test/Transforms/LoopSimplify/basictest.ll b/test/Transforms/LoopSimplify/basictest.ll index 6b31848a94bd0..81b2c80fae008 100644 --- a/test/Transforms/LoopSimplify/basictest.ll +++ b/test/Transforms/LoopSimplify/basictest.ll @@ -1,4 +1,5 @@ ; RUN: opt < %s -loop-simplify +; RUN: opt < %s -passes=loop-simplify ; This function should get a preheader inserted before BB3, that is jumped ; to by BB1 & BB2 diff --git a/test/Transforms/LoopSimplify/dbg-loc.ll b/test/Transforms/LoopSimplify/dbg-loc.ll index b0e14bbcfd7f6..702a1ad16af6c 100644 --- a/test/Transforms/LoopSimplify/dbg-loc.ll +++ b/test/Transforms/LoopSimplify/dbg-loc.ll @@ -73,6 +73,7 @@ eh.resume: ; preds = %catch ; CHECK-DAG: [[LPAD_PREHEADER_LOC]] = !DILocation(line: 85, column: 1, scope: !{{[0-9]+}}) !llvm.module.flags = !{!0, !1, !2} +!llvm.dbg.cu = !{!14} !0 = !{i32 2, !"Dwarf Version", i32 4} !1 = !{i32 2, !"Debug Info Version", i32 3} !2 = !{i32 1, !"PIC Level", i32 2} @@ -80,7 +81,7 @@ eh.resume: ; preds = %catch !3 = !{} !4 = !DISubroutineType(types: !3) !5 = !DIFile(filename: "Vector.h", directory: "/tmp") -!6 = distinct !DISubprogram(name: "destruct", scope: !5, file: !5, line: 71, type: !4, isLocal: false, isDefinition: true, scopeLine: 72, flags: DIFlagPrototyped, isOptimized: false, variables: !3) +!6 = distinct !DISubprogram(name: "destruct", scope: !5, file: !5, line: 71, type: !4, isLocal: false, isDefinition: true, scopeLine: 72, flags: DIFlagPrototyped, isOptimized: false, unit: !14, variables: !3) !7 = !DILocation(line: 73, column: 38, scope: !6) !8 = !DILocation(line: 73, column: 13, scope: !6) !9 = !DILocation(line: 73, column: 27, scope: !6) @@ -88,3 +89,7 @@ eh.resume: ; preds = %catch !11 = !DILocation(line: 73, column: 46, scope: !6) !12 = !DILocation(line: 75, column: 9, scope: !6) !13 = !DILocation(line: 85, column: 1, scope: !6) +!14 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang", + file: !5, + isOptimized: true, flags: "-O2", + splitDebugFilename: "abc.debug", emissionKind: 2) diff --git a/test/Transforms/LoopSimplify/pr26682.ll b/test/Transforms/LoopSimplify/pr26682.ll new file mode 100644 index 0000000000000..092c0c3f0b049 --- /dev/null +++ b/test/Transforms/LoopSimplify/pr26682.ll @@ -0,0 +1,32 @@ +; RUN: opt < %s -lcssa -loop-simplify -indvars -S | FileCheck %s +target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128" +target triple = "x86_64-unknown-unknown" + +@a = external global i32, align 4 + +; Check that loop-simplify merges two loop exits, but preserves LCSSA form. +; CHECK-LABEL: @foo +; CHECK: for: +; CHECK: %or.cond = and i1 %cmp1, %cmp2 +; CHECK-NOT: for.cond: +; CHECK: for.end: +; CHECK: %a.lcssa = phi i32 [ %a, %for ] +define i32 @foo(i32 %x) { +entry: + br label %for + +for: + %iv = phi i32 [ 0, %entry ], [ %iv.next, %for.cond ] + %cmp1 = icmp eq i32 %x, 0 + %iv.next = add nuw nsw i32 %iv, 1 + %a = load i32, i32* @a + br i1 %cmp1, label %for.cond, label %for.end + +for.cond: + %cmp2 = icmp slt i32 %iv.next, 4 + br i1 %cmp2, label %for, label %for.end + +for.end: + %a.lcssa = phi i32 [ %a, %for ], [ %a, %for.cond ] + ret i32 %a.lcssa +} diff --git a/test/Transforms/LoopSimplify/single-backedge.ll b/test/Transforms/LoopSimplify/single-backedge.ll index 6f3db8fb14fca..16d29e4915b5e 100644 --- a/test/Transforms/LoopSimplify/single-backedge.ll +++ b/test/Transforms/LoopSimplify/single-backedge.ll @@ -24,16 +24,21 @@ BE2: ; preds = %n br label %Loop } !llvm.module.flags = !{!0, !1} +!llvm.dbg.cu = !{!12} !0 = !{i32 2, !"Dwarf Version", i32 4} !1 = !{i32 2, !"Debug Info Version", i32 3} !2 = !{} !3 = !DISubroutineType(types: !2) !4 = !DIFile(filename: "atomic.cpp", directory: "/tmp") -!5 = distinct !DISubprogram(name: "test", scope: !4, file: !4, line: 99, type: !3, isLocal: false, isDefinition: true, scopeLine: 100, flags: DIFlagPrototyped, isOptimized: false, variables: !2) +!5 = distinct !DISubprogram(name: "test", scope: !4, file: !4, line: 99, type: !3, isLocal: false, isDefinition: true, scopeLine: 100, flags: DIFlagPrototyped, isOptimized: false, unit: !12, variables: !2) !6 = !DILocation(line: 100, column: 1, scope: !5) !7 = !DILocation(line: 101, column: 1, scope: !5) !8 = !DILocation(line: 102, column: 1, scope: !5) !9 = !DILocation(line: 103, column: 1, scope: !5) !10 = !DILocation(line: 104, column: 1, scope: !5) !11 = !DILocation(line: 105, column: 1, scope: !5) +!12 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang", + file: !4, + isOptimized: true, flags: "-O2", + splitDebugFilename: "abc.debug", emissionKind: 2) |
