; RUN: rm -rf %t
; RUN: mkdir %t
; RUN: cd %t
; RUN: opt %s -passes=dot-dom -disable-output
; RUN: FileCheck %s -input-file=dom.test1.dot -check-prefix=TEST1
; RUN: FileCheck %s -input-file=dom.test2.dot -check-prefix=TEST2
define void @test1() {
; TEST1: digraph "Dominator tree for 'test1' function"
; TEST1-NEXT: label="Dominator tree for 'test1' function"
; TEST1: Node0x[[EntryID:.*]] [shape=record,label="{entry:
; TEST1-NEXT: Node0x[[EntryID]] -> Node0x[[A_ID:.*]];
; TEST1-NEXT: Node0x[[EntryID]] -> Node0x[[C_ID:.*]];
; TEST1-NEXT: Node0x[[EntryID]] -> Node0x[[B_ID:.*]];
; TEST1-NEXT: Node0x[[A_ID]] [shape=record,label="{a:
; TEST1-NEXT: Node0x[[C_ID]] [shape=record,label="{c:
; TEST1-NEXT: Node0x[[C_ID]] -> Node0x[[D_ID:.*]];
; TEST1-NEXT: Node0x[[C_ID]] -> Node0x[[E_ID:.*]];
; TEST1-NEXT: Node0x[[D_ID]] [shape=record,label="{d:
; TEST1-NEXT: Node0x[[E_ID]] [shape=record,label="{e:
; TEST1-NEXT: Node0x[[B_ID]] [shape=record,label="{b:
entry:
br i1 undef, label %a, label %b
a:
br label %c
b:
br label %c
c:
br i1 undef, label %d, label %e
d:
ret void
e:
ret void
}
define void @test2() {
; TEST2: digraph "Dominator tree for 'test2' function"
; TEST2-NEXT: label="Dominator tree for 'test2' function"
; TEST2: Node0x[[EntryID:.*]] [shape=record,label="{entry:
; TEST2-NEXT: Node0x[[EntryID]] -> Node0x[[A_ID:.*]];
; TEST2-NEXT: Node0x[[A_ID]] [shape=record,label="{a:
; TEST2-NEXT: Node0x[[A_ID]] -> Node0x[[B_ID:.*]];
; TEST2-NEXT: Node0x[[B_ID]] [shape=record,label="{b:
; TEST2-NEXT: Node0x[[B_ID]] -> Node0x[[C_ID:.*]];
; TEST2-NEXT: Node0x[[C_ID]] [shape=record,label="{c:
; TEST2-NEXT: Node0x[[C_ID]] -> Node0x[[D_ID:.*]];
; TEST2-NEXT: Node0x[[C_ID]] -> Node0x[[E_ID:.*]];
; TEST2-NEXT: Node0x[[D_ID]] [shape=record,label="{d:
; TEST2-NEXT: Node0x[[E_ID]] [shape=record,label="{e:
entry:
br label %a
a:
br label %b
b:
br i1 undef, label %a, label %c
c:
br i1 undef, label %d, label %e
d:
br i1 undef, label %a, label %e
e:
ret void
}