| ; REQUIRES: asserts | |
| ; RUN: opt -stats -passes=instcount -disable-output < %s 2>&1 | FileCheck %s | |
| ; CHECK-DAG: 10 instcount - Largest number of basic blocks in a single function | |
| ; CHECK-DAG: 18 instcount - Largest number of instructions in a single function | |
| ; CHECK-DAG: 6 instcount - Number of UncondBr insts | |
| ; CHECK-DAG: 2 instcount - Number of CondBr insts | |
| ; CHECK-DAG: 6 instcount - Number of Call insts | |
| ; CHECK-DAG: 2 instcount - Number of ICmp insts | |
| ; CHECK-DAG: 2 instcount - Number of Ret insts | |
| ; CHECK-DAG: 1 instcount - Number of Switch insts | |
| ; CHECK-DAG: 11 instcount - Number of basic blocks | |
| ; CHECK-DAG: 2 instcount - Number of non-external functions | |
| ; CHECK-DAG: 19 instcount - Number of instructions of all types | |
| define void @foo(i32 %i, i32 %j, i32 %n) { | |
| entry: | |
| %cmp = icmp slt i32 %i, %j | |
| br i1 %cmp, label %if.then, label %if.end | |
| if.then: | |
| call void @f() | |
| br label %if.end | |
| if.end: | |
| switch i32 %i, label %sw.default [ | |
| i32 1, label %sw.bb | |
| i32 2, label %sw.bb1 | |
| i32 3, label %sw.bb1 | |
| ] | |
| sw.bb: | |
| call void @g() | |
| br label %sw.epilog | |
| sw.bb1: | |
| call void @h() | |
| br label %sw.epilog | |
| sw.default: | |
| call void @k() | |
| br label %sw.epilog | |
| sw.epilog: | |
| %cmp2 = icmp sgt i32 %i, %n | |
| br i1 %cmp2, label %if.then3, label %if.else | |
| if.then3: | |
| call void @l() | |
| br label %if.end4 | |
| if.else: | |
| call void @m() | |
| br label %if.end4 | |
| if.end4: | |
| ret void | |
| } | |
| define void @woo() { | |
| ret void | |
| } | |
| declare void @f() | |
| declare void @g() | |
| declare void @h() | |
| declare void @k() | |
| declare void @l() | |
| declare void @m() |