summaryrefslogtreecommitdiffstats
path: root/tests/run-make/pgo-branch-weights/Makefile
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:20:29 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:20:29 +0000
commit631cd5845e8de329d0e227aaa707d7ea228b8f8f (patch)
treea1b87c8f8cad01cf18f7c5f57a08f102771ed303 /tests/run-make/pgo-branch-weights/Makefile
parentAdding debian version 1.69.0+dfsg1-1. (diff)
downloadrustc-631cd5845e8de329d0e227aaa707d7ea228b8f8f.tar.xz
rustc-631cd5845e8de329d0e227aaa707d7ea228b8f8f.zip
Merging upstream version 1.70.0+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'tests/run-make/pgo-branch-weights/Makefile')
-rw-r--r--tests/run-make/pgo-branch-weights/Makefile34
1 files changed, 34 insertions, 0 deletions
diff --git a/tests/run-make/pgo-branch-weights/Makefile b/tests/run-make/pgo-branch-weights/Makefile
new file mode 100644
index 000000000..c60206a1f
--- /dev/null
+++ b/tests/run-make/pgo-branch-weights/Makefile
@@ -0,0 +1,34 @@
+# 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
+
+# For some very small programs GNU ld seems to not properly handle
+# instrumentation sections correctly. Neither Gold nor LLD have that problem.
+ifeq ($(UNAME),Linux)
+ifneq (,$(findstring x86,$(TARGET)))
+COMMON_FLAGS=-Clink-args=-fuse-ld=gold
+endif
+endif
+
+
+all:
+ # We don't compile `opaque` with either optimizations or instrumentation.
+ $(RUSTC) $(COMMON_FLAGS) opaque.rs || exit 1
+ # Compile the test program with instrumentation
+ mkdir -p "$(TMPDIR)/prof_data_dir" || exit 1
+ $(RUSTC) $(COMMON_FLAGS) interesting.rs \
+ -Cprofile-generate="$(TMPDIR)/prof_data_dir" -O -Ccodegen-units=1 || exit 1
+ $(RUSTC) $(COMMON_FLAGS) main.rs -Cprofile-generate="$(TMPDIR)/prof_data_dir" -O || exit 1
+ # The argument below generates to the expected branch weights
+ $(call RUN,main aaaaaaaaaaaa2bbbbbbbbbbbb2bbbbbbbbbbbbbbbbcc) || exit 1
+ "$(LLVM_BIN_DIR)/llvm-profdata" merge \
+ -o "$(TMPDIR)/prof_data_dir/merged.profdata" \
+ "$(TMPDIR)/prof_data_dir" || exit 1
+ $(RUSTC) $(COMMON_FLAGS) interesting.rs \
+ -Cprofile-use="$(TMPDIR)/prof_data_dir/merged.profdata" -O \
+ -Ccodegen-units=1 --emit=llvm-ir || exit 1
+ cat "$(TMPDIR)/interesting.ll" | "$(LLVM_FILECHECK)" filecheck-patterns.txt