[SimplifyCFG] Teach FoldValueComparisonIntoPredecessors() to preserve DomTree, part 2

This commit is contained in:
Roman Lebedev 2021-01-01 02:21:53 +03:00
parent a815b6b2b2
commit 8866583953
No known key found for this signature in database
GPG Key ID: 083C3EBB4A1689E0
4 changed files with 5 additions and 3 deletions

View File

@ -1109,6 +1109,8 @@ bool SimplifyCFGOpt::FoldValueComparisonIntoPredecessors(Instruction *TI,
std::vector<DominatorTree::UpdateType> Updates;
Updates.push_back({DominatorTree::Delete, Pred, BB});
// Figure out which 'cases' to copy from SI to PSI.
std::vector<ValueEqualityComparisonCase> BBCases;
BasicBlock *BBDefault = GetValueEqualityComparisonCases(TI, BBCases);

View File

@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt < %s -chr -instcombine -simplifycfg -S -enable-new-pm=0 | FileCheck %s
; RUN: opt < %s -chr -instcombine -simplifycfg -simplifycfg-require-and-preserve-domtree=1 -S -enable-new-pm=0 | FileCheck %s
; RUN: opt < %s -passes='require<profile-summary>,function(chr,instcombine,simplify-cfg)' -S | FileCheck %s
declare void @foo()

View File

@ -1,4 +1,4 @@
; RUN: opt < %s -simplifycfg -S -hoist-common-insts=true | not grep icmp
; RUN: opt < %s -simplifycfg -simplifycfg-require-and-preserve-domtree=1 -S -hoist-common-insts=true | not grep icmp
; ModuleID = '/tmp/x.bc'
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128"
target triple = "i686-pc-linux-gnu"

View File

@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt < %s -simplifycfg -S | FileCheck %s
; RUN: opt < %s -simplifycfg -simplifycfg-require-and-preserve-domtree=1 -S | FileCheck %s
; Test that a switch going to a switch on the same value can be merged.
; All three switches in this example can be merged into one big one.