38 lines · cpp
1// RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s2 3// We expect to get a loop structure like this:4// do.body: ; preds = %do.cond, ...5// ...6// br label %do.cond7// do.cond: ; preds = %do.body8// ...9// br i1 %cmp, label %do.body, label %do.end10// do.end: ; preds = %do.cond11// ...12//13// Verify that the loop metadata only is put on the backedge.14//15// CHECK-NOT: llvm.loop16// CHECK-LABEL: do.cond:17// CHECK: br {{.*}}, label %do.body, label %do.end, !llvm.loop ![[LMD1:[0-9]+]]18// CHECK-LABEL: do.end:19// CHECK-NOT: llvm.loop20// CHECK: ![[LMD1]] = distinct !{![[LMD1]], [[LMD2:![0-9]+]], ![[LMD3:[0-9]+]]}21// CHECK: [[LMD2]] = !{!"llvm.loop.mustprogress"}22// CHECK: ![[LMD3]] = !{!"llvm.loop.unroll.count", i32 4}23 24int test(int a[], int n) {25 int i = 0;26 int sum = 0;27 28#pragma unroll 429 do30 {31 a[i] = a[i] + 1;32 sum = sum + a[i];33 i++;34 } while (i < n);35 36 return sum;37}38