[DAGCombiner] Add target hook function to decide folding (mul (add x, c1), c2)
[llvm-project.git] / llvm / test / Transforms / Inline / deleted-scc.ll
blobca96d8657c3ec403d866980892bcef142c2f5fa6
1 ; RUN: opt -passes=inline < %s -S | FileCheck %s
3 ; CHECK-NOT: define
4 ; CHECK: define void @e()
5 ; CHECK-NOT: define
7 @b = external local_unnamed_addr global i32, align 4
9 define void @e() local_unnamed_addr {
10 entry:
11   call fastcc void @d()
12   ret void
15 define internal fastcc void @f() unnamed_addr {
16 entry:
17   call fastcc void @d()
18   ret void
21 define internal fastcc void @d() unnamed_addr {
22 entry:
23   br label %L
25 L:                                                ; preds = %cleanup9, %entry
26   %cleanup.dest.slot.0 = phi i32 [ undef, %entry ], [ %cleanup.dest.slot.3, %cleanup9 ]
27   store i32 0, i32* @b, align 4
28   %tobool.not = icmp eq i32 0, 0
29   br i1 %tobool.not, label %if.then, label %while.cond
31 while.cond:                                       ; preds = %cleanup9, %L
32   %cleanup.dest.slot.2 = phi i32 [ %cleanup.dest.slot.0, %L ], [ 0, %cleanup9 ]
33   %0 = load i32, i32* @b, align 4
34   %tobool3.not = icmp eq i32 %0, 0
35   br i1 %tobool3.not, label %cleanup9, label %while.body4
37 while.body4:                                      ; preds = %while.cond
38   call fastcc void @f()
39   br label %cleanup9
41 cleanup9:                                         ; preds = %while.cond, %while.body4
42   %cleanup.dest.slot.3 = phi i32 [ %cleanup.dest.slot.2, %while.body4 ], [ 0, %while.cond ]
43   switch i32 %cleanup.dest.slot.3, label %common.ret [
44     i32 0, label %while.cond
45     i32 2, label %L
46   ]
48 common.ret:                                       ; preds = %cleanup9, %if.then
49   ret void
51 if.then:                                          ; preds = %L
52   call void @e()
53   br label %common.ret