From: Maxim Ostapenko Date: Mon, 23 Jan 2017 09:12:29 +0000 (+0200) Subject: re PR lto/79061 ([LTO][ASAN] LTO plus ASAN fails with "AddressSanitizer: initializati... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e3d53f96ed595fd6e8bef75f166a93e5309b0c2a;p=gcc.git re PR lto/79061 ([LTO][ASAN] LTO plus ASAN fails with "AddressSanitizer: initialization-order-fiasco") Revert fix for PR lto/79061 due to this regresses compile-time by 100% on some fortran cases. From-SVN: r244773 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d6a33489368..de154fdc28e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -401,15 +401,6 @@ New function. (TARGET_SCHED_ADJUST_PRIORITY): Define target hook. -2017-01-18 Maxim Ostapenko - - PR lto/79061 - * asan.c (get_translation_unit_decl): New function. - (asan_add_global): Extract modules file name from globals - TRANSLATION_UNIT_DECL in lto mode. - * tree.c (build_translation_unit_decl): Add source location for newly - built TRANSLATION_UNIT_DECL. - 2017-01-18 Matthias Klose * doc/install.texi: Allow default for --with-target-bdw-gc-include. diff --git a/gcc/asan.c b/gcc/asan.c index 9a59fe4f100..74500448a12 100644 --- a/gcc/asan.c +++ b/gcc/asan.c @@ -2372,22 +2372,6 @@ asan_needs_odr_indicator_p (tree decl) && TREE_PUBLIC (decl)); } -/* For given DECL return its corresponding TRANSLATION_UNIT_DECL. */ - -static const_tree -get_translation_unit_decl (tree decl) -{ - const_tree context = decl; - while (context && TREE_CODE (context) != TRANSLATION_UNIT_DECL) - { - if (TREE_CODE (context) == BLOCK) - context = BLOCK_SUPERCONTEXT (context); - else - context = get_containing_scope (context); - } - return context; -} - /* Append description of a single global DECL into vector V. TYPE is __asan_global struct type as returned by asan_global_struct. */ @@ -2407,14 +2391,7 @@ asan_add_global (tree decl, tree type, vec *v) pp_string (&asan_pp, ""); str_cst = asan_pp_string (&asan_pp); - const char *filename = main_input_filename; - if (in_lto_p) - { - const_tree translation_unit_decl = get_translation_unit_decl (decl); - if (translation_unit_decl) - filename = DECL_SOURCE_FILE (translation_unit_decl); - } - pp_string (&module_name_pp, filename); + pp_string (&module_name_pp, main_input_filename); module_name_cst = asan_pp_string (&module_name_pp); if (asan_needs_local_alias (decl)) diff --git a/gcc/lto/ChangeLog b/gcc/lto/ChangeLog index 6b76cc641d1..8f2e0ec180c 100644 --- a/gcc/lto/ChangeLog +++ b/gcc/lto/ChangeLog @@ -6,12 +6,6 @@ lhd_type_for_size. (LANG_HOOKS_TYPE_FOR_SIZE): Don't redefine. -2017-01-18 Maxim Ostapenko - - PR lto/79061 - * lto.c (lto_read_decls): accept location cache for - TRANSLATION_UNIT_DECL. - 2017-01-11 Jakub Jelinek PR middle-end/50199 diff --git a/gcc/lto/lto.c b/gcc/lto/lto.c index c65e7cdbd38..d77d85defb6 100644 --- a/gcc/lto/lto.c +++ b/gcc/lto/lto.c @@ -1707,13 +1707,7 @@ lto_read_decls (struct lto_file_decl_data *decl_data, const void *data, && (TREE_CODE (first) == IDENTIFIER_NODE || TREE_CODE (first) == INTEGER_CST || TREE_CODE (first) == TRANSLATION_UNIT_DECL)) - { - /* For TRANSLATION_UNIT_DECL we need to accept location cache now - to avoid possible reverting during following unify_scc call. */ - if (TREE_CODE (first) == TRANSLATION_UNIT_DECL) - data_in->location_cache.accept_location_cache (); - continue; - } + continue; /* Try to unify the SCC with already existing ones. */ if (!flag_ltrans diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index fb55fecf60f..e6dc6b39d35 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -299,12 +299,6 @@ * gcc.target/powerpc/pr58673-2.c: Likewise. * gcc.target/powerpc/pr59054.c: Likewise. -2017-01-18 Maxim Ostapenko - - PR lto/79061 - * gcc.dg/cpp/mi1.c: Adjust testcase. - * gcc.dg/pch/cpp-3.c: Likewise. - 2016-01-18 Bill Schmidt * gcc.target/powerpc/p8vector-builtin-8.c: Add new form for diff --git a/gcc/testsuite/gcc.dg/cpp/mi1.c b/gcc/testsuite/gcc.dg/cpp/mi1.c index 9817431b646..0cfedad2f39 100644 --- a/gcc/testsuite/gcc.dg/cpp/mi1.c +++ b/gcc/testsuite/gcc.dg/cpp/mi1.c @@ -13,7 +13,7 @@ /* { dg-do compile } { dg-options "-H" } - { dg-message "mi1c\.h\n\[^\n\]*mi1cc\.h\n\[^\n\]*mi1nd\.h\n\[^\n\]*mi1ndp\.h\n\[^\n\]*mi1x\.h\n\[^\n\]*mi1\.c" "redundant include check" { target *-*-* } 0 } */ + { dg-message "mi1c\.h\n\[^\n\]*mi1cc\.h\n\[^\n\]*mi1nd\.h\n\[^\n\]*mi1ndp\.h\n\[^\n\]*mi1x\.h" "redundant include check" { target *-*-* } 0 } */ #include "mi1c.h" #include "mi1c.h" diff --git a/gcc/testsuite/gcc.dg/pch/cpp-3.c b/gcc/testsuite/gcc.dg/pch/cpp-3.c index d635706b4fd..25b5ca4077f 100644 --- a/gcc/testsuite/gcc.dg/pch/cpp-3.c +++ b/gcc/testsuite/gcc.dg/pch/cpp-3.c @@ -1,7 +1,7 @@ /* PR preprocessor/36649 */ /* { dg-do compile } */ /* { dg-options "-H -I." } */ -/* { dg-message "cpp-3.h\[^\n\]*(\n\[^\n\]*cpp-3.c)?\n\[^\n\]*cpp-3a.h\n\[^\n\]*cpp-3b.h\n\[^\n\]*cpp-3.c" "" { target *-*-* } 0 } */ +/* { dg-message "cpp-3.h\[^\n\]*(\n\[^\n\]*cpp-3.c)?\n\[^\n\]*cpp-3a.h\n\[^\n\]*cpp-3b.h" "" { target *-*-* } 0 } */ #include "cpp-3.h" #include "cpp-3a.h" diff --git a/gcc/tree.c b/gcc/tree.c index 7127bd265de..14f04520172 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -4758,10 +4758,7 @@ vec *all_translation_units; tree build_translation_unit_decl (tree name) { - linemap_add (line_table, LC_ENTER, false, main_input_filename, 1); - location_t loc = linemap_line_start (line_table, 1, 0); - linemap_add (line_table, LC_LEAVE, false, NULL, 0); - tree tu = build_decl (loc, TRANSLATION_UNIT_DECL, + tree tu = build_decl (UNKNOWN_LOCATION, TRANSLATION_UNIT_DECL, name, NULL_TREE); TRANSLATION_UNIT_LANGUAGE (tu) = lang_hooks.name; vec_safe_push (all_translation_units, tu);