|  | // RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s | 
|  |  | 
|  | // We expect to get a loop structure like this: | 
|  | //    do.body:                                       ; preds = %do.cond, ... | 
|  | //      ... | 
|  | //      br label %do.cond | 
|  | //    do.cond:                                       ; preds = %do.body | 
|  | //      ... | 
|  | //      br i1 %cmp, label %do.body, label %do.end | 
|  | //    do.end:                                        ; preds = %do.cond | 
|  | //      ... | 
|  | // | 
|  | // Verify that the loop metadata only is put on the backedge. | 
|  | // | 
|  | // CHECK-NOT: llvm.loop | 
|  | // CHECK-LABEL: do.cond: | 
|  | // CHECK: br {{.*}}, label %do.body, label %do.end, !llvm.loop ![[LMD1:[0-9]+]] | 
|  | // CHECK-LABEL: do.end: | 
|  | // CHECK-NOT: llvm.loop | 
|  | // CHECK: ![[LMD1]] = distinct !{![[LMD1]], [[LMD2:![0-9]+]], ![[LMD3:[0-9]+]]} | 
|  | // CHECK: [[LMD2]] = !{!"llvm.loop.mustprogress"} | 
|  | // CHECK: ![[LMD3]] = !{!"llvm.loop.unroll.count", i32 4} | 
|  |  | 
|  | int test(int a[], int n) { | 
|  | int i = 0; | 
|  | int sum = 0; | 
|  |  | 
|  | #pragma unroll 4 | 
|  | do | 
|  | { | 
|  | a[i] = a[i] + 1; | 
|  | sum = sum + a[i]; | 
|  | i++; | 
|  | } while (i < n); | 
|  |  | 
|  | return sum; | 
|  | } |