summaryrefslogtreecommitdiffstats
path: root/tests/run-make-fulldeps/pgo-indirect-call-promotion/Makefile
blob: 45302215cc64e6e46c6f37821d54905946ad5224 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# needs-profiler-support
# ignore-windows-gnu

# FIXME(mati865): MinGW GCC miscompiles compiler-rt profiling library but with Clang it works
# properly. Since we only have GCC on the CI ignore the test for now.

include ../tools.mk

all:
	# We don't compile `opaque` with either optimizations or instrumentation.
	# We don't compile `opaque` with either optimizations or instrumentation.
	$(RUSTC) $(COMMON_FLAGS) opaque.rs
	# Compile the test program with instrumentation
	mkdir -p "$(TMPDIR)"/prof_data_dir
	$(RUSTC) $(COMMON_FLAGS) interesting.rs \
		-Cprofile-generate="$(TMPDIR)"/prof_data_dir -O -Ccodegen-units=1
	$(RUSTC) $(COMMON_FLAGS) main.rs -Cprofile-generate="$(TMPDIR)"/prof_data_dir -O
	# The argument below generates to the expected branch weights
	$(call RUN,main) || exit 1
	"$(LLVM_BIN_DIR)"/llvm-profdata merge \
		-o "$(TMPDIR)"/prof_data_dir/merged.profdata \
		"$(TMPDIR)"/prof_data_dir
	$(RUSTC) $(COMMON_FLAGS) interesting.rs \
		-Cprofile-use="$(TMPDIR)"/prof_data_dir/merged.profdata -O \
		-Ccodegen-units=1 --emit=llvm-ir
	cat "$(TMPDIR)"/interesting.ll | "$(LLVM_FILECHECK)" filecheck-patterns.txt