]> git.lizzy.rs Git - rust.git/blob - src/test/run-make/coverage-llvmir/Makefile
Auto merge of #99487 - bmacnaughton:is_whitespace_updates, r=thomcc
[rust.git] / src / test / run-make / coverage-llvmir / Makefile
1 # needs-profiler-support
2
3 # Rust coverage maps support LLVM Coverage Mapping Format versions 5 and 6,
4 # corresponding with LLVM versions 12 and 13, respectively.
5 # When upgrading LLVM versions, consider whether to enforce a minimum LLVM
6 # version during testing, with an additional directive at the top of this file
7 # that sets, for example: `min-llvm-version: 12.0`
8
9 include ../coverage/coverage_tools.mk
10
11 BASEDIR=../coverage-llvmir
12
13 ifeq ($(UNAME),Darwin)
14         INSTR_PROF_DATA_SUFFIX=,regular,live_support
15         DATA_SECTION_PREFIX=__DATA,
16         LLVM_COV_SECTION_PREFIX=__LLVM_COV,
17         COMDAT_IF_SUPPORTED=
18 else
19         INSTR_PROF_DATA_SUFFIX=
20         DATA_SECTION_PREFIX=
21         LLVM_COV_SECTION_PREFIX=
22         COMDAT_IF_SUPPORTED=, comdat
23 endif
24
25 DEFINE_INTERNAL=define internal
26
27 ifdef IS_WINDOWS
28         LLVM_FILECHECK_OPTIONS=\
29                 -check-prefixes=CHECK,WINDOWS \
30                 -DDEFINE_INTERNAL='$(DEFINE_INTERNAL)' \
31                 -DCOMDAT_IF_SUPPORTED='$(COMDAT_IF_SUPPORTED)' \
32                 -DINSTR_PROF_DATA='.lprfd$$M' \
33                 -DINSTR_PROF_NAME='.lprfn$$M' \
34                 -DINSTR_PROF_CNTS='.lprfc$$M' \
35                 -DINSTR_PROF_VALS='.lprfv$$M' \
36                 -DINSTR_PROF_VNODES='.lprfnd$$M' \
37                 -DINSTR_PROF_COVMAP='.lcovmap$$M' \
38                 -DINSTR_PROF_COVFUN='.lcovfun$$M' \
39                 -DINSTR_PROF_ORDERFILE='.lorderfile$$M'
40 else
41         LLVM_FILECHECK_OPTIONS=\
42                 -check-prefixes=CHECK \
43                 -DDEFINE_INTERNAL='$(DEFINE_INTERNAL)' \
44                 -DCOMDAT_IF_SUPPORTED='$(COMDAT_IF_SUPPORTED)' \
45                 -DINSTR_PROF_DATA='$(DATA_SECTION_PREFIX)__llvm_prf_data$(INSTR_PROF_DATA_SUFFIX)' \
46                 -DINSTR_PROF_NAME='$(DATA_SECTION_PREFIX)__llvm_prf_names' \
47                 -DINSTR_PROF_CNTS='$(DATA_SECTION_PREFIX)__llvm_prf_cnts' \
48                 -DINSTR_PROF_VALS='$(DATA_SECTION_PREFIX)__llvm_prf_vals' \
49                 -DINSTR_PROF_VNODES='$(DATA_SECTION_PREFIX)__llvm_prf_vnds' \
50                 -DINSTR_PROF_COVMAP='$(LLVM_COV_SECTION_PREFIX)__llvm_covmap' \
51                 -DINSTR_PROF_COVFUN='$(LLVM_COV_SECTION_PREFIX)__llvm_covfun' \
52                 -DINSTR_PROF_ORDERFILE='$(DATA_SECTION_PREFIX)__llvm_orderfile'
53 endif
54
55 all: test_llvm_ir
56
57 test_llvm_ir:
58         # Compile the test program with non-experimental coverage instrumentation, and generate LLVM IR
59         $(RUSTC) $(BASEDIR)/testprog.rs \
60                         -Cinstrument-coverage \
61                         --emit=llvm-ir
62
63         cat "$(TMPDIR)"/testprog.ll | \
64                         "$(LLVM_FILECHECK)" $(BASEDIR)/filecheck.testprog.txt $(LLVM_FILECHECK_OPTIONS)