[Bug c++/19797] [4.0 Regression] g++.dg/abi/inline1.C fails on hppa*-*-hpux*

danglin at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Sun Feb 13 17:41:00 GMT 2005


------- Additional Comments From danglin at gcc dot gnu dot org  2005-02-13 01:44 -------
1) In the past, we haven't worried about the presence of unnecessary
   .IMPORT directives as they are harmless.  There are several places
   in the testsuite where we work around this problem.

2) I don't believe that putting this fix in the PA backend is the best
   fix.  In December, Zack introduced a mechanism to defer emission of
   assemble externals:

2004-12-08  Zack Weinberg  <zack@codesourcery.com>

        PR 17982
        * varasm.c (pending_assemble_externals): New static.
        (assemble_external_real): Meat of assemble_external split out
        to this new function.
        (process_pending_assemble_externals): New function.
        (assemble_external): Use gcc_assert.  If flag_unit_at_a_time
        is true and the basic test passes, merely cons the decl onto
        the pending list to be handled later.
        * tree.h: Declare process_pending_assemble_externals.
        * cgraphunit.c (cgraph_optimize): Call it.

   Thus, we are adding a hppa fix on top of an ia64 fix to the main code.

   I proposed a backend fix for an AIX problem with respect to assemble
   output defines.  Again, the fix was to defer emission of the output
   defines until the file end.  David Edelsohn I think rightly objected
   that this fix was too invasive and ultimately a fix to the main code
   body was accepted:

2005-01-16  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

        PR target/16304
        * defaults.h (TARGET_DEFERRED_OUTPUT_DEFS): Provide default.
        * toplev.c (compile_file): Call process_pending_assemble_output_defs
        just before targetm.asm_out.file_end.
        * tree.h (process_pending_assemble_output_defs): Declare.
        * varasm.c (assemble_output_def, process_pending_assemble_output_defs):
        New functions.
        (assemble_alias): Defer generation of assembly code for defines when
        TARGET_DEFERRED_OUTPUT_DEFS is true.
        * config/rs6000/aix41.h (TARGET_DEFERRED_OUTPUT_DEFS): Define.
        * config/rs6000/aix43.h (TARGET_DEFERRED_OUTPUT_DEFS): Define.
        * doc/tm.texi (TARGET_DEFERRED_OUTPUT_DEFS): document.

   On the mainline, this fix used Nathan's vector support which Mark
   was keen to support.

3) I'm concerned that the proposed fix requires a linker fix.  There won't
   be a fix for HP-UX 10 and possibly 11.00.  There's still interest in these
   system versions for a number of older machines that are still in fairly
   wide use.  


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19797



More information about the Gcc-bugs mailing list