xref: /aosp_15_r20/external/llvm/test/Transforms/Mem2Reg/2003-10-05-DeadPHIInsertion.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; Mem2reg should not insert dead PHI nodes!  The naive algorithm inserts a PHI
2*9880d681SAndroid Build Coastguard Worker;  node in L3, even though there is no load of %A in anything dominated by L3.
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -mem2reg -S | not grep phi
5*9880d681SAndroid Build Coastguard Worker
6*9880d681SAndroid Build Coastguard Workerdefine void @test(i32 %B, i1 %C) {
7*9880d681SAndroid Build Coastguard Worker	%A = alloca i32		; <i32*> [#uses=4]
8*9880d681SAndroid Build Coastguard Worker	store i32 %B, i32* %A
9*9880d681SAndroid Build Coastguard Worker	br i1 %C, label %L1, label %L2
10*9880d681SAndroid Build Coastguard WorkerL1:		; preds = %0
11*9880d681SAndroid Build Coastguard Worker	store i32 %B, i32* %A
12*9880d681SAndroid Build Coastguard Worker	%D = load i32, i32* %A		; <i32> [#uses=1]
13*9880d681SAndroid Build Coastguard Worker	call void @test( i32 %D, i1 false )
14*9880d681SAndroid Build Coastguard Worker	br label %L3
15*9880d681SAndroid Build Coastguard WorkerL2:		; preds = %0
16*9880d681SAndroid Build Coastguard Worker	%E = load i32, i32* %A		; <i32> [#uses=1]
17*9880d681SAndroid Build Coastguard Worker	call void @test( i32 %E, i1 true )
18*9880d681SAndroid Build Coastguard Worker	br label %L3
19*9880d681SAndroid Build Coastguard WorkerL3:		; preds = %L2, %L1
20*9880d681SAndroid Build Coastguard Worker	ret void
21*9880d681SAndroid Build Coastguard Worker}
22*9880d681SAndroid Build Coastguard Worker
23