================ @@ -0,0 +1,29 @@ +; RUN: opt -S --dxil-prepare %s | FileCheck %s + +; Test that only metadata nodes that are valid in DXIL are allowed through + +target triple = "dxilv1.0-unknown-shadermodel6.0-compute" + +; Function Attrs: noinline nounwind memory(readwrite, inaccessiblemem: none) +define void @main(i32* %ptr) { +entry: + ; metadata ID changes to 0 once the current !0 and !1 are removed + ; since they aren't in the whitelist. range needs a payload. + ; CHECK: %val = load i32, ptr %ptr, align 4, !range [[RANGEMD:![0-9]+]] + %val = load i32, ptr %ptr, align 4, !range !2 + + %cmp.i = icmp ult i32 1, 2 + br i1 %cmp.i, label %_Z4mainDv3_j.exit, label %_Z4mainDv3_j.exit, !llvm.loop !0 + +_Z4mainDv3_j.exit: ; preds = %for.body.i, %entry + ret void +} + +; CHECK: [[RANGEMD]] = !{i32 1, i32 5} +; this next check line checks that nothing comes after the above check line. +; No more metadata should be necessary, the rest (the current 0 and 1) +; should be removed. +; CHECK-NOT: !{!"llvm.loop.mustprogress"} ---------------- bogner wrote:
`CHECK-NOT` is finicky - if `!{!"llvm.loop.mustprogress"}` prints *before* the range MD this won't fire. We need to use two check-nots, like so ```suggestion ; CHECK-NOT: !{!"llvm.loop.mustprogress"} ; CHECK: [[RANGEMD]] = !{i32 1, i32 5} ; CHECK-NOT: !{!"llvm.loop.mustprogress"} ``` https://github.com/llvm/llvm-project/pull/136386 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits