From 72062f27ed1161b85342497a85e3aad88240169d Mon Sep 17 00:00:00 2001 From: =?utf8?q?Arkadiusz=20Mi=C5=9Bkiewicz?= Date: Fri, 9 Feb 2007 23:42:51 +0000 Subject: [PATCH] - updated from http://gcc.gnu.org/ml/gcc-patches/2007-01/msg00671.html Changed files: gcc-pr20218.patch -> 1.8 --- gcc-pr20218.patch | 86 ++++++++++++++++++++++++++++++++--------------- 1 file changed, 58 insertions(+), 28 deletions(-) diff --git a/gcc-pr20218.patch b/gcc-pr20218.patch index 24d677e..ecc9590 100644 --- a/gcc-pr20218.patch +++ b/gcc-pr20218.patch @@ -1,9 +1,11 @@ -2006-12-06 H.J. Lu +2006-12-07 H.J. Lu + Backport from mainline: + 2006-12-11 H.J. Lu PR middle-end/17982 PR middle-end/20218 - * cgraphunit.c (cgraph_optimize): Don't call - process_pending_assemble_externals for ELF targets. + * cgraphunit.c (cgraph_optimize): Remove call to + process_pending_assemble_externals. * config/elfos.h (ASM_OUTPUT_EXTERNAL): New. @@ -19,27 +21,26 @@ (default_elf_asm_output_external): New. (maybe_assemble_visibility): New. - * varasm.c (maybe_assemble_visibility): Make it extern and - return int. + * toplev.c (compile_file): Update comment. + + * varasm.c (assemble_external): Always put it on + pending_assemble_externals. + (maybe_assemble_visibility): Make it extern and return int. (default_elf_asm_output_external): New. ---- gcc/cgraphunit.c.global 2006-12-02 09:32:10.000000000 -0800 -+++ gcc/cgraphunit.c 2006-12-06 06:10:58.000000000 -0800 -@@ -1536,7 +1536,12 @@ cgraph_optimize (void) +--- gcc/cgraphunit.c.global 2006-12-07 05:45:18.000000000 -0800 ++++ gcc/cgraphunit.c 2006-12-07 05:47:22.000000000 -0800 +@@ -1536,8 +1536,6 @@ cgraph_optimize (void) return; } -+ /* FIXME: For ELF targets, we want to process undefined symbols later -+ so that we can check if they are referenced or not. Should we do -+ the same for all targets? */ -+#ifndef OBJECT_FORMAT_ELF - process_pending_assemble_externals (); -+#endif - +- process_pending_assemble_externals (); +- /* Frontend may output common variables after the unit has been finalized. It is safe to deal with them here as they are always zero initialized. */ ---- gcc/config/elfos.h.global 2006-12-02 09:32:10.000000000 -0800 -+++ gcc/config/elfos.h 2006-12-05 15:16:22.000000000 -0800 + cgraph_varpool_analyze_pending_decls (); +--- gcc/config/elfos.h.global 2006-11-30 12:45:20.000000000 -0800 ++++ gcc/config/elfos.h 2006-12-07 05:47:22.000000000 -0800 @@ -499,3 +499,13 @@ Boston, MA 02110-1301, USA. */ fprintf ((FILE), "\"\n"); \ } \ @@ -54,8 +55,8 @@ +#define ASM_OUTPUT_EXTERNAL(FILE, DECL, NAME) \ + default_elf_asm_output_external (FILE, DECL, NAME) +#endif ---- gcc/config/ia64/hpux.h.global 2006-10-27 10:09:07.000000000 -0700 -+++ gcc/config/ia64/hpux.h 2006-12-05 15:16:22.000000000 -0800 +--- gcc/config/ia64/hpux.h.global 2006-10-29 17:03:12.000000000 -0800 ++++ gcc/config/ia64/hpux.h 2006-12-07 05:47:22.000000000 -0800 @@ -144,10 +144,6 @@ do { \ definitions, so do not use them in gthr-posix.h. */ #define GTHREAD_USE_WEAK 0 @@ -67,8 +68,8 @@ #undef CTORS_SECTION_ASM_OP #define CTORS_SECTION_ASM_OP "\t.section\t.init_array,\t\"aw\",\"init_array\"" ---- gcc/config/ia64/ia64.c.global 2006-11-16 09:57:21.000000000 -0800 -+++ gcc/config/ia64/ia64.c 2006-12-05 15:16:22.000000000 -0800 +--- gcc/config/ia64/ia64.c.global 2006-12-07 05:45:17.000000000 -0800 ++++ gcc/config/ia64/ia64.c 2006-12-07 05:47:22.000000000 -0800 @@ -255,10 +255,6 @@ static section *ia64_rwreloc_select_rtx_ unsigned HOST_WIDE_INT) ATTRIBUTE_UNUSED; @@ -210,8 +211,8 @@ } /* Set SImode div/mod functions, init_integral_libfuncs only initializes ---- gcc/output.h.global 2006-10-17 07:32:38.000000000 -0700 -+++ gcc/output.h 2006-12-05 15:16:22.000000000 -0800 +--- gcc/output.h.global 2006-10-21 13:45:54.000000000 -0700 ++++ gcc/output.h 2006-12-07 05:47:22.000000000 -0800 @@ -204,9 +204,9 @@ extern void assemble_variable (tree, int DONT_OUTPUT_DATA is from assemble_variable. */ extern void align_variable (tree decl, bool dont_output_data); @@ -236,8 +237,21 @@ extern int default_address_cost (rtx); /* dbxout helper functions */ ---- gcc/varasm.c.global 2006-10-17 07:32:38.000000000 -0700 -+++ gcc/varasm.c 2006-12-06 06:05:43.000000000 -0800 +--- gcc/toplev.c.global 2006-12-07 05:45:18.000000000 -0800 ++++ gcc/toplev.c 2006-12-07 05:58:23.000000000 -0800 +@@ -1076,9 +1076,7 @@ compile_file (void) + + dw2_output_indirect_constants (); + +- /* Flush any pending external directives. cgraph did this for +- assemble_external calls from the front end, but the RTL +- expander can also generate them. */ ++ /* Flush any pending external directives. */ + process_pending_assemble_externals (); + + /* Attach a special .ident directive to the end of the file to identify +--- gcc/varasm.c.global 2006-12-07 05:45:18.000000000 -0800 ++++ gcc/varasm.c 2006-12-07 05:49:16.000000000 -0800 @@ -126,7 +126,6 @@ static unsigned HOST_WIDE_INT array_size static unsigned min_align (unsigned, unsigned); static void output_constructor (tree, unsigned HOST_WIDE_INT, unsigned int); @@ -246,7 +260,23 @@ #ifdef BSS_SECTION_ASM_OP #ifdef ASM_OUTPUT_BSS static void asm_output_bss (FILE *, tree, const char *, -@@ -5071,13 +5070,18 @@ default_assemble_visibility (tree decl, +@@ -1964,11 +1963,10 @@ assemble_external (tree decl ATTRIBUTE_U + if (!DECL_P (decl) || !DECL_EXTERNAL (decl) || !TREE_PUBLIC (decl)) + return; + +- if (flag_unit_at_a_time) +- pending_assemble_externals = tree_cons (0, decl, +- pending_assemble_externals); +- else +- assemble_external_real (decl); ++ /* We want to output external symbols at very last to check if they ++ are references or not. */ ++ pending_assemble_externals = tree_cons (0, decl, ++ pending_assemble_externals); + #endif + } + +@@ -5071,13 +5069,18 @@ default_assemble_visibility (tree decl, /* A helper function to call assemble_visibility when needed for a decl. */ @@ -267,8 +297,8 @@ } /* Returns 1 if the target configuration supports defining public symbols -@@ -6226,4 +6230,19 @@ output_object_blocks (void) - htab_traverse (object_block_htab, output_object_block_htab, NULL); +@@ -6327,4 +6330,19 @@ elf_record_gcc_switches (print_switch_ty + return 0; } +/* Emit text to declare externally defined symbols. It is needed to -- 2.44.0