Silviu Baranga | f875e4f | 2016-03-21 12:44:29 +0000 | [diff] [blame^] | 1 | ; RUN: opt -indvars -S < %s | FileCheck %s |
| 2 | |
| 3 | target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" |
| 4 | |
| 5 | ; indvars will try to replace %b.0.lcssa with %t.1. If it does this, |
| 6 | ; it will break LCSSA. |
| 7 | |
| 8 | @c = external global i32, align 4 |
| 9 | |
| 10 | ; CHECK-LABEL: @fn1 |
| 11 | define void @fn1() { |
| 12 | entry: |
| 13 | br label %for.body |
| 14 | |
| 15 | for.cond1.preheader: ; preds = %for.body |
| 16 | %0 = load i32, i32* @c, align 4 |
| 17 | br i1 undef, label %for.cond1.us.preheader, label %for.cond1 |
| 18 | |
| 19 | for.cond1.us.preheader: ; preds = %for.cond1.preheader |
| 20 | br label %for.cond1.us |
| 21 | |
| 22 | for.cond1.us: ; preds = %for.cond1.us, %for.cond1.us.preheader |
| 23 | br label %for.cond1.us |
| 24 | |
| 25 | for.body: ; preds = %for.body, %entry |
| 26 | br i1 undef, label %for.body, label %for.cond1.preheader |
| 27 | |
| 28 | for.cond1: ; preds = %for.cond1.preheader |
| 29 | br i1 true, label %for.body9.lr.ph, label %for.cond13.preheader |
| 30 | |
| 31 | for.body9.lr.ph: ; preds = %for.cond1 |
| 32 | br i1 undef, label %for.body9.us.preheader, label %for.body9 |
| 33 | |
| 34 | for.body9.us.preheader: ; preds = %for.body9.lr.ph |
| 35 | br label %for.body9.us |
| 36 | |
| 37 | for.body9.us: ; preds = %for.body9.us, %for.body9.us.preheader |
| 38 | br label %for.body9.us |
| 39 | |
| 40 | for.cond13.preheader: ; preds = %for.body9, %for.cond1 |
| 41 | %b.0.lcssa = phi i32 [ %0, %for.body9 ], [ 0, %for.cond1 ] |
| 42 | br label %for.cond13 |
| 43 | |
| 44 | for.body9: ; preds = %for.body9.lr.ph |
| 45 | br label %for.cond13.preheader |
| 46 | |
| 47 | for.cond13: ; preds = %for.cond13, %for.cond13.preheader |
| 48 | %d.1 = phi i32 [ %t.1, %for.cond13 ], [ %0, %for.cond13.preheader ] |
| 49 | %t.1 = phi i32 [ %b.0.lcssa, %for.cond13 ], [ %0, %for.cond13.preheader ] |
| 50 | br i1 undef, label %for.cond18.preheader, label %for.cond13 |
| 51 | |
| 52 | for.cond18.preheader: ; preds = %for.cond13 |
| 53 | br label %for.cond18 |
| 54 | |
| 55 | for.cond18: ; preds = %for.cond18, %for.cond18.preheader |
| 56 | %b.1 = phi i32 [ %xor, %for.cond18 ], [ %b.0.lcssa, %for.cond18.preheader ] |
| 57 | %add = add nsw i32 %b.1, %d.1 |
| 58 | %xor = xor i32 %add, %b.1 |
| 59 | br label %for.cond18 |
| 60 | } |