Imported Upstream version 6.10.0.49

Former-commit-id: 1d6753294b2993e1fbf92de9366bb9544db4189b
This commit is contained in:
Xamarin Public Jenkins (auto-signing)
2020-01-16 16:38:04 +00:00
parent d94e79959b
commit 468663ddbb
48518 changed files with 2789335 additions and 61176 deletions

View File

@ -0,0 +1,30 @@
; RUN: opt < %s -postdomtree -analyze | FileCheck %s
; RUN: opt < %s -passes='print<postdomtree>' 2>&1 | FileCheck %s
@a = external global i32, align 4
define void @fn1() {
entry:
store i32 5, i32* @a, align 4
%call = call i32 (...) @foo()
%tobool = icmp ne i32 %call, 0
br i1 %tobool, label %if.then, label %if.end
if.then: ; preds = %entry
br label %loop
loop: ; preds = %loop, %if.then
br label %loop
if.end: ; preds = %entry
store i32 6, i32* @a, align 4
ret void
}
declare i32 @foo(...)
; CHECK: Inorder PostDominator Tree:
; CHECK-NEXT: [1] <<exit node>>
; CHECK: [2] %loop
; CHECK-NEXT: [3] %if.then
; CHECK: Roots: %if.end %loop

View File

@ -0,0 +1,34 @@
; RUN: opt < %s -postdomtree -analyze | FileCheck %s
; RUN: opt < %s -passes='print<postdomtree>' 2>&1 | FileCheck %s
@a = external global i32, align 4
define void @fn1() {
entry:
store i32 5, i32* @a, align 4
%call = call i32 (...) @foo()
%tobool = icmp ne i32 %call, 0
br i1 %tobool, label %if.then, label %if.end
if.then: ; preds = %entry
br label %loop
loop: ; preds = %loop, %if.then
%0 = load i32, i32* @a, align 4
call void @bar(i32 %0)
br label %loop
if.end: ; preds = %entry
store i32 6, i32* @a, align 4
ret void
}
declare i32 @foo(...)
declare void @bar(i32)
; CHECK: Inorder PostDominator Tree:
; CHECK-NEXT: [1] <<exit node>>
; CHECK: [2] %loop
; CHECK-NEXT: [3] %if.then
; CHECK: Roots: %if.end %loop

View File

@ -0,0 +1,34 @@
; RUN: opt < %s -postdomtree -analyze | FileCheck %s
; RUN: opt < %s -passes='print<postdomtree>' 2>&1 | FileCheck %s
@a = external global i32, align 4
define void @fn1() {
entry:
store i32 5, i32* @a, align 4
%call = call i32 (...) @foo()
%tobool = icmp ne i32 %call, 0
br i1 %tobool, label %if.then, label %if.end
if.then: ; preds = %entry, %loop
br label %loop
loop: ; preds = %loop, %if.then
%0 = load i32, i32* @a, align 4
call void @bar(i32 %0)
br i1 true, label %loop, label %if.then
if.end: ; preds = %entry
store i32 6, i32* @a, align 4
ret void
}
declare i32 @foo(...)
declare void @bar(i32)
; CHECK: Inorder PostDominator Tree:
; CHECK-NEXT: [1] <<exit node>>
; CHECK: [2] %loop
; CHECK-NEXT: [3] %if.then
; CHECK: Roots: %if.end %loop

View File

@ -0,0 +1,16 @@
; RUN: opt < %s -postdomtree -analyze | FileCheck %s
; RUN: opt < %s -passes='print<postdomtree>' 2>&1 | FileCheck %s
; PR932
define void @foo(i1 %x) {
; CHECK: entry
entry:
br i1 %x, label %bb1, label %bb0
bb0: ; preds = %entry, bb0
br label %bb0
bb1: ; preds = %entry
br label %bb2
bb2: ; preds = %bb1
ret void
}

View File

@ -0,0 +1,18 @@
; RUN: opt < %s -postdomtree -analyze | FileCheck %s
; RUN: opt < %s -passes='print<postdomtree>' 2>&1 | FileCheck %s
; Function Attrs: nounwind ssp uwtable
define void @foo() {
br label %1
; <label>:1 ; preds = %0, %1
br label %1
; No predecessors!
ret void
}
; CHECK: Inorder PostDominator Tree:
; CHECK-NEXT: [1] <<exit node>>
; CHECK-NEXT: [2] %2
; CHECK-NEXT: [2] %1
; CHECK-NEXT: [3] %0

View File

@ -0,0 +1,21 @@
; RUN: opt < %s -postdomtree -analyze | FileCheck %s
define internal void @f() {
entry:
br i1 undef, label %bb35, label %bb3.i
bb3.i:
br label %bb3.i
bb35.loopexit3:
br label %bb35
bb35:
ret void
}
;CHECK:Inorder PostDominator Tree:
;CHECK-NEXT: [1] <<exit node>>
;CHECK-NEXT: [2] %bb35
;CHECK-NEXT: [3] %bb35.loopexit3
;CHECK-NEXT: [2] %entry
;CHECK-NEXT: [2] %bb3.i

View File

@ -0,0 +1,25 @@
; RUN: opt < %s -postdomtree -analyze | FileCheck %s
define internal void @f() {
entry:
br i1 undef, label %a, label %bb3.i
a:
br i1 undef, label %bb35, label %bb3.i
bb3.i:
br label %bb3.i
bb35.loopexit3:
br label %bb35
bb35:
ret void
}
; CHECK: Inorder PostDominator Tree:
; CHECK-NEXT: [1] <<exit node>>
; CHECK-NEXT: [2] %bb35
; CHECK-NEXT: [3] %bb35.loopexit3
; CHECK-NEXT: [2] %a
; CHECK-NEXT: [2] %entry
; CHECK-NEXT: [2] %bb3.i

View File

@ -0,0 +1,197 @@
; RUN: opt < %s -postdomtree -analyze | FileCheck %s
define internal void @f() {
entry:
br i1 undef, label %bb35, label %bb3.i
bb3.i:
br label %bb3.i
bb:
br label %bb35
bb.i:
br label %bb35
_float32_unpack.exit:
br label %bb35
bb.i5:
br label %bb35
_float32_unpack.exit8:
br label %bb35
bb32.preheader:
br label %bb35
bb3:
br label %bb35
bb3.split.us:
br label %bb35
bb.i4.us:
br label %bb35
bb7.i.us:
br label %bb35
bb.i4.us.backedge:
br label %bb35
bb1.i.us:
br label %bb35
bb6.i.us:
br label %bb35
bb4.i.us:
br label %bb35
bb8.i.us:
br label %bb35
bb3.i.loopexit.us:
br label %bb35
bb.nph21:
br label %bb35
bb4:
br label %bb35
bb5:
br label %bb35
bb14.preheader:
br label %bb35
bb.nph18:
br label %bb35
bb8.us.preheader:
br label %bb35
bb8.preheader:
br label %bb35
bb8.us:
br label %bb35
bb8:
br label %bb35
bb15.loopexit:
br label %bb35
bb15.loopexit2:
br label %bb35
bb15:
br label %bb35
bb16:
br label %bb35
bb17.loopexit.split:
br label %bb35
bb.nph14:
br label %bb35
bb19:
br label %bb35
bb20:
br label %bb35
bb29.preheader:
br label %bb35
bb.nph:
br label %bb35
bb23.us.preheader:
br label %bb35
bb23.preheader:
br label %bb35
bb23.us:
br label %bb35
bb23:
br label %bb35
bb30.loopexit:
br label %bb35
bb30.loopexit1:
br label %bb35
bb30:
br label %bb35
bb31:
br label %bb35
bb35.loopexit:
br label %bb35
bb35.loopexit3:
br label %bb35
bb35:
ret void
}
; CHECK: Inorder PostDominator Tree:
; CHECK-NEXT: [1] <<exit node>>
; CHECK-NEXT: [2] %bb35
; CHECK-NEXT: [3] %bb
; CHECK-NEXT: [3] %bb.i
; CHECK-NEXT: [3] %_float32_unpack.exit
; CHECK-NEXT: [3] %bb.i5
; CHECK-NEXT: [3] %_float32_unpack.exit8
; CHECK-NEXT: [3] %bb32.preheader
; CHECK-NEXT: [3] %bb3
; CHECK-NEXT: [3] %bb3.split.us
; CHECK-NEXT: [3] %bb.i4.us
; CHECK-NEXT: [3] %bb7.i.us
; CHECK-NEXT: [3] %bb.i4.us.backedge
; CHECK-NEXT: [3] %bb1.i.us
; CHECK-NEXT: [3] %bb6.i.us
; CHECK-NEXT: [3] %bb4.i.us
; CHECK-NEXT: [3] %bb8.i.us
; CHECK-NEXT: [3] %bb3.i.loopexit.us
; CHECK-NEXT: [3] %bb.nph21
; CHECK-NEXT: [3] %bb4
; CHECK-NEXT: [3] %bb5
; CHECK-NEXT: [3] %bb14.preheader
; CHECK-NEXT: [3] %bb.nph18
; CHECK-NEXT: [3] %bb8.us.preheader
; CHECK-NEXT: [3] %bb8.preheader
; CHECK-NEXT: [3] %bb8.us
; CHECK-NEXT: [3] %bb8
; CHECK-NEXT: [3] %bb15.loopexit
; CHECK-NEXT: [3] %bb15.loopexit2
; CHECK-NEXT: [3] %bb15
; CHECK-NEXT: [3] %bb16
; CHECK-NEXT: [3] %bb17.loopexit.split
; CHECK-NEXT: [3] %bb.nph14
; CHECK-NEXT: [3] %bb19
; CHECK-NEXT: [3] %bb20
; CHECK-NEXT: [3] %bb29.preheader
; CHECK-NEXT: [3] %bb.nph
; CHECK-NEXT: [3] %bb23.us.preheader
; CHECK-NEXT: [3] %bb23.preheader
; CHECK-NEXT: [3] %bb23.us
; CHECK-NEXT: [3] %bb23
; CHECK-NEXT: [3] %bb30.loopexit
; CHECK-NEXT: [3] %bb30.loopexit1
; CHECK-NEXT: [3] %bb30
; CHECK-NEXT: [3] %bb31
; CHECK-NEXT: [3] %bb35.loopexit
; CHECK-NEXT: [3] %bb35.loopexit3
; CHECK-NEXT: [2] %entry
; CHECK-NEXT: [2] %bb3.i
; CHECK-NEXT: Roots: %bb35 %bb3.i

View File

@ -0,0 +1,32 @@
; RUN: opt < %s -postdomtree -analyze | FileCheck %s
define internal void @f() {
entry:
br i1 1, label %a, label %b
a:
br label %c
b:
br label %c
c:
br i1 undef, label %bb35, label %bb3.i
bb3.i:
br label %bb3.i
bb35.loopexit3:
br label %bb35
bb35:
ret void
}
; CHECK: Inorder PostDominator Tree:
; CHECK-NEXT: [1] <<exit node>>
; CHECK-NEXT: [2] %bb35
; CHECK-NEXT: [3] %bb35.loopexit3
; CHECK-NEXT: [2] %c
; CHECK-NEXT: [3] %a
; CHECK-NEXT: [3] %entry
; CHECK-NEXT: [3] %b
; CHECK-NEXT: [2] %bb3.i