->getParent()
->getDataLayout(),
"polly");
+ assert(Builder.GetInsertPoint() != Builder.GetInsertBlock()->end() &&
+ "Only instructions can be insert points for SCEVExpander");
Value *Expanded = Expander.expandCodeFor(NewScev, Old->getType(),
Builder.GetInsertPoint());
ValueMapT &RegionMap = RegionMaps[BBCopy];
RegionMap.insert(BlockMap.begin(), BlockMap.end());
- Builder.SetInsertPoint(BBCopy);
+ Builder.SetInsertPoint(BICopy);
copyInstScalar(Stmt, BI, RegionMap, GlobalMap, LTS);
BICopy->eraseFromParent();
}
--- /dev/null
+; RUN: opt %loadPolly -polly-codegen -S < %s | FileCheck %s
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
+%struct.wombat = type {[4 x i32]}
+
+; CHECK: polly.stmt.bb3.entry: ; preds = %polly.start
+; CHECK: br label %polly.stmt.bb3
+
+; CHECK: polly.stmt.bb3: ; preds = %polly.stmt.bb3.entry
+; CHECK: %polly.subregion.iv = phi i32 [ 0, %polly.stmt.bb3.entry ]
+; CHECK: %polly.subregion.iv.inc = add i32 %polly.subregion.iv, 1
+; CHECK: br i1 true, label %polly.stmt.bb4, label %polly.stmt.bb5
+
+; CHECK: polly.stmt.bb4: ; preds = %polly.stmt.bb3
+; CHECK: br label %polly.stmt.bb13.exit
+
+; CHECK: polly.stmt.bb5: ; preds = %polly.stmt.bb3
+; CHECK: %tmp7_p_scalar_ = load i32, i32* %B, !alias.scope !0, !noalias !2
+; CHECK: store i32 %tmp7_p_scalar_, i32* %polly.access.cast.arg1, !alias.scope !3, !noalias !4
+; CHECK: br label %polly.stmt.bb13.exit
+
+; Function Attrs: nounwind uwtable
+define void @quux(%struct.wombat* %arg, i32* %B) {
+bb:
+ br i1 undef, label %bb2, label %bb1
+
+bb1: ; preds = %bb
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb
+ %tmp = phi i1 [ true, %bb ], [ undef, %bb1 ]
+ br label %bb3
+
+bb3: ; preds = %bb13, %bb2
+ br i1 %tmp, label %bb4, label %bb5
+
+bb4: ; preds = %bb3
+ br label %bb13
+
+bb5: ; preds = %bb3
+ %tmp7 = load i32, i32* %B
+ %tmp12 = getelementptr inbounds %struct.wombat, %struct.wombat* %arg, i64 0, i32 0, i64 0
+ store i32 %tmp7, i32* %tmp12
+ br label %bb13
+
+bb13: ; preds = %bb5, %bb4
+ br i1 false, label %bb3, label %bb14
+
+bb14: ; preds = %bb13
+ br label %bb15
+
+bb15: ; preds = %bb14
+ unreachable
+}