mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-26 04:32:44 +01:00
83df3058ed
UpdatePHINodes has an optimization to reuse an existing PHI node, where it first deletes all of its entries and then replaces them. Unfortunately, in the case where we had duplicate predecessors (which are allowed so long as the associated PHI entries have the same value), the loop removing the existing PHI entries from the to-be-reused PHI would assert (if that PHI was not the one which had the duplicates). llvm-svn: 192001
47 lines
1.9 KiB
LLVM
47 lines
1.9 KiB
LLVM
; RUN: opt -loop-simplify -S %s | FileCheck %s
|
|
target datalayout = "E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:128:128-v128:128:128-n32:64"
|
|
target triple = "powerpc64-bgq-linux"
|
|
|
|
define fastcc void @do_update_md([3 x float]* nocapture readonly %x) #0 {
|
|
entry:
|
|
br i1 undef, label %if.end365, label %lor.lhs.false134
|
|
|
|
lor.lhs.false134: ; preds = %entry
|
|
br i1 undef, label %lor.lhs.false138, label %if.end365
|
|
|
|
lor.lhs.false138: ; preds = %lor.lhs.false134
|
|
br i1 undef, label %lor.lhs.false142, label %if.end365
|
|
|
|
lor.lhs.false142: ; preds = %lor.lhs.false138
|
|
br i1 undef, label %for.body276.lr.ph, label %if.end365
|
|
|
|
for.body276.lr.ph: ; preds = %lor.lhs.false142
|
|
switch i16 undef, label %if.then288 [
|
|
i16 4, label %for.body344
|
|
i16 2, label %for.body344
|
|
]
|
|
|
|
if.then288: ; preds = %for.body276.lr.ph
|
|
br label %for.body305
|
|
|
|
for.body305: ; preds = %for.body305, %if.then288
|
|
br label %for.body305
|
|
|
|
for.body344: ; preds = %for.body344, %for.body276.lr.ph, %for.body276.lr.ph
|
|
%indvar = phi i64 [ %indvar.next, %for.body344 ], [ 0, %for.body276.lr.ph ]
|
|
%indvars.iv552 = phi i64 [ %indvars.iv.next553, %for.body344 ], [ 0, %for.body276.lr.ph ], [ 0, %for.body276.lr.ph ]
|
|
%indvars.iv.next553 = add nuw nsw i64 %indvars.iv552, 1
|
|
%indvar.next = add i64 %indvar, 1
|
|
br label %for.body344
|
|
|
|
; CHECK-LABEL: @do_update_md
|
|
; CHECK: %indvars.iv552 = phi i64 [ %indvars.iv.next553, %for.body344 ], [ 0, %for.body344.preheader ]
|
|
; CHECK: ret
|
|
|
|
if.end365: ; preds = %lor.lhs.false142, %lor.lhs.false138, %lor.lhs.false134, %entry
|
|
ret void
|
|
}
|
|
|
|
attributes #0 = { nounwind }
|
|
|