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
27
28
29
30
31
32
33
34
35
36
37
38
|
# DP: Fix PR lto/91307, reproducible LTO builds, taken from the trunk.
gcc/
2019-08-20 Richard Biener <rguenther@suse.de>
PR lto/91307
* ipa.c (cgraph_build_static_cdtor_1): Use names not recognizable
by collect2 when targetm.have_ctors_dtors which avoids dragging
in temporary filenames from LTO input objects.
--- a/src/gcc/ipa.c
+++ b/src/gcc/ipa.c
@@ -836,13 +836,18 @@
/* The priority is encoded in the constructor or destructor name.
collect2 will sort the names and arrange that they are called at
program startup. */
- if (final)
- sprintf (which_buf, "%c_%.5d_%d", which, priority, counter++);
+ if (!targetm.have_ctors_dtors && final)
+ {
+ sprintf (which_buf, "%c_%.5d_%d", which, priority, counter++);
+ name = get_file_function_name (which_buf);
+ }
else
- /* Proudce sane name but one not recognizable by collect2, just for the
- case we fail to inline the function. */
- sprintf (which_buf, "sub_%c_%.5d_%d", which, priority, counter++);
- name = get_file_function_name (which_buf);
+ {
+ /* Proudce sane name but one not recognizable by collect2, just for the
+ case we fail to inline the function. */
+ sprintf (which_buf, "_sub_%c_%.5d_%d", which, priority, counter++);
+ name = get_identifier (which_buf);
+ }
decl = build_decl (input_location, FUNCTION_DECL, name,
build_function_type_list (void_type_node, NULL_TREE));
|