------- Additional Comments From rth at gcc dot gnu dot org  2005-02-10 01:59 
-------
Not a reload bug.  RTL state gets mangled by pop_function_context_from 
called underneath mangle_decl_string.  We may be able to work around this
problem like so, but I'm still not certain that we're not borking something.
This can only be truely fixed by not doing such gross push/pop state 
changes within the c++ front end.



Index: passes.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/passes.c,v
retrieving revision 2.65
diff -u -p -d -r2.65 passes.c
--- passes.c    1 Feb 2005 10:03:09 -0000       2.65
+++ passes.c    10 Feb 2005 01:57:18 -0000
@@ -1530,6 +1530,12 @@ rest_of_compilation (void)
   if (rtl_dump_and_exit || flag_syntax_only || errorcount || sorrycount)
     goto exit_rest_of_compilation;

+  /* Make sure rtl for the current function is set at this point.  This
+     may recurse in "interesting" ways for c++, which can hork passes.
+     It is 100% certain that we'll need this rtl, so this does not cause
+     extra work.  */
+  (void) DECL_RTL (current_function_decl);
+
   rest_of_handle_jump ();

   rest_of_handle_eh ();


-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |rth at gcc dot gnu dot org
         AssignedTo|rth at gcc dot gnu dot org  |unassigned at gcc dot gnu
                   |                            |dot org
             Status|ASSIGNED                    |NEW
          Component|target                      |c++


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

Reply via email to