brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.0 KiB · ecf8322 Raw
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