[llvm] d2e434a - [Attributor][FIX] Make check lines explicit

Johannes Doerfert via llvm-commits llvm-commits at lists.llvm.org
Sun Feb 9 23:33:49 PST 2020


Author: Johannes Doerfert
Date: 2020-02-10T01:31:20-06:00
New Revision: d2e434a46107b3f191c1dffddd52fc04a50b8460

URL: https://github.com/llvm/llvm-project/commit/d2e434a46107b3f191c1dffddd52fc04a50b8460
DIFF: https://github.com/llvm/llvm-project/commit/d2e434a46107b3f191c1dffddd52fc04a50b8460.diff

LOG: [Attributor][FIX] Make check lines explicit

There is a bug in `update_test_checks.py` that combines check lines it
should not. For now we unbreak the bots by making all possibilities
explicit.

Added: 
    

Modified: 
    llvm/test/Transforms/Attributor/range.ll

Removed: 
    


################################################################################
diff  --git a/llvm/test/Transforms/Attributor/range.ll b/llvm/test/Transforms/Attributor/range.ll
index 2d34bcdc448b..5712c947ccf9 100644
--- a/llvm/test/Transforms/Attributor/range.ll
+++ b/llvm/test/Transforms/Attributor/range.ll
@@ -1,8 +1,8 @@
-; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --function-signature --scrub-attributes
-; RUN: opt -attributor -attributor-disable=false -S < %s | FileCheck %s --check-prefixes=CHECK,OLD_PM,MODULE,MODULE_OLD_PM
-; RUN: opt -passes=attributor -attributor-disable=false -S < %s | FileCheck %s --check-prefixes=CHECK,NEW_PM,MODULE,MODULE_NEW_PM
-; RUN: opt -attributor-cgscc -attributor-disable=false -S < %s | FileCheck %s --check-prefixes=CHECK,OLD_PM,CGSCC,CGSCC_OLD_PM
-; RUN: opt -passes=attributor-cgscc -attributor-disable=false -S < %s | FileCheck %s --check-prefixes=CHECK,NEW_PM,CGSCC,CGSCC_NEW_PM
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
+; RUN: opt -attributor -attributor-disable=false -S < %s | FileCheck %s --check-prefixes=CHECK,OLD_PM,MODULE_OLD_PM
+; RUN: opt -passes=attributor -attributor-disable=false -S < %s | FileCheck %s --check-prefixes=CHECK,NEW_PM,MODULE_NEW_PM
+; RUN: opt -attributor-cgscc -attributor-disable=false -S < %s | FileCheck %s --check-prefixes=CHECK,CGSCC_OLD_PM
+; RUN: opt -passes=attributor-cgscc -attributor-disable=false -S < %s | FileCheck %s --check-prefixes=CHECK,CGSCC_NEW_PM
 
 ; FIXME: CGSCC is not looking at callees and calleers even though it could be allowed.
 
@@ -18,16 +18,34 @@ define i32 @test0(i32* %p) {
 
 define i32 @test0-range-check(i32* %p) {
 ;
+; OLD_PM-LABEL: define {{[^@]+}}@test0-range-check
+; OLD_PM-SAME: (i32* nocapture nofree readonly [[P:%.*]])
+; OLD_PM-NEXT:    [[A:%.*]] = tail call i32 @test0(i32* nocapture nofree readonly [[P]]) #0, !range !0
+; OLD_PM-NEXT:    ret i32 [[A]]
+;
+; NEW_PM-LABEL: define {{[^@]+}}@test0-range-check
+; NEW_PM-SAME: (i32* nocapture nofree readonly [[P:%.*]])
+; NEW_PM-NEXT:    [[A:%.*]] = tail call i32 @test0(i32* nocapture nofree readonly [[P]]) #0, !range !0
+; NEW_PM-NEXT:    ret i32 [[A]]
+;
+; CGSCC_OLD_PM-LABEL: define {{[^@]+}}@test0-range-check
+; CGSCC_OLD_PM-SAME: (i32* nocapture nofree nonnull readonly dereferenceable(4) [[P:%.*]])
+; CGSCC_OLD_PM-NEXT:    [[A:%.*]] = tail call i32 @test0(i32* nocapture nofree nonnull readonly dereferenceable(4) [[P]])
+; CGSCC_OLD_PM-NEXT:    ret i32 [[A]]
+;
+; CGSCC_NEW_PM-LABEL: define {{[^@]+}}@test0-range-check
+; CGSCC_NEW_PM-SAME: (i32* nocapture nofree nonnull readonly dereferenceable(4) [[P:%.*]])
+; CGSCC_NEW_PM-NEXT:    [[A:%.*]] = tail call i32 @test0(i32* nocapture nofree nonnull readonly dereferenceable(4) [[P]])
+; CGSCC_NEW_PM-NEXT:    ret i32 [[A]]
+;
 ; MODULE-LABEL: define {{[^@]+}}@test0-range-check
 ; MODULE-SAME: (i32* nocapture nofree readonly [[P:%.*]])
 ; MODULE-NEXT:    [[A:%.*]] = tail call i32 @test0(i32* nocapture nofree readonly [[P]]) #0, !range !0
 ; MODULE-NEXT:    ret i32 [[A]]
-;
 ; CGSCC-LABEL: define {{[^@]+}}@test0-range-check
 ; CGSCC-SAME: (i32* nocapture nofree nonnull readonly dereferenceable(4) [[P:%.*]])
 ; CGSCC-NEXT:    [[A:%.*]] = tail call i32 @test0(i32* nocapture nofree nonnull readonly dereferenceable(4) [[P]])
 ; CGSCC-NEXT:    ret i32 [[A]]
-;
   %a = tail call i32 @test0(i32* %p)
   ret i32 %a
 }
@@ -45,6 +63,234 @@ define void @use3(i1, i1, i1) {
 
 ; TEST0 icmp test
 define void @test0-icmp-check(i32* %p){
+; OLD_PM-LABEL: define {{[^@]+}}@test0-icmp-check
+; OLD_PM-SAME: (i32* nocapture nofree readonly [[P:%.*]])
+; OLD_PM-NEXT:    [[RET:%.*]] = tail call i32 @test0(i32* nocapture nofree readonly [[P]]) #0, !range !0
+; OLD_PM-NEXT:    [[CMP_EQ_2:%.*]] = icmp eq i32 [[RET]], 9
+; OLD_PM-NEXT:    [[CMP_EQ_3:%.*]] = icmp eq i32 [[RET]], 8
+; OLD_PM-NEXT:    [[CMP_EQ_4:%.*]] = icmp eq i32 [[RET]], 1
+; OLD_PM-NEXT:    [[CMP_EQ_5:%.*]] = icmp eq i32 [[RET]], 0
+; OLD_PM-NEXT:    tail call void @use3(i1 false, i1 [[CMP_EQ_2]], i1 [[CMP_EQ_3]])
+; OLD_PM-NEXT:    tail call void @use3(i1 [[CMP_EQ_4]], i1 [[CMP_EQ_5]], i1 false)
+; OLD_PM-NEXT:    [[CMP_NE_2:%.*]] = icmp ne i32 [[RET]], 9
+; OLD_PM-NEXT:    [[CMP_NE_3:%.*]] = icmp ne i32 [[RET]], 8
+; OLD_PM-NEXT:    [[CMP_NE_4:%.*]] = icmp ne i32 [[RET]], 1
+; OLD_PM-NEXT:    [[CMP_NE_5:%.*]] = icmp ne i32 [[RET]], 0
+; OLD_PM-NEXT:    tail call void @use3(i1 true, i1 [[CMP_NE_2]], i1 [[CMP_NE_3]])
+; OLD_PM-NEXT:    tail call void @use3(i1 [[CMP_NE_4]], i1 [[CMP_NE_5]], i1 true)
+; OLD_PM-NEXT:    [[CMP_UGT_3:%.*]] = icmp ugt i32 [[RET]], 8
+; OLD_PM-NEXT:    [[CMP_UGT_4:%.*]] = icmp ugt i32 [[RET]], 1
+; OLD_PM-NEXT:    [[CMP_UGT_5:%.*]] = icmp ugt i32 [[RET]], 0
+; OLD_PM-NEXT:    tail call void @use3(i1 false, i1 false, i1 [[CMP_UGT_3]])
+; OLD_PM-NEXT:    tail call void @use3(i1 [[CMP_UGT_4]], i1 [[CMP_UGT_5]], i1 false)
+; OLD_PM-NEXT:    [[CMP_UGE_2:%.*]] = icmp uge i32 [[RET]], 9
+; OLD_PM-NEXT:    [[CMP_UGE_3:%.*]] = icmp uge i32 [[RET]], 8
+; OLD_PM-NEXT:    [[CMP_UGE_4:%.*]] = icmp uge i32 [[RET]], 1
+; OLD_PM-NEXT:    tail call void @use3(i1 false, i1 [[CMP_UGE_2]], i1 [[CMP_UGE_3]])
+; OLD_PM-NEXT:    tail call void @use3(i1 [[CMP_UGE_4]], i1 true, i1 false)
+; OLD_PM-NEXT:    [[CMP_SGT_3:%.*]] = icmp sgt i32 [[RET]], 8
+; OLD_PM-NEXT:    [[CMP_SGT_4:%.*]] = icmp sgt i32 [[RET]], 1
+; OLD_PM-NEXT:    [[CMP_SGT_5:%.*]] = icmp sgt i32 [[RET]], 0
+; OLD_PM-NEXT:    tail call void @use3(i1 false, i1 false, i1 [[CMP_SGT_3]])
+; OLD_PM-NEXT:    tail call void @use3(i1 [[CMP_SGT_4]], i1 [[CMP_SGT_5]], i1 true)
+; OLD_PM-NEXT:    [[CMP_GTE_2:%.*]] = icmp sge i32 [[RET]], 9
+; OLD_PM-NEXT:    [[CMP_GTE_3:%.*]] = icmp sge i32 [[RET]], 8
+; OLD_PM-NEXT:    [[CMP_GTE_4:%.*]] = icmp sge i32 [[RET]], 1
+; OLD_PM-NEXT:    tail call void @use3(i1 false, i1 [[CMP_GTE_2]], i1 [[CMP_GTE_3]])
+; OLD_PM-NEXT:    tail call void @use3(i1 [[CMP_GTE_4]], i1 true, i1 true)
+; OLD_PM-NEXT:    [[CMP_SLT_2:%.*]] = icmp slt i32 [[RET]], 9
+; OLD_PM-NEXT:    [[CMP_SLT_3:%.*]] = icmp slt i32 [[RET]], 8
+; OLD_PM-NEXT:    [[CMP_SLT_4:%.*]] = icmp slt i32 [[RET]], 1
+; OLD_PM-NEXT:    tail call void @use3(i1 true, i1 [[CMP_SLT_2]], i1 [[CMP_SLT_3]])
+; OLD_PM-NEXT:    tail call void @use3(i1 [[CMP_SLT_4]], i1 false, i1 false)
+; OLD_PM-NEXT:    [[CMP_LTE_3:%.*]] = icmp sle i32 [[RET]], 8
+; OLD_PM-NEXT:    [[CMP_LTE_4:%.*]] = icmp sle i32 [[RET]], 1
+; OLD_PM-NEXT:    [[CMP_LTE_5:%.*]] = icmp sle i32 [[RET]], 0
+; OLD_PM-NEXT:    tail call void @use3(i1 true, i1 true, i1 [[CMP_LTE_3]])
+; OLD_PM-NEXT:    tail call void @use3(i1 [[CMP_LTE_4]], i1 [[CMP_LTE_5]], i1 false)
+; OLD_PM-NEXT:    ret void
+;
+; NEW_PM-LABEL: define {{[^@]+}}@test0-icmp-check
+; NEW_PM-SAME: (i32* nocapture nofree readonly [[P:%.*]])
+; NEW_PM-NEXT:    [[RET:%.*]] = tail call i32 @test0(i32* nocapture nofree readonly [[P]]) #0, !range !0
+; NEW_PM-NEXT:    [[CMP_EQ_2:%.*]] = icmp eq i32 [[RET]], 9
+; NEW_PM-NEXT:    [[CMP_EQ_3:%.*]] = icmp eq i32 [[RET]], 8
+; NEW_PM-NEXT:    [[CMP_EQ_4:%.*]] = icmp eq i32 [[RET]], 1
+; NEW_PM-NEXT:    [[CMP_EQ_5:%.*]] = icmp eq i32 [[RET]], 0
+; NEW_PM-NEXT:    tail call void @use3(i1 false, i1 [[CMP_EQ_2]], i1 [[CMP_EQ_3]])
+; NEW_PM-NEXT:    tail call void @use3(i1 [[CMP_EQ_4]], i1 [[CMP_EQ_5]], i1 false)
+; NEW_PM-NEXT:    [[CMP_NE_2:%.*]] = icmp ne i32 [[RET]], 9
+; NEW_PM-NEXT:    [[CMP_NE_3:%.*]] = icmp ne i32 [[RET]], 8
+; NEW_PM-NEXT:    [[CMP_NE_4:%.*]] = icmp ne i32 [[RET]], 1
+; NEW_PM-NEXT:    [[CMP_NE_5:%.*]] = icmp ne i32 [[RET]], 0
+; NEW_PM-NEXT:    tail call void @use3(i1 true, i1 [[CMP_NE_2]], i1 [[CMP_NE_3]])
+; NEW_PM-NEXT:    tail call void @use3(i1 [[CMP_NE_4]], i1 [[CMP_NE_5]], i1 true)
+; NEW_PM-NEXT:    [[CMP_UGT_3:%.*]] = icmp ugt i32 [[RET]], 8
+; NEW_PM-NEXT:    [[CMP_UGT_4:%.*]] = icmp ugt i32 [[RET]], 1
+; NEW_PM-NEXT:    [[CMP_UGT_5:%.*]] = icmp ugt i32 [[RET]], 0
+; NEW_PM-NEXT:    tail call void @use3(i1 false, i1 false, i1 [[CMP_UGT_3]])
+; NEW_PM-NEXT:    tail call void @use3(i1 [[CMP_UGT_4]], i1 [[CMP_UGT_5]], i1 false)
+; NEW_PM-NEXT:    [[CMP_UGE_2:%.*]] = icmp uge i32 [[RET]], 9
+; NEW_PM-NEXT:    [[CMP_UGE_3:%.*]] = icmp uge i32 [[RET]], 8
+; NEW_PM-NEXT:    [[CMP_UGE_4:%.*]] = icmp uge i32 [[RET]], 1
+; NEW_PM-NEXT:    tail call void @use3(i1 false, i1 [[CMP_UGE_2]], i1 [[CMP_UGE_3]])
+; NEW_PM-NEXT:    tail call void @use3(i1 [[CMP_UGE_4]], i1 true, i1 false)
+; NEW_PM-NEXT:    [[CMP_SGT_3:%.*]] = icmp sgt i32 [[RET]], 8
+; NEW_PM-NEXT:    [[CMP_SGT_4:%.*]] = icmp sgt i32 [[RET]], 1
+; NEW_PM-NEXT:    [[CMP_SGT_5:%.*]] = icmp sgt i32 [[RET]], 0
+; NEW_PM-NEXT:    tail call void @use3(i1 false, i1 false, i1 [[CMP_SGT_3]])
+; NEW_PM-NEXT:    tail call void @use3(i1 [[CMP_SGT_4]], i1 [[CMP_SGT_5]], i1 true)
+; NEW_PM-NEXT:    [[CMP_GTE_2:%.*]] = icmp sge i32 [[RET]], 9
+; NEW_PM-NEXT:    [[CMP_GTE_3:%.*]] = icmp sge i32 [[RET]], 8
+; NEW_PM-NEXT:    [[CMP_GTE_4:%.*]] = icmp sge i32 [[RET]], 1
+; NEW_PM-NEXT:    tail call void @use3(i1 false, i1 [[CMP_GTE_2]], i1 [[CMP_GTE_3]])
+; NEW_PM-NEXT:    tail call void @use3(i1 [[CMP_GTE_4]], i1 true, i1 true)
+; NEW_PM-NEXT:    [[CMP_SLT_2:%.*]] = icmp slt i32 [[RET]], 9
+; NEW_PM-NEXT:    [[CMP_SLT_3:%.*]] = icmp slt i32 [[RET]], 8
+; NEW_PM-NEXT:    [[CMP_SLT_4:%.*]] = icmp slt i32 [[RET]], 1
+; NEW_PM-NEXT:    tail call void @use3(i1 true, i1 [[CMP_SLT_2]], i1 [[CMP_SLT_3]])
+; NEW_PM-NEXT:    tail call void @use3(i1 [[CMP_SLT_4]], i1 false, i1 false)
+; NEW_PM-NEXT:    [[CMP_LTE_3:%.*]] = icmp sle i32 [[RET]], 8
+; NEW_PM-NEXT:    [[CMP_LTE_4:%.*]] = icmp sle i32 [[RET]], 1
+; NEW_PM-NEXT:    [[CMP_LTE_5:%.*]] = icmp sle i32 [[RET]], 0
+; NEW_PM-NEXT:    tail call void @use3(i1 true, i1 true, i1 [[CMP_LTE_3]])
+; NEW_PM-NEXT:    tail call void @use3(i1 [[CMP_LTE_4]], i1 [[CMP_LTE_5]], i1 false)
+; NEW_PM-NEXT:    ret void
+;
+; CGSCC_OLD_PM-LABEL: define {{[^@]+}}@test0-icmp-check
+; CGSCC_OLD_PM-SAME: (i32* nocapture nofree nonnull readonly dereferenceable(4) [[P:%.*]])
+; CGSCC_OLD_PM-NEXT:    [[RET:%.*]] = tail call i32 @test0(i32* nocapture nofree nonnull readonly dereferenceable(4) [[P]])
+; CGSCC_OLD_PM-NEXT:    [[CMP_EQ_1:%.*]] = icmp eq i32 [[RET]], 10
+; CGSCC_OLD_PM-NEXT:    [[CMP_EQ_2:%.*]] = icmp eq i32 [[RET]], 9
+; CGSCC_OLD_PM-NEXT:    [[CMP_EQ_3:%.*]] = icmp eq i32 [[RET]], 8
+; CGSCC_OLD_PM-NEXT:    [[CMP_EQ_4:%.*]] = icmp eq i32 [[RET]], 1
+; CGSCC_OLD_PM-NEXT:    [[CMP_EQ_5:%.*]] = icmp eq i32 [[RET]], 0
+; CGSCC_OLD_PM-NEXT:    [[CMP_EQ_6:%.*]] = icmp eq i32 [[RET]], -1
+; CGSCC_OLD_PM-NEXT:    tail call void @use3(i1 [[CMP_EQ_1]], i1 [[CMP_EQ_2]], i1 [[CMP_EQ_3]])
+; CGSCC_OLD_PM-NEXT:    tail call void @use3(i1 [[CMP_EQ_4]], i1 [[CMP_EQ_5]], i1 [[CMP_EQ_6]])
+; CGSCC_OLD_PM-NEXT:    [[CMP_NE_1:%.*]] = icmp ne i32 [[RET]], 10
+; CGSCC_OLD_PM-NEXT:    [[CMP_NE_2:%.*]] = icmp ne i32 [[RET]], 9
+; CGSCC_OLD_PM-NEXT:    [[CMP_NE_3:%.*]] = icmp ne i32 [[RET]], 8
+; CGSCC_OLD_PM-NEXT:    [[CMP_NE_4:%.*]] = icmp ne i32 [[RET]], 1
+; CGSCC_OLD_PM-NEXT:    [[CMP_NE_5:%.*]] = icmp ne i32 [[RET]], 0
+; CGSCC_OLD_PM-NEXT:    [[CMP_NE_6:%.*]] = icmp ne i32 [[RET]], -1
+; CGSCC_OLD_PM-NEXT:    tail call void @use3(i1 [[CMP_NE_1]], i1 [[CMP_NE_2]], i1 [[CMP_NE_3]])
+; CGSCC_OLD_PM-NEXT:    tail call void @use3(i1 [[CMP_NE_4]], i1 [[CMP_NE_5]], i1 [[CMP_NE_6]])
+; CGSCC_OLD_PM-NEXT:    [[CMP_UGT_1:%.*]] = icmp ugt i32 [[RET]], 10
+; CGSCC_OLD_PM-NEXT:    [[CMP_UGT_2:%.*]] = icmp ugt i32 [[RET]], 9
+; CGSCC_OLD_PM-NEXT:    [[CMP_UGT_3:%.*]] = icmp ugt i32 [[RET]], 8
+; CGSCC_OLD_PM-NEXT:    [[CMP_UGT_4:%.*]] = icmp ugt i32 [[RET]], 1
+; CGSCC_OLD_PM-NEXT:    [[CMP_UGT_5:%.*]] = icmp ugt i32 [[RET]], 0
+; CGSCC_OLD_PM-NEXT:    tail call void @use3(i1 [[CMP_UGT_1]], i1 [[CMP_UGT_2]], i1 [[CMP_UGT_3]])
+; CGSCC_OLD_PM-NEXT:    tail call void @use3(i1 [[CMP_UGT_4]], i1 [[CMP_UGT_5]], i1 false)
+; CGSCC_OLD_PM-NEXT:    [[CMP_UGE_1:%.*]] = icmp uge i32 [[RET]], 10
+; CGSCC_OLD_PM-NEXT:    [[CMP_UGE_2:%.*]] = icmp uge i32 [[RET]], 9
+; CGSCC_OLD_PM-NEXT:    [[CMP_UGE_3:%.*]] = icmp uge i32 [[RET]], 8
+; CGSCC_OLD_PM-NEXT:    [[CMP_UGE_4:%.*]] = icmp uge i32 [[RET]], 1
+; CGSCC_OLD_PM-NEXT:    [[CMP_UGE_6:%.*]] = icmp uge i32 [[RET]], -1
+; CGSCC_OLD_PM-NEXT:    tail call void @use3(i1 [[CMP_UGE_1]], i1 [[CMP_UGE_2]], i1 [[CMP_UGE_3]])
+; CGSCC_OLD_PM-NEXT:    tail call void @use3(i1 [[CMP_UGE_4]], i1 true, i1 [[CMP_UGE_6]])
+; CGSCC_OLD_PM-NEXT:    [[CMP_SGT_1:%.*]] = icmp sgt i32 [[RET]], 10
+; CGSCC_OLD_PM-NEXT:    [[CMP_SGT_2:%.*]] = icmp sgt i32 [[RET]], 9
+; CGSCC_OLD_PM-NEXT:    [[CMP_SGT_3:%.*]] = icmp sgt i32 [[RET]], 8
+; CGSCC_OLD_PM-NEXT:    [[CMP_SGT_4:%.*]] = icmp sgt i32 [[RET]], 1
+; CGSCC_OLD_PM-NEXT:    [[CMP_SGT_5:%.*]] = icmp sgt i32 [[RET]], 0
+; CGSCC_OLD_PM-NEXT:    [[CMP_SGT_6:%.*]] = icmp sgt i32 [[RET]], -1
+; CGSCC_OLD_PM-NEXT:    tail call void @use3(i1 [[CMP_SGT_1]], i1 [[CMP_SGT_2]], i1 [[CMP_SGT_3]])
+; CGSCC_OLD_PM-NEXT:    tail call void @use3(i1 [[CMP_SGT_4]], i1 [[CMP_SGT_5]], i1 [[CMP_SGT_6]])
+; CGSCC_OLD_PM-NEXT:    [[CMP_GTE_1:%.*]] = icmp sge i32 [[RET]], 10
+; CGSCC_OLD_PM-NEXT:    [[CMP_GTE_2:%.*]] = icmp sge i32 [[RET]], 9
+; CGSCC_OLD_PM-NEXT:    [[CMP_GTE_3:%.*]] = icmp sge i32 [[RET]], 8
+; CGSCC_OLD_PM-NEXT:    [[CMP_GTE_4:%.*]] = icmp sge i32 [[RET]], 1
+; CGSCC_OLD_PM-NEXT:    [[CMP_GTE_5:%.*]] = icmp sge i32 [[RET]], 0
+; CGSCC_OLD_PM-NEXT:    [[CMP_GTE_6:%.*]] = icmp sge i32 [[RET]], -1
+; CGSCC_OLD_PM-NEXT:    tail call void @use3(i1 [[CMP_GTE_1]], i1 [[CMP_GTE_2]], i1 [[CMP_GTE_3]])
+; CGSCC_OLD_PM-NEXT:    tail call void @use3(i1 [[CMP_GTE_4]], i1 [[CMP_GTE_5]], i1 [[CMP_GTE_6]])
+; CGSCC_OLD_PM-NEXT:    [[CMP_SLT_1:%.*]] = icmp slt i32 [[RET]], 10
+; CGSCC_OLD_PM-NEXT:    [[CMP_SLT_2:%.*]] = icmp slt i32 [[RET]], 9
+; CGSCC_OLD_PM-NEXT:    [[CMP_SLT_3:%.*]] = icmp slt i32 [[RET]], 8
+; CGSCC_OLD_PM-NEXT:    [[CMP_SLT_4:%.*]] = icmp slt i32 [[RET]], 1
+; CGSCC_OLD_PM-NEXT:    [[CMP_SLT_5:%.*]] = icmp slt i32 [[RET]], 0
+; CGSCC_OLD_PM-NEXT:    [[CMP_SLT_6:%.*]] = icmp slt i32 [[RET]], -1
+; CGSCC_OLD_PM-NEXT:    tail call void @use3(i1 [[CMP_SLT_1]], i1 [[CMP_SLT_2]], i1 [[CMP_SLT_3]])
+; CGSCC_OLD_PM-NEXT:    tail call void @use3(i1 [[CMP_SLT_4]], i1 [[CMP_SLT_5]], i1 [[CMP_SLT_6]])
+; CGSCC_OLD_PM-NEXT:    [[CMP_LTE_1:%.*]] = icmp sle i32 [[RET]], 10
+; CGSCC_OLD_PM-NEXT:    [[CMP_LTE_2:%.*]] = icmp sle i32 [[RET]], 9
+; CGSCC_OLD_PM-NEXT:    [[CMP_LTE_3:%.*]] = icmp sle i32 [[RET]], 8
+; CGSCC_OLD_PM-NEXT:    [[CMP_LTE_4:%.*]] = icmp sle i32 [[RET]], 1
+; CGSCC_OLD_PM-NEXT:    [[CMP_LTE_5:%.*]] = icmp sle i32 [[RET]], 0
+; CGSCC_OLD_PM-NEXT:    [[CMP_LTE_6:%.*]] = icmp sle i32 [[RET]], -1
+; CGSCC_OLD_PM-NEXT:    tail call void @use3(i1 [[CMP_LTE_1]], i1 [[CMP_LTE_2]], i1 [[CMP_LTE_3]])
+; CGSCC_OLD_PM-NEXT:    tail call void @use3(i1 [[CMP_LTE_4]], i1 [[CMP_LTE_5]], i1 [[CMP_LTE_6]])
+; CGSCC_OLD_PM-NEXT:    ret void
+;
+; CGSCC_NEW_PM-LABEL: define {{[^@]+}}@test0-icmp-check
+; CGSCC_NEW_PM-SAME: (i32* nocapture nofree nonnull readonly dereferenceable(4) [[P:%.*]])
+; CGSCC_NEW_PM-NEXT:    [[RET:%.*]] = tail call i32 @test0(i32* nocapture nofree nonnull readonly dereferenceable(4) [[P]])
+; CGSCC_NEW_PM-NEXT:    [[CMP_EQ_1:%.*]] = icmp eq i32 [[RET]], 10
+; CGSCC_NEW_PM-NEXT:    [[CMP_EQ_2:%.*]] = icmp eq i32 [[RET]], 9
+; CGSCC_NEW_PM-NEXT:    [[CMP_EQ_3:%.*]] = icmp eq i32 [[RET]], 8
+; CGSCC_NEW_PM-NEXT:    [[CMP_EQ_4:%.*]] = icmp eq i32 [[RET]], 1
+; CGSCC_NEW_PM-NEXT:    [[CMP_EQ_5:%.*]] = icmp eq i32 [[RET]], 0
+; CGSCC_NEW_PM-NEXT:    [[CMP_EQ_6:%.*]] = icmp eq i32 [[RET]], -1
+; CGSCC_NEW_PM-NEXT:    tail call void @use3(i1 [[CMP_EQ_1]], i1 [[CMP_EQ_2]], i1 [[CMP_EQ_3]])
+; CGSCC_NEW_PM-NEXT:    tail call void @use3(i1 [[CMP_EQ_4]], i1 [[CMP_EQ_5]], i1 [[CMP_EQ_6]])
+; CGSCC_NEW_PM-NEXT:    [[CMP_NE_1:%.*]] = icmp ne i32 [[RET]], 10
+; CGSCC_NEW_PM-NEXT:    [[CMP_NE_2:%.*]] = icmp ne i32 [[RET]], 9
+; CGSCC_NEW_PM-NEXT:    [[CMP_NE_3:%.*]] = icmp ne i32 [[RET]], 8
+; CGSCC_NEW_PM-NEXT:    [[CMP_NE_4:%.*]] = icmp ne i32 [[RET]], 1
+; CGSCC_NEW_PM-NEXT:    [[CMP_NE_5:%.*]] = icmp ne i32 [[RET]], 0
+; CGSCC_NEW_PM-NEXT:    [[CMP_NE_6:%.*]] = icmp ne i32 [[RET]], -1
+; CGSCC_NEW_PM-NEXT:    tail call void @use3(i1 [[CMP_NE_1]], i1 [[CMP_NE_2]], i1 [[CMP_NE_3]])
+; CGSCC_NEW_PM-NEXT:    tail call void @use3(i1 [[CMP_NE_4]], i1 [[CMP_NE_5]], i1 [[CMP_NE_6]])
+; CGSCC_NEW_PM-NEXT:    [[CMP_UGT_1:%.*]] = icmp ugt i32 [[RET]], 10
+; CGSCC_NEW_PM-NEXT:    [[CMP_UGT_2:%.*]] = icmp ugt i32 [[RET]], 9
+; CGSCC_NEW_PM-NEXT:    [[CMP_UGT_3:%.*]] = icmp ugt i32 [[RET]], 8
+; CGSCC_NEW_PM-NEXT:    [[CMP_UGT_4:%.*]] = icmp ugt i32 [[RET]], 1
+; CGSCC_NEW_PM-NEXT:    [[CMP_UGT_5:%.*]] = icmp ugt i32 [[RET]], 0
+; CGSCC_NEW_PM-NEXT:    tail call void @use3(i1 [[CMP_UGT_1]], i1 [[CMP_UGT_2]], i1 [[CMP_UGT_3]])
+; CGSCC_NEW_PM-NEXT:    tail call void @use3(i1 [[CMP_UGT_4]], i1 [[CMP_UGT_5]], i1 false)
+; CGSCC_NEW_PM-NEXT:    [[CMP_UGE_1:%.*]] = icmp uge i32 [[RET]], 10
+; CGSCC_NEW_PM-NEXT:    [[CMP_UGE_2:%.*]] = icmp uge i32 [[RET]], 9
+; CGSCC_NEW_PM-NEXT:    [[CMP_UGE_3:%.*]] = icmp uge i32 [[RET]], 8
+; CGSCC_NEW_PM-NEXT:    [[CMP_UGE_4:%.*]] = icmp uge i32 [[RET]], 1
+; CGSCC_NEW_PM-NEXT:    [[CMP_UGE_6:%.*]] = icmp uge i32 [[RET]], -1
+; CGSCC_NEW_PM-NEXT:    tail call void @use3(i1 [[CMP_UGE_1]], i1 [[CMP_UGE_2]], i1 [[CMP_UGE_3]])
+; CGSCC_NEW_PM-NEXT:    tail call void @use3(i1 [[CMP_UGE_4]], i1 true, i1 [[CMP_UGE_6]])
+; CGSCC_NEW_PM-NEXT:    [[CMP_SGT_1:%.*]] = icmp sgt i32 [[RET]], 10
+; CGSCC_NEW_PM-NEXT:    [[CMP_SGT_2:%.*]] = icmp sgt i32 [[RET]], 9
+; CGSCC_NEW_PM-NEXT:    [[CMP_SGT_3:%.*]] = icmp sgt i32 [[RET]], 8
+; CGSCC_NEW_PM-NEXT:    [[CMP_SGT_4:%.*]] = icmp sgt i32 [[RET]], 1
+; CGSCC_NEW_PM-NEXT:    [[CMP_SGT_5:%.*]] = icmp sgt i32 [[RET]], 0
+; CGSCC_NEW_PM-NEXT:    [[CMP_SGT_6:%.*]] = icmp sgt i32 [[RET]], -1
+; CGSCC_NEW_PM-NEXT:    tail call void @use3(i1 [[CMP_SGT_1]], i1 [[CMP_SGT_2]], i1 [[CMP_SGT_3]])
+; CGSCC_NEW_PM-NEXT:    tail call void @use3(i1 [[CMP_SGT_4]], i1 [[CMP_SGT_5]], i1 [[CMP_SGT_6]])
+; CGSCC_NEW_PM-NEXT:    [[CMP_GTE_1:%.*]] = icmp sge i32 [[RET]], 10
+; CGSCC_NEW_PM-NEXT:    [[CMP_GTE_2:%.*]] = icmp sge i32 [[RET]], 9
+; CGSCC_NEW_PM-NEXT:    [[CMP_GTE_3:%.*]] = icmp sge i32 [[RET]], 8
+; CGSCC_NEW_PM-NEXT:    [[CMP_GTE_4:%.*]] = icmp sge i32 [[RET]], 1
+; CGSCC_NEW_PM-NEXT:    [[CMP_GTE_5:%.*]] = icmp sge i32 [[RET]], 0
+; CGSCC_NEW_PM-NEXT:    [[CMP_GTE_6:%.*]] = icmp sge i32 [[RET]], -1
+; CGSCC_NEW_PM-NEXT:    tail call void @use3(i1 [[CMP_GTE_1]], i1 [[CMP_GTE_2]], i1 [[CMP_GTE_3]])
+; CGSCC_NEW_PM-NEXT:    tail call void @use3(i1 [[CMP_GTE_4]], i1 [[CMP_GTE_5]], i1 [[CMP_GTE_6]])
+; CGSCC_NEW_PM-NEXT:    [[CMP_SLT_1:%.*]] = icmp slt i32 [[RET]], 10
+; CGSCC_NEW_PM-NEXT:    [[CMP_SLT_2:%.*]] = icmp slt i32 [[RET]], 9
+; CGSCC_NEW_PM-NEXT:    [[CMP_SLT_3:%.*]] = icmp slt i32 [[RET]], 8
+; CGSCC_NEW_PM-NEXT:    [[CMP_SLT_4:%.*]] = icmp slt i32 [[RET]], 1
+; CGSCC_NEW_PM-NEXT:    [[CMP_SLT_5:%.*]] = icmp slt i32 [[RET]], 0
+; CGSCC_NEW_PM-NEXT:    [[CMP_SLT_6:%.*]] = icmp slt i32 [[RET]], -1
+; CGSCC_NEW_PM-NEXT:    tail call void @use3(i1 [[CMP_SLT_1]], i1 [[CMP_SLT_2]], i1 [[CMP_SLT_3]])
+; CGSCC_NEW_PM-NEXT:    tail call void @use3(i1 [[CMP_SLT_4]], i1 [[CMP_SLT_5]], i1 [[CMP_SLT_6]])
+; CGSCC_NEW_PM-NEXT:    [[CMP_LTE_1:%.*]] = icmp sle i32 [[RET]], 10
+; CGSCC_NEW_PM-NEXT:    [[CMP_LTE_2:%.*]] = icmp sle i32 [[RET]], 9
+; CGSCC_NEW_PM-NEXT:    [[CMP_LTE_3:%.*]] = icmp sle i32 [[RET]], 8
+; CGSCC_NEW_PM-NEXT:    [[CMP_LTE_4:%.*]] = icmp sle i32 [[RET]], 1
+; CGSCC_NEW_PM-NEXT:    [[CMP_LTE_5:%.*]] = icmp sle i32 [[RET]], 0
+; CGSCC_NEW_PM-NEXT:    [[CMP_LTE_6:%.*]] = icmp sle i32 [[RET]], -1
+; CGSCC_NEW_PM-NEXT:    tail call void @use3(i1 [[CMP_LTE_1]], i1 [[CMP_LTE_2]], i1 [[CMP_LTE_3]])
+; CGSCC_NEW_PM-NEXT:    tail call void @use3(i1 [[CMP_LTE_4]], i1 [[CMP_LTE_5]], i1 [[CMP_LTE_6]])
+; CGSCC_NEW_PM-NEXT:    ret void
+;
 ; MODULE-LABEL: define {{[^@]+}}@test0-icmp-check
 ; MODULE-SAME: (i32* nocapture nofree readonly [[P:%.*]])
 ; MODULE-NEXT:    [[RET:%.*]] = tail call i32 @test0(i32* nocapture nofree readonly [[P]]) #0, !range !0
@@ -91,7 +337,6 @@ define void @test0-icmp-check(i32* %p){
 ; MODULE-NEXT:    tail call void @use3(i1 true, i1 true, i1 [[CMP_LTE_3]])
 ; MODULE-NEXT:    tail call void @use3(i1 [[CMP_LTE_4]], i1 [[CMP_LTE_5]], i1 false)
 ; MODULE-NEXT:    ret void
-;
 ; CGSCC-LABEL: define {{[^@]+}}@test0-icmp-check
 ; CGSCC-SAME: (i32* nocapture nofree nonnull readonly dereferenceable(4) [[P:%.*]])
 ; CGSCC-NEXT:    [[RET:%.*]] = tail call i32 @test0(i32* nocapture nofree nonnull readonly dereferenceable(4) [[P]])
@@ -158,7 +403,6 @@ define void @test0-icmp-check(i32* %p){
 ; CGSCC-NEXT:    tail call void @use3(i1 [[CMP_LTE_1]], i1 [[CMP_LTE_2]], i1 [[CMP_LTE_3]])
 ; CGSCC-NEXT:    tail call void @use3(i1 [[CMP_LTE_4]], i1 [[CMP_LTE_5]], i1 [[CMP_LTE_6]])
 ; CGSCC-NEXT:    ret void
-;
   ; ret = [0, 10)
   %ret = tail call i32 @test0(i32 *%p)
 
@@ -259,18 +503,40 @@ define i32 @test1(i32* %p) {
 }
 
 define i1 @test1-check(i32* %p) {
+; OLD_PM-LABEL: define {{[^@]+}}@test1-check
+; OLD_PM-SAME: (i32* nocapture nofree readonly [[P:%.*]])
+; OLD_PM-NEXT:    [[RES:%.*]] = tail call i32 @test1(i32* nocapture nofree readonly [[P]]) #0, !range !2
+; OLD_PM-NEXT:    [[CMP:%.*]] = icmp eq i32 [[RES]], 500
+; OLD_PM-NEXT:    ret i1 [[CMP]]
+;
+; NEW_PM-LABEL: define {{[^@]+}}@test1-check
+; NEW_PM-SAME: (i32* nocapture nofree readonly [[P:%.*]])
+; NEW_PM-NEXT:    [[RES:%.*]] = tail call i32 @test1(i32* nocapture nofree readonly [[P]]) #0, !range !2
+; NEW_PM-NEXT:    [[CMP:%.*]] = icmp eq i32 [[RES]], 500
+; NEW_PM-NEXT:    ret i1 [[CMP]]
+;
+; CGSCC_OLD_PM-LABEL: define {{[^@]+}}@test1-check
+; CGSCC_OLD_PM-SAME: (i32* nocapture nofree nonnull readonly dereferenceable(4) [[P:%.*]])
+; CGSCC_OLD_PM-NEXT:    [[RES:%.*]] = tail call i32 @test1(i32* nocapture nofree nonnull readonly dereferenceable(4) [[P]])
+; CGSCC_OLD_PM-NEXT:    [[CMP:%.*]] = icmp eq i32 [[RES]], 500
+; CGSCC_OLD_PM-NEXT:    ret i1 [[CMP]]
+;
+; CGSCC_NEW_PM-LABEL: define {{[^@]+}}@test1-check
+; CGSCC_NEW_PM-SAME: (i32* nocapture nofree nonnull readonly dereferenceable(4) [[P:%.*]])
+; CGSCC_NEW_PM-NEXT:    [[RES:%.*]] = tail call i32 @test1(i32* nocapture nofree nonnull readonly dereferenceable(4) [[P]])
+; CGSCC_NEW_PM-NEXT:    [[CMP:%.*]] = icmp eq i32 [[RES]], 500
+; CGSCC_NEW_PM-NEXT:    ret i1 [[CMP]]
+;
 ; MODULE-LABEL: define {{[^@]+}}@test1-check
 ; MODULE-SAME: (i32* nocapture nofree readonly [[P:%.*]])
 ; MODULE-NEXT:    [[RES:%.*]] = tail call i32 @test1(i32* nocapture nofree readonly [[P]]) #0, !range !2
 ; MODULE-NEXT:    [[CMP:%.*]] = icmp eq i32 [[RES]], 500
 ; MODULE-NEXT:    ret i1 [[CMP]]
-;
 ; CGSCC-LABEL: define {{[^@]+}}@test1-check
 ; CGSCC-SAME: (i32* nocapture nofree nonnull readonly dereferenceable(4) [[P:%.*]])
 ; CGSCC-NEXT:    [[RES:%.*]] = tail call i32 @test1(i32* nocapture nofree nonnull readonly dereferenceable(4) [[P]])
 ; CGSCC-NEXT:    [[CMP:%.*]] = icmp eq i32 [[RES]], 500
 ; CGSCC-NEXT:    ret i1 [[CMP]]
-;
   %res = tail call i32 @test1(i32* %p)
   %cmp = icmp eq i32 %res, 500
   ret i1 %cmp
@@ -305,6 +571,56 @@ entry:
 }
 
 define i32 @test2_check(i32* %p) {
+; OLD_PM-LABEL: define {{[^@]+}}@test2_check
+; OLD_PM-SAME: (i32* nocapture nofree readonly align 4 [[P:%.*]])
+; OLD_PM-NEXT:  entry:
+; OLD_PM-NEXT:    br label [[IF_THEN:%.*]]
+; OLD_PM:       if.then:
+; OLD_PM-NEXT:    br label [[RETURN:%.*]]
+; OLD_PM:       if.end:
+; OLD_PM-NEXT:    unreachable
+; OLD_PM:       return:
+; OLD_PM-NEXT:    ret i32 2
+;
+; NEW_PM-LABEL: define {{[^@]+}}@test2_check
+; NEW_PM-SAME: (i32* nocapture nofree readonly align 4 [[P:%.*]])
+; NEW_PM-NEXT:  entry:
+; NEW_PM-NEXT:    br label [[IF_THEN:%.*]]
+; NEW_PM:       if.then:
+; NEW_PM-NEXT:    br label [[RETURN:%.*]]
+; NEW_PM:       if.end:
+; NEW_PM-NEXT:    unreachable
+; NEW_PM:       return:
+; NEW_PM-NEXT:    ret i32 2
+;
+; CGSCC_OLD_PM-LABEL: define {{[^@]+}}@test2_check
+; CGSCC_OLD_PM-SAME: (i32* nocapture nofree nonnull readonly align 4 dereferenceable(4) [[P:%.*]])
+; CGSCC_OLD_PM-NEXT:  entry:
+; CGSCC_OLD_PM-NEXT:    [[CALL:%.*]] = tail call i32 @test2(i32* nocapture nofree nonnull readonly align 4 dereferenceable(4) [[P]])
+; CGSCC_OLD_PM-NEXT:    [[CMP:%.*]] = icmp slt i32 [[CALL]], 5
+; CGSCC_OLD_PM-NEXT:    br i1 [[CMP]], label [[IF_THEN:%.*]], label [[IF_END:%.*]]
+; CGSCC_OLD_PM:       if.then:
+; CGSCC_OLD_PM-NEXT:    br label [[RETURN:%.*]]
+; CGSCC_OLD_PM:       if.end:
+; CGSCC_OLD_PM-NEXT:    br label [[RETURN]]
+; CGSCC_OLD_PM:       return:
+; CGSCC_OLD_PM-NEXT:    [[RETVAL_0:%.*]] = phi i32 [ 2, [[IF_THEN]] ], [ 3, [[IF_END]] ]
+; CGSCC_OLD_PM-NEXT:    ret i32 [[RETVAL_0]]
+;
+; CGSCC_NEW_PM-LABEL: define {{[^@]+}}@test2_check
+; CGSCC_NEW_PM-SAME: (i32* nocapture nofree nonnull readonly align 4 dereferenceable(4) [[P:%.*]])
+; CGSCC_NEW_PM-NEXT:  entry:
+; CGSCC_NEW_PM-NEXT:    [[CALL:%.*]] = tail call i32 @test2(i32* nocapture nofree nonnull readonly align 4 dereferenceable(4) [[P]])
+; CGSCC_NEW_PM-NEXT:    [[CMP:%.*]] = icmp slt i32 [[CALL]], 5
+; CGSCC_NEW_PM-NEXT:    br i1 [[CMP]], label [[IF_THEN:%.*]], label [[IF_END:%.*]]
+; CGSCC_NEW_PM:       if.then:
+; CGSCC_NEW_PM-NEXT:    br label [[RETURN:%.*]]
+; CGSCC_NEW_PM:       if.end:
+; CGSCC_NEW_PM-NEXT:    br label [[RETURN]]
+; CGSCC_NEW_PM:       return:
+; CGSCC_NEW_PM-NEXT:    [[RETVAL_0:%.*]] = phi i32 [ 2, [[IF_THEN]] ], [ 3, [[IF_END]] ]
+; CGSCC_NEW_PM-NEXT:    ret i32 [[RETVAL_0]]
+;
 ; MODULE-LABEL: define {{[^@]+}}@test2_check
 ; MODULE-SAME: (i32* nocapture nofree readonly align 4 [[P:%.*]])
 ; MODULE-NEXT:  entry:
@@ -315,7 +631,6 @@ define i32 @test2_check(i32* %p) {
 ; MODULE-NEXT:    unreachable
 ; MODULE:       return:
 ; MODULE-NEXT:    ret i32 2
-;
 ; CGSCC-LABEL: define {{[^@]+}}@test2_check
 ; CGSCC-SAME: (i32* nocapture nofree nonnull readonly align 4 dereferenceable(4) [[P:%.*]])
 ; CGSCC-NEXT:  entry:
@@ -329,7 +644,6 @@ define i32 @test2_check(i32* %p) {
 ; CGSCC:       return:
 ; CGSCC-NEXT:    [[RETVAL_0:%.*]] = phi i32 [ 2, [[IF_THEN]] ], [ 3, [[IF_END]] ]
 ; CGSCC-NEXT:    ret i32 [[RETVAL_0]]
-;
 entry:
   %call = tail call i32 @test2(i32* %p)
   %cmp = icmp slt i32 %call, 5
@@ -374,38 +688,38 @@ return:                                           ; preds = %if.end, %if.then
 declare dso_local void @unkown()
 
 define internal i32 @r1(i32) local_unnamed_addr {
-; MODULE_OLD_PM-LABEL: define {{[^@]+}}@r1() local_unnamed_addr
-; MODULE_OLD_PM-NEXT:    br label [[TMP4:%.*]]
-; MODULE_OLD_PM:       1:
-; MODULE_OLD_PM-NEXT:    [[TMP2:%.*]] = icmp sgt i32 [[TMP7:%.*]], 10000
-; MODULE_OLD_PM-NEXT:    br i1 [[TMP2]], label [[TMP3:%.*]], label [[F:%.*]]
-; MODULE_OLD_PM:       3:
-; MODULE_OLD_PM-NEXT:    ret i32 20
-; MODULE_OLD_PM:       f:
-; MODULE_OLD_PM-NEXT:    ret i32 10
-; MODULE_OLD_PM:       4:
-; MODULE_OLD_PM-NEXT:    [[TMP5:%.*]] = phi i32 [ 0, [[TMP0:%.*]] ], [ [[TMP8:%.*]], [[TMP4]] ]
-; MODULE_OLD_PM-NEXT:    [[TMP6:%.*]] = phi i32 [ 0, [[TMP0]] ], [ [[TMP7]], [[TMP4]] ]
-; MODULE_OLD_PM-NEXT:    [[TMP7]] = add nuw nsw i32 [[TMP5]], [[TMP6]]
-; MODULE_OLD_PM-NEXT:    [[TMP8]] = add nuw nsw i32 [[TMP5]], 1
-; MODULE_OLD_PM-NEXT:    [[TMP9:%.*]] = icmp eq i32 [[TMP8]], 100
-; MODULE_OLD_PM-NEXT:    br i1 [[TMP9]], label [[TMP1:%.*]], label [[TMP4]]
-;
-; MODULE_NEW_PM-LABEL: define {{[^@]+}}@r1() local_unnamed_addr
-; MODULE_NEW_PM-NEXT:    br label [[TMP3:%.*]]
-; MODULE_NEW_PM:       1:
-; MODULE_NEW_PM-NEXT:    br label [[F:%.*]]
-; MODULE_NEW_PM:       2:
-; MODULE_NEW_PM-NEXT:    unreachable
-; MODULE_NEW_PM:       f:
-; MODULE_NEW_PM-NEXT:    ret i32 10
-; MODULE_NEW_PM:       3:
-; MODULE_NEW_PM-NEXT:    [[TMP4:%.*]] = phi i32 [ 0, [[TMP0:%.*]] ], [ [[TMP7:%.*]], [[TMP3]] ]
-; MODULE_NEW_PM-NEXT:    [[TMP5:%.*]] = phi i32 [ 0, [[TMP0]] ], [ [[TMP6:%.*]], [[TMP3]] ]
-; MODULE_NEW_PM-NEXT:    [[TMP6]] = add nuw nsw i32 [[TMP4]], [[TMP5]]
-; MODULE_NEW_PM-NEXT:    [[TMP7]] = add nuw nsw i32 [[TMP4]], 1
-; MODULE_NEW_PM-NEXT:    [[TMP8:%.*]] = icmp eq i32 [[TMP7]], 100
-; MODULE_NEW_PM-NEXT:    br i1 [[TMP8]], label [[TMP1:%.*]], label [[TMP3]]
+; OLD_PM-LABEL: define {{[^@]+}}@r1() local_unnamed_addr
+; OLD_PM-NEXT:    br label [[TMP4:%.*]]
+; OLD_PM:       1:
+; OLD_PM-NEXT:    [[TMP2:%.*]] = icmp sgt i32 [[TMP7:%.*]], 10000
+; OLD_PM-NEXT:    br i1 [[TMP2]], label [[TMP3:%.*]], label [[F:%.*]]
+; OLD_PM:       3:
+; OLD_PM-NEXT:    ret i32 20
+; OLD_PM:       f:
+; OLD_PM-NEXT:    ret i32 10
+; OLD_PM:       4:
+; OLD_PM-NEXT:    [[TMP5:%.*]] = phi i32 [ 0, [[TMP0:%.*]] ], [ [[TMP8:%.*]], [[TMP4]] ]
+; OLD_PM-NEXT:    [[TMP6:%.*]] = phi i32 [ 0, [[TMP0]] ], [ [[TMP7]], [[TMP4]] ]
+; OLD_PM-NEXT:    [[TMP7]] = add nuw nsw i32 [[TMP5]], [[TMP6]]
+; OLD_PM-NEXT:    [[TMP8]] = add nuw nsw i32 [[TMP5]], 1
+; OLD_PM-NEXT:    [[TMP9:%.*]] = icmp eq i32 [[TMP8]], 100
+; OLD_PM-NEXT:    br i1 [[TMP9]], label [[TMP1:%.*]], label [[TMP4]]
+;
+; NEW_PM-LABEL: define {{[^@]+}}@r1() local_unnamed_addr
+; NEW_PM-NEXT:    br label [[TMP3:%.*]]
+; NEW_PM:       1:
+; NEW_PM-NEXT:    br label [[F:%.*]]
+; NEW_PM:       2:
+; NEW_PM-NEXT:    unreachable
+; NEW_PM:       f:
+; NEW_PM-NEXT:    ret i32 10
+; NEW_PM:       3:
+; NEW_PM-NEXT:    [[TMP4:%.*]] = phi i32 [ 0, [[TMP0:%.*]] ], [ [[TMP7:%.*]], [[TMP3]] ]
+; NEW_PM-NEXT:    [[TMP5:%.*]] = phi i32 [ 0, [[TMP0]] ], [ [[TMP6:%.*]], [[TMP3]] ]
+; NEW_PM-NEXT:    [[TMP6]] = add nuw nsw i32 [[TMP4]], [[TMP5]]
+; NEW_PM-NEXT:    [[TMP7]] = add nuw nsw i32 [[TMP4]], 1
+; NEW_PM-NEXT:    [[TMP8:%.*]] = icmp eq i32 [[TMP7]], 100
+; NEW_PM-NEXT:    br i1 [[TMP8]], label [[TMP1:%.*]], label [[TMP3]]
 ;
 ; CGSCC_OLD_PM-LABEL: define {{[^@]+}}@r1
 ; CGSCC_OLD_PM-SAME: (i32 [[TMP0:%.*]]) local_unnamed_addr
@@ -461,25 +775,25 @@ f:
 }
 
 define void @f1(i32){
-; MODULE_OLD_PM-LABEL: define {{[^@]+}}@f1
-; MODULE_OLD_PM-SAME: (i32 [[TMP0:%.*]])
-; MODULE_OLD_PM-NEXT:    [[TMP2:%.*]] = tail call i32 @r1()
-; MODULE_OLD_PM-NEXT:    [[TMP3:%.*]] = icmp sgt i32 [[TMP2]], 15
-; MODULE_OLD_PM-NEXT:    br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP5:%.*]]
-; MODULE_OLD_PM:       4:
-; MODULE_OLD_PM-NEXT:    tail call void @unkown()
-; MODULE_OLD_PM-NEXT:    br label [[TMP5]]
-; MODULE_OLD_PM:       5:
-; MODULE_OLD_PM-NEXT:    ret void
-;
-; MODULE_NEW_PM-LABEL: define {{[^@]+}}@f1
-; MODULE_NEW_PM-SAME: (i32 [[TMP0:%.*]])
-; MODULE_NEW_PM-NEXT:    [[TMP2:%.*]] = tail call i32 @r1()
-; MODULE_NEW_PM-NEXT:    br label [[TMP4:%.*]]
-; MODULE_NEW_PM:       3:
-; MODULE_NEW_PM-NEXT:    unreachable
-; MODULE_NEW_PM:       4:
-; MODULE_NEW_PM-NEXT:    ret void
+; OLD_PM-LABEL: define {{[^@]+}}@f1
+; OLD_PM-SAME: (i32 [[TMP0:%.*]])
+; OLD_PM-NEXT:    [[TMP2:%.*]] = tail call i32 @r1()
+; OLD_PM-NEXT:    [[TMP3:%.*]] = icmp sgt i32 [[TMP2]], 15
+; OLD_PM-NEXT:    br i1 [[TMP3]], label [[TMP4:%.*]], label [[TMP5:%.*]]
+; OLD_PM:       4:
+; OLD_PM-NEXT:    tail call void @unkown()
+; OLD_PM-NEXT:    br label [[TMP5]]
+; OLD_PM:       5:
+; OLD_PM-NEXT:    ret void
+;
+; NEW_PM-LABEL: define {{[^@]+}}@f1
+; NEW_PM-SAME: (i32 [[TMP0:%.*]])
+; NEW_PM-NEXT:    [[TMP2:%.*]] = tail call i32 @r1()
+; NEW_PM-NEXT:    br label [[TMP4:%.*]]
+; NEW_PM:       3:
+; NEW_PM-NEXT:    unreachable
+; NEW_PM:       4:
+; NEW_PM-NEXT:    ret void
 ;
 ; CGSCC_OLD_PM-LABEL: define {{[^@]+}}@f1
 ; CGSCC_OLD_PM-SAME: (i32 [[TMP0:%.*]])
@@ -610,39 +924,59 @@ define dso_local i32 @test4-g2(i32 %u) {
 ; OLD_PM-NEXT:    [[CALL:%.*]] = tail call i32 @test4-f2(i32 [[U]])
 ; OLD_PM-NEXT:    ret i32 [[CALL]]
 ;
-; MODULE_NEW_PM-LABEL: define {{[^@]+}}@test4-g2
-; MODULE_NEW_PM-SAME: (i32 [[U:%.*]])
-; MODULE_NEW_PM-NEXT:  entry:
-; MODULE_NEW_PM-NEXT:    [[CALL:%.*]] = tail call i32 @test4-f2(i32 [[U]]) #2, !range !3
-; MODULE_NEW_PM-NEXT:    ret i32 [[CALL]]
+; NEW_PM-LABEL: define {{[^@]+}}@test4-g2
+; NEW_PM-SAME: (i32 [[U:%.*]])
+; NEW_PM-NEXT:  entry:
+; NEW_PM-NEXT:    [[CALL:%.*]] = tail call i32 @test4-f2(i32 [[U]]) #2, !range !3
+; NEW_PM-NEXT:    ret i32 [[CALL]]
+;
+; CGSCC_OLD_PM-LABEL: define {{[^@]+}}@test4-g2
+; CGSCC_OLD_PM-SAME: (i32 [[U:%.*]])
+; CGSCC_OLD_PM-NEXT:  entry:
+; CGSCC_OLD_PM-NEXT:    [[CALL:%.*]] = tail call i32 @test4-f2(i32 [[U]])
+; CGSCC_OLD_PM-NEXT:    ret i32 [[CALL]]
+;
+; CGSCC_NEW_PM-LABEL: define {{[^@]+}}@test4-g2
+; CGSCC_NEW_PM-SAME: (i32 [[U:%.*]])
+; CGSCC_NEW_PM-NEXT:  entry:
+; CGSCC_NEW_PM-NEXT:    [[CALL:%.*]] = tail call i32 @test4-f2(i32 [[U]])
+; CGSCC_NEW_PM-NEXT:    ret i32 [[CALL]]
 ;
 ; CGSCC-LABEL: define {{[^@]+}}@test4-g2
 ; CGSCC-SAME: (i32 [[U:%.*]])
 ; CGSCC-NEXT:  entry:
 ; CGSCC-NEXT:    [[CALL:%.*]] = tail call i32 @test4-f2(i32 [[U]])
 ; CGSCC-NEXT:    ret i32 [[CALL]]
-;
 entry:
   %call = tail call i32 @test4-f2(i32 %u)
   ret i32 %call
 }
 
 define dso_local i32 @test-5() {
-; MODULE_OLD_PM-LABEL: define {{[^@]+}}@test-5()
-; MODULE_OLD_PM-NEXT:  entry:
-; MODULE_OLD_PM-NEXT:    [[CALL:%.*]] = call i32 @rec(i32 0), !range !3
-; MODULE_OLD_PM-NEXT:    ret i32 [[CALL]]
+; OLD_PM-LABEL: define {{[^@]+}}@test-5()
+; OLD_PM-NEXT:  entry:
+; OLD_PM-NEXT:    [[CALL:%.*]] = call i32 @rec(i32 0), !range !3
+; OLD_PM-NEXT:    ret i32 [[CALL]]
+;
+; NEW_PM-LABEL: define {{[^@]+}}@test-5()
+; NEW_PM-NEXT:  entry:
+; NEW_PM-NEXT:    [[CALL:%.*]] = call i32 @rec(i32 0), !range !4
+; NEW_PM-NEXT:    ret i32 [[CALL]]
 ;
-; MODULE_NEW_PM-LABEL: define {{[^@]+}}@test-5()
-; MODULE_NEW_PM-NEXT:  entry:
-; MODULE_NEW_PM-NEXT:    [[CALL:%.*]] = call i32 @rec(i32 0), !range !4
-; MODULE_NEW_PM-NEXT:    ret i32 [[CALL]]
+; CGSCC_OLD_PM-LABEL: define {{[^@]+}}@test-5()
+; CGSCC_OLD_PM-NEXT:  entry:
+; CGSCC_OLD_PM-NEXT:    [[CALL:%.*]] = call i32 @rec(i32 0)
+; CGSCC_OLD_PM-NEXT:    ret i32 [[CALL]]
+;
+; CGSCC_NEW_PM-LABEL: define {{[^@]+}}@test-5()
+; CGSCC_NEW_PM-NEXT:  entry:
+; CGSCC_NEW_PM-NEXT:    [[CALL:%.*]] = call i32 @rec(i32 0)
+; CGSCC_NEW_PM-NEXT:    ret i32 [[CALL]]
 ;
 ; CGSCC-LABEL: define {{[^@]+}}@test-5()
 ; CGSCC-NEXT:  entry:
 ; CGSCC-NEXT:    [[CALL:%.*]] = call i32 @rec(i32 0)
 ; CGSCC-NEXT:    ret i32 [[CALL]]
-;
 entry:
   %call = call i32 @rec(i32 0)
   ret i32 %call
@@ -836,7 +1170,7 @@ entry:
 !1 = !{i32 10, i32 100}
 ; CHECK: !0 = !{i32 0, i32 10}
 ; CHECK-NEXT: !1 = !{i32 10, i32 100}
-; CHECK-NEXT: !2 = !{i32 200, i32 1091}
+; NEW_PM:     !2 = !{i32 200, i32 1091}
 ; OLD_PM:     !3 = !{i32 0, i32 2}
 ; NEW_PM:     !3 = !{i32 1, i32 -2147483648}
 ; NEW_PM:     !4 = !{i32 0, i32 2}


        


More information about the llvm-commits mailing list