xref: /llvm-project/llvm/test/Instrumentation/SanitizerCoverage/backedge-pruning.ll (revision fc1270dd2972b5302ff8717d7dcf754c22bbddc3)
1a78a44d4SKostya Serebryany; Test -sanitizer-coverage-trace-compares=1 and how it prunes backedge compares.
2eca01b03SLeonard Chan; RUN: opt < %s -passes='module(sancov-module)' -sanitizer-coverage-level=1 -sanitizer-coverage-trace-compares=1  -sanitizer-coverage-prune-blocks=1 -S | FileCheck %s --check-prefix=PRUNE
3eca01b03SLeonard Chan; RUN: opt < %s -passes='module(sancov-module)' -sanitizer-coverage-level=1 -sanitizer-coverage-trace-compares=1  -sanitizer-coverage-prune-blocks=0 -S | FileCheck %s --check-prefix=NOPRUNE
4a78a44d4SKostya Serebryany
5a78a44d4SKostya Serebryanytarget datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
6a78a44d4SKostya Serebryanytarget triple = "x86_64-unknown-linux-gnu"
7a78a44d4SKostya Serebryany
8*fc1270ddSFangrui Songdefine dso_local void @foo(ptr nocapture readnone %a, i32 %n) local_unnamed_addr {
9a78a44d4SKostya Serebryanyentry:
10a78a44d4SKostya Serebryany  br label %do.body
11a78a44d4SKostya Serebryany
12a78a44d4SKostya Serebryanydo.body:
13a78a44d4SKostya Serebryany  %i.0 = phi i32 [ 0, %entry ], [ %inc, %do.body ]
14a78a44d4SKostya Serebryany  tail call void (...) @bar()
15a78a44d4SKostya Serebryany  %inc = add nuw nsw i32 %i.0, 1
16a78a44d4SKostya Serebryany  %cmp = icmp slt i32 %inc, %n
17a78a44d4SKostya Serebryany;PRUNE-LABEL: foo
18a78a44d4SKostya Serebryany;PRUNE-NOT: __sanitizer_cov_trace_cmp4
19a78a44d4SKostya Serebryany;PRUNE: ret void
20a78a44d4SKostya Serebryany
21a78a44d4SKostya Serebryany;NOPRUNE-LABEL: foo
22a78a44d4SKostya Serebryany;NOPRUNE: call void @__sanitizer_cov_trace_cmp4
23a78a44d4SKostya Serebryany;NOPRUNE-NEXT: icmp
24a78a44d4SKostya Serebryany;NOPRUNE: ret void
25a78a44d4SKostya Serebryany
26a78a44d4SKostya Serebryany  br i1 %cmp, label %do.body, label %do.end
27a78a44d4SKostya Serebryany
28a78a44d4SKostya Serebryanydo.end:
29a78a44d4SKostya Serebryany  ret void
30a78a44d4SKostya Serebryany}
31a78a44d4SKostya Serebryany
32a78a44d4SKostya Serebryanydeclare dso_local void @bar(...) local_unnamed_addr
33