File tree 3 files changed +27
-12
lines changed
tests/run-make/pgo-gen-no-imp-symbols
3 files changed +27
-12
lines changed Original file line number Diff line number Diff line change @@ -67,7 +67,6 @@ run-make/panic-abort-eh_frame/Makefile
67
67
run-make/pass-non-c-like-enum-to-c/Makefile
68
68
run-make/pdb-buildinfo-cl-cmd/Makefile
69
69
run-make/pgo-gen-lto/Makefile
70
- run-make/pgo-gen-no-imp-symbols/Makefile
71
70
run-make/pgo-indirect-call-promotion/Makefile
72
71
run-make/pointer-auth-link-with-c/Makefile
73
72
run-make/print-calling-conventions/Makefile
Load Diff This file was deleted.
Original file line number Diff line number Diff line change
1
+ // LLVM's profiling instrumentation adds a few symbols that are used by the profiler runtime.
2
+ // Since these show up as globals in the LLVM IR, the compiler generates dllimport-related
3
+ // __imp_ stubs for them. This can lead to linker errors because the instrumentation
4
+ // symbols have weak linkage or are in a comdat section, but the __imp_ stubs aren't.
5
+ // Since profiler-related symbols were excluded from stub-generation in #59812, this has
6
+ // been fixed, and this test checks that the llvm profile symbol appear, but without the
7
+ // anomalous __imp_ stubs.
8
+ // See https://github.com/rust-lang/rust/pull/59812
9
+
10
+ use run_make_support:: { cwd, rfs, rustc} ;
11
+
12
+ fn main ( ) {
13
+ rustc ( )
14
+ . input ( "test.rs" )
15
+ . emit ( "llvm-ir" )
16
+ . opt ( )
17
+ . codegen_units ( 1 )
18
+ . profile_generate ( cwd ( ) )
19
+ . arg ( "-Zno-profiler-runtime" )
20
+ . run ( ) ;
21
+ let out = rfs:: read_to_string ( "test.ll" ) ;
22
+ // We expect symbols starting with "__llvm_profile_".
23
+ assert ! ( out. contains( "__llvm_profile_" ) ) ;
24
+ // We do NOT expect the "__imp_" version of these symbols.
25
+ assert ! ( !out. contains( "__imp___llvm_profile_" ) ) ; // 64 bit
26
+ assert ! ( !out. contains( "__imp____llvm_profile_" ) ) ; // 32 bit
27
+ }
You can’t perform that action at this time.
0 commit comments