; Test "llvm.loop.estimated_trip_count" validation ; DEFINE: %{RUN} = opt -passes=verify %t -disable-output 2>&1 | \ ; DEFINE: FileCheck %s -allow-empty -check-prefix define void @test() { entry: br label %body body: br i1 0, label %body, label %exit, !llvm.loop !0 exit: ret void } !0 = distinct !{!0, !1} ; GOOD-NOT: {{.}} ; BAD-VALUE: Expected second operand to be an integer constant of type i32 or smaller ; BAD-VALUE-NEXT: !1 = !{!"llvm.loop.estimated_trip_count", ; TOO-FEW: Expected two operands ; TOO-FEW-NEXT: !1 = !{!"llvm.loop.estimated_trip_count"} ; TOO-MANY: Expected two operands ; TOO-MANY-NEXT: !1 = !{!"llvm.loop.estimated_trip_count", i32 5, i32 5} ; No value. ; RUN: cp %s %t ; RUN: chmod u+w %t ; RUN: echo '!1 = !{!"llvm.loop.estimated_trip_count"}' >> %t ; RUN: not %{RUN} TOO-FEW ; i16 value. ; RUN: cp %s %t ; RUN: chmod u+w %t ; RUN: echo '!1 = !{!"llvm.loop.estimated_trip_count", i16 5}' >> %t ; RUN: %{RUN} GOOD ; i32 arbitrary value. ; RUN: cp %s %t ; RUN: chmod u+w %t ; RUN: echo '!1 = !{!"llvm.loop.estimated_trip_count", i32 5}' >> %t ; RUN: %{RUN} GOOD ; i32 boundary value of 1. ; RUN: cp %s %t ; RUN: chmod u+w %t ; RUN: echo '!1 = !{!"llvm.loop.estimated_trip_count", i32 1}' >> %t ; RUN: %{RUN} GOOD ; i32 boundary value of 0. ; RUN: cp %s %t ; RUN: chmod u+w %t ; RUN: echo '!1 = !{!"llvm.loop.estimated_trip_count", i32 0}' >> %t ; RUN: %{RUN} GOOD ; i64 value. ; RUN: cp %s %t ; RUN: chmod u+w %t ; RUN: echo '!1 = !{!"llvm.loop.estimated_trip_count", i64 5}' >> %t ; RUN: not %{RUN} BAD-VALUE ; MDString value. ; RUN: cp %s %t ; RUN: chmod u+w %t ; RUN: echo '!1 = !{!"llvm.loop.estimated_trip_count", !"5"}' >> %t ; RUN: not %{RUN} BAD-VALUE ; MDNode value. ; RUN: cp %s %t ; RUN: chmod u+w %t ; RUN: echo '!1 = !{!"llvm.loop.estimated_trip_count", !2}' >> %t ; RUN: echo '!2 = !{i32 5}' >> %t ; RUN: not %{RUN} BAD-VALUE ; Too many values. ; RUN: cp %s %t ; RUN: chmod u+w %t ; RUN: echo '!1 = !{!"llvm.loop.estimated_trip_count", i32 5, i32 5}' >> %t ; RUN: not %{RUN} TOO-MANY