diff options
Diffstat (limited to 'llvm/test/Transforms/SimplifyCFG/basictest.ll')
-rw-r--r-- | llvm/test/Transforms/SimplifyCFG/basictest.ll | 133 |
1 files changed, 0 insertions, 133 deletions
diff --git a/llvm/test/Transforms/SimplifyCFG/basictest.ll b/llvm/test/Transforms/SimplifyCFG/basictest.ll deleted file mode 100644 index dedf698e1ce..00000000000 --- a/llvm/test/Transforms/SimplifyCFG/basictest.ll +++ /dev/null @@ -1,133 +0,0 @@ -; Test CFG simplify removal of branch instructions. -; -; RUN: opt < %s -simplifycfg -S | FileCheck %s -; RUN: opt < %s -passes=simplify-cfg -S | FileCheck %s - -define void @test1() { - br label %1 - ret void -; CHECK-LABEL: @test1( -; CHECK-NEXT: ret void -} - -define void @test2() { - ret void - ret void -; CHECK-LABEL: @test2( -; CHECK-NEXT: ret void -; CHECK-NEXT: } -} - -define void @test3(i1 %T) { - br i1 %T, label %1, label %1 - ret void -; CHECK-LABEL: @test3( -; CHECK-NEXT: ret void -} - -; Folding branch to a common destination. -; CHECK-LABEL: @test4_fold -; CHECK: %cmp1 = icmp eq i32 %a, %b -; CHECK: %cmp2 = icmp ugt i32 %a, 0 -; CHECK: %or.cond = and i1 %cmp1, %cmp2 -; CHECK: br i1 %or.cond, label %else, label %untaken -; CHECK-NOT: taken: -; CHECK: ret void -define void @test4_fold(i32 %a, i32 %b) { - %cmp1 = icmp eq i32 %a, %b - br i1 %cmp1, label %taken, label %untaken - -taken: - %cmp2 = icmp ugt i32 %a, 0 - br i1 %cmp2, label %else, label %untaken - -else: - call void @foo() - ret void - -untaken: - ret void -} - -; Prefer a simplification based on a dominating condition rather than folding a -; branch to a common destination. -; CHECK-LABEL: @test4 -; CHECK-NOT: br -; CHECK-NOT: br -; CHECK-NOT: call -; CHECK: ret void -define void @test4_no_fold(i32 %a, i32 %b) { - %cmp1 = icmp eq i32 %a, %b - br i1 %cmp1, label %taken, label %untaken - -taken: - %cmp2 = icmp ugt i32 %a, %b - br i1 %cmp2, label %else, label %untaken - -else: - call void @foo() - ret void - -untaken: - ret void -} - -declare void @foo() - -; PR5795 -define void @test5(i32 %A) { - switch i32 %A, label %return [ - i32 2, label %1 - i32 10, label %2 - ] - - ret void - - ret void - -return: ; preds = %entry - ret void -; CHECK-LABEL: @test5( -; CHECK-NEXT: ret void -} - - -; PR14893 -define i8 @test6f() { -; CHECK-LABEL: @test6f -; CHECK: alloca i8, align 1 -; CHECK-NEXT: call i8 @test6g -; CHECK-NEXT: icmp eq i8 %tmp, 0 -; CHECK-NEXT: load i8, i8* %r, align 1, !dbg !{{[0-9]+$}} - -bb0: - %r = alloca i8, align 1 - %tmp = call i8 @test6g(i8* %r) - %tmp1 = icmp eq i8 %tmp, 0 - br i1 %tmp1, label %bb2, label %bb1 -bb1: - %tmp3 = load i8, i8* %r, align 1, !range !2, !tbaa !10, !dbg !5 - %tmp4 = icmp eq i8 %tmp3, 1 - br i1 %tmp4, label %bb2, label %bb3 -bb2: - br label %bb3 -bb3: - %tmp6 = phi i8 [ 0, %bb2 ], [ 1, %bb1 ] - ret i8 %tmp6 -} -declare i8 @test6g(i8*) - -!llvm.dbg.cu = !{!3} -!llvm.module.flags = !{!8, !9} - -!0 = !{!10, !10, i64 0} -!1 = !{!"foo"} -!2 = !{i8 0, i8 2} -!3 = distinct !DICompileUnit(language: DW_LANG_C99, file: !7, producer: "clang", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, globals: !4) -!4 = !{} -!5 = !DILocation(line: 23, scope: !6) -!6 = distinct !DISubprogram(name: "foo", scope: !3, file: !7, line: 1, type: !DISubroutineType(types: !4), isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !3, retainedNodes: !4) -!7 = !DIFile(filename: "foo.c", directory: "/") -!8 = !{i32 2, !"Dwarf Version", i32 2} -!9 = !{i32 2, !"Debug Info Version", i32 3} -!10 = !{!"scalar type", !1} |