@@ -15,21 +15,29 @@ ifdef IS_MSVC
15
15
COMMON_FLAGS=-Cpanic =abort
16
16
endif
17
17
18
+ # For some very small programs GNU ld seems to not properly handle
19
+ # instrumentation sections correctly. Neither Gold nor LLD have that problem.
20
+ ifeq ($(UNAME ) ,Linux)
21
+ ifneq (,$(findstring x86,$(TARGET ) ) )
22
+ COMMON_FLAGS=-Clink-args=-fuse-ld =gold
23
+ endif
24
+ endif
25
+
26
+
18
27
all :
19
28
# We don't compile `opaque` with either optimizations or instrumentation.
20
- # We don't compile `opaque` with either optimizations or instrumentation.
21
- $(RUSTC ) $(COMMON_FLAGS ) opaque.rs
29
+ $(RUSTC ) $(COMMON_FLAGS ) opaque.rs || exit 1
22
30
# Compile the test program with instrumentation
23
- mkdir -p " $( TMPDIR) " /prof_data_dir
31
+ mkdir -p " $( TMPDIR) /prof_data_dir" || exit 1
24
32
$(RUSTC ) $(COMMON_FLAGS ) interesting.rs \
25
- -Cprofile-generate=" $( TMPDIR) " /prof_data_dir -O -Ccodegen-units=1
26
- $(RUSTC ) $(COMMON_FLAGS ) main.rs -Cprofile-generate=" $( TMPDIR) " /prof_data_dir -O
33
+ -Cprofile-generate=" $( TMPDIR) /prof_data_dir" -O -Ccodegen-units=1 || exit 1
34
+ $(RUSTC ) $(COMMON_FLAGS ) main.rs -Cprofile-generate=" $( TMPDIR) /prof_data_dir" -O || exit 1
27
35
# The argument below generates to the expected branch weights
28
36
$(call RUN,main aaaaaaaaaaaa2bbbbbbbbbbbb2bbbbbbbbbbbbbbbbcc) || exit 1
29
- " $( LLVM_BIN_DIR) " /llvm-profdata merge \
30
- -o " $( TMPDIR) " /prof_data_dir/merged.profdata \
31
- " $( TMPDIR) " /prof_data_dir
37
+ " $( LLVM_BIN_DIR) /llvm-profdata" merge \
38
+ -o " $( TMPDIR) /prof_data_dir/merged.profdata" \
39
+ " $( TMPDIR) /prof_data_dir" || exit 1
32
40
$(RUSTC ) $(COMMON_FLAGS ) interesting.rs \
33
- -Cprofile-use=" $( TMPDIR) " /prof_data_dir/merged.profdata -O \
34
- -Ccodegen-units=1 --emit=llvm-ir
35
- cat " $( TMPDIR) " /interesting.ll | " $( LLVM_FILECHECK) " filecheck-patterns.txt
41
+ -Cprofile-use=" $( TMPDIR) /prof_data_dir/merged.profdata" -O \
42
+ -Ccodegen-units=1 --emit=llvm-ir || exit 1
43
+ cat " $( TMPDIR) /interesting.ll" | " $( LLVM_FILECHECK) " filecheck-patterns.txt
0 commit comments