llvm.org GIT mirror llvm / 378a591
[InstSimplify] Report "Changed" also when only deleting dead instructions Summary: Make sure that we report that changes has been made by InstSimplify also in situations when only trivially dead instructions has been removed. If for example a call is removed the call graph must be updated. Bug seem to have been introduced by llvm-svn r367173 (commit 02b9e45a7e4b81), since the code in question was rewritten in that commit. Reviewers: spatel, chandlerc, foad Reviewed By: spatel Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D65973 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@368401 91177308-0d34-0410-b5e6-96231b3b80d8 Bjorn Pettersson a month ago
2 changed file(s) with 29 addition(s) and 0 deletion(s). Raw diff Collapse all Expand all
4444 // Don't waste time simplifying dead/unused instructions.
4545 if (isInstructionTriviallyDead(&I)) {
4646 DeadInstsInBB.push_back(&I);
47 Changed = true;
4748 } else if (!I.use_empty()) {
4849 if (Value *V = SimplifyInstruction(&I, SQ, ORE)) {
4950 // Mark all uses for resimplification next time round the loop.
0 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
1 ; RUN: opt < %s -instsimplify -S -o /dev/null -debug-pass=Details 2>&1 | FileCheck --check-prefix DETAILS %s
2 ; RUN: opt < %s -instsimplify -S -o - | FileCheck %s
3
4 ; Verify that InstSimplifyLegacyPass notifies the pass manager about changes
5 ; being made (when a call is removed CGSCC must be updated).
6 ;
7 ; DETAILS: Made Modification 'Remove redundant instructions' on Function 'main'
8
9 define internal void @func_1(i64* nocapture readnone %0) #0 {
10 ; CHECK-LABEL: @func_1(
11 ; CHECK-NEXT: unreachable
12 ;
13 unreachable
14 }
15
16 define i16 @main(i16 %0, i16** nocapture readnone %1) #1 {
17 ; CHECK-LABEL: @main(
18 ; CHECK-NEXT: bb1:
19 ; CHECK-NEXT: unreachable
20 ;
21 bb1:
22 call void @func_1(i64* undef)
23 unreachable
24 }
25
26 attributes #0 = { noinline norecurse nounwind readnone }
27 attributes #1 = { norecurse nounwind readnone }