1; RUN: opt %loadNPMPolly '-passes=print<polly-ast>' -disable-output < %s | FileCheck %s 2; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s -check-prefix=CODEGEN 3target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" 4 5define void @foo(ptr %start, ptr %end) { 6entry: 7 %A = alloca i32 8 br label %body 9 10body: 11 %ptr = phi ptr [ %start, %entry ], [ %ptr2, %body ] 12 %ptr2 = getelementptr inbounds i8, ptr %ptr, i64 1 13 %cmp = icmp eq ptr %ptr2, %end 14 store i32 42, ptr %A 15 br i1 %cmp, label %exit, label %body 16 17exit: 18 ret void 19} 20 21; CHECK: for (int c0 = 0; c0 < -start + end; c0 += 1) 22; CHECK: Stmt_body(c0); 23 24; CODEGEN-LABEL: polly.start: 25; CODEGEN-NEXT: %[[r0:[._a-zA-Z0-9]*]] = ptrtoint ptr %start to i64 26; CODEGEN-NEXT: %[[r1:[._a-zA-Z0-9]*]] = sub nsw i64 0, %[[r0]] 27; CODEGEN-NEXT: %[[r2:[._a-zA-Z0-9]*]] = ptrtoint ptr %end to i64 28; CODEGEN-NEXT: %[[r4:[._a-zA-Z0-9]*]] = add nsw i64 %[[r1]], %[[r2]] 29 30