1; RUN: opt %loadNPMPolly '-passes=print<polly-detect>' -disable-output < %s 2>&1 | FileCheck %s 2; RUN: opt %loadNPMPolly '-passes=print<polly-function-scops>' -disable-output < %s 3 4; CHECK: Valid Region for Scop: bb10 => bb16 5 6; Verify that -polly-scops does not crash. At some point this piece of 7; code crashed as we extracted from the SCEV expression: 8; 9; ((8 * ((%a * %b) + %c)) + (-8 * %a))' 10; 11; the constant 8, which resulted in the new expression: 12; 13; (((-1 + %b) * %a) + %c) 14; 15; which introduced a new parameter (-1 + %b) * %a which was not registered 16; correctly and consequently caused a crash due to an expression not being 17; registered as a parameter. 18 19target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64" 20 21define void @barney(ptr %arg, ptr %arg1, ptr %arg2, ptr %arg3, i32 %a, i32 %b, i32 %c) { 22bb: 23 br label %bb10 24 25bb10: ; preds = %bb 26 br i1 true, label %bb11, label %bb16 27 28bb11: ; preds = %bb10 29 %tmp4 = add nsw i32 1, %a 30 %tmp5 = sub i32 0, %tmp4 31 %tmp8 = add nsw i32 %c, 1 32 %tmp12 = mul nsw i32 %b, %a 33 %tmp13 = add nsw i32 %tmp8, %tmp12 34 %tmp6 = getelementptr inbounds double, ptr %arg2, i32 %tmp5 35 %tmp14 = getelementptr inbounds double, ptr %tmp6, i32 %tmp13 36 %tmp15 = load double, ptr %tmp14 37 br label %bb16 38 39bb16: ; preds = %bb11, %bb10 40 ret void 41} 42