1# RUN: llc -run-pass=codegenprepare -o - %s | FileCheck %s 2 3# REQUIRES: default_triple 4 5# This testcase without the accompanying fix triggers the assert 6# "Replacement PHI node is already replaced." 7 8--- | 9 define void @f1() { 10 entry: 11 %arrayidx = getelementptr inbounds [2 x i16], [2 x i16]* undef, i16 0, i16 2 12 %0 = bitcast i16* %arrayidx to i32* 13 %1 = bitcast [2 x i16]* undef to i32* 14 br label %for.cond 15 16 for.cond: 17 %2 = phi i32* [ %0, %entry ], [ %7, %cleanup ] 18 %3 = phi i32* [ %0, %entry ], [ %9, %cleanup ] 19 br label %for.body 20 21 for.body: 22 %4 = phi i32* [ %3, %for.cond ], [ %9, %cleanup ] 23 %5 = phi i32* [ %2, %for.cond ], [ %9, %cleanup ] 24 %6 = phi i32* [ %2, %for.cond ], [ %9, %cleanup ] 25 br i1 false, label %for.cond2, label %if.then 26 27 if.then: 28 store i32 undef, i32* %4, align 1 29 unreachable 30 31 for.cond2: 32 %7 = phi i32* [ %6, %for.body ], [ %7, %if.then5 ], [ %1, %for.cond2 ] 33 %8 = phi i32* [ %5, %for.body ], [ %8, %if.then5 ], [ %1, %for.cond2 ] 34 %9 = phi i32* [ %4, %for.body ], [ %8, %if.then5 ], [ %1, %for.cond2 ] 35 br i1 undef, label %for.cond2, label %if.then5 36 37 if.then5: 38 br i1 undef, label %cleanup, label %for.cond2 39 40 cleanup: 41 br i1 true, label %for.cond, label %for.body 42 } 43 44... 45 46# Sanity check to verify that something got through. 47# CHECK-LABEL: entry: 48