72 lines
1.9 KiB
LLVM
72 lines
1.9 KiB
LLVM
; 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
|
|
}
|