diff options
author | Richard Biener <rguenther@suse.de> | 2019-08-20 13:14:59 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2019-08-20 13:14:59 +0000 |
commit | 00f7060a2db60e6fe7066bf65244909dc7693d19 (patch) | |
tree | 77498d10da26f0e9f067280982844b09b8d290bf /gcc/ipa.c | |
parent | 3ed01d5408045d80a1efc42fadacfcfb98f14997 (diff) | |
download | gcc-00f7060a2db60e6fe7066bf65244909dc7693d19.zip gcc-00f7060a2db60e6fe7066bf65244909dc7693d19.tar.gz gcc-00f7060a2db60e6fe7066bf65244909dc7693d19.tar.bz2 |
re PR lto/91307 (-flto causes binary to vary)
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.
From-SVN: r274748
Diffstat (limited to 'gcc/ipa.c')
-rw-r--r-- | gcc/ipa.c | 17 |
1 files changed, 11 insertions, 6 deletions
@@ -836,13 +836,18 @@ cgraph_build_static_cdtor_1 (char which, tree body, int priority, bool final, /* 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)); |