This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [RFC] Fix for PR58201


Hi,
this is the patch I commited after testing on x86_64-linux.

Honza

Index: ChangeLog
===================================================================
*** ChangeLog	(revision 202271)
--- ChangeLog	(working copy)
***************
*** 1,3 ****
--- 1,9 ----
+ 2013-09-04  Jan Hubicka  <jh@suse.cz>
+ 
+ 	PR middle-end/58201
+ 	* cgraphunit.c (analyze_functions): Clear AUX fields
+ 	after processing; initialize assembler name has.
+ 
  2013-09-04  Dodji Seketeli  <dodji@redhat.com>
  
  	* tree.h (DECL_BUILT_IN): Fix typo in comment.
Index: cgraphunit.c
===================================================================
*** cgraphunit.c	(revision 202271)
--- cgraphunit.c	(working copy)
*************** analyze_functions (void)
*** 1064,1069 ****
--- 1064,1071 ----
  	}
        node->symbol.aux = NULL;
      }
+   for (;node; node = node->symbol.next)
+     node->symbol.aux = NULL;
    first_analyzed = cgraph_first_function ();
    first_analyzed_var = varpool_first_variable ();
    if (cgraph_dump_file)
*************** analyze_functions (void)
*** 1074,1079 ****
--- 1076,1086 ----
    bitmap_obstack_release (NULL);
    pointer_set_destroy (reachable_call_targets);
    ggc_collect ();
+   /* Initialize assembler name hash, in particular we want to trigger C++
+      mangling and same body alias creation before we free DECL_ARGUMENTS
+      used by it.  */
+   if (!seen_error ())
+   symtab_initialize_asm_name_hash ();
  }
  
  /* Translate the ugly representation of aliases as alias pairs into nice
Index: testsuite/ChangeLog
===================================================================
*** testsuite/ChangeLog	(revision 202297)
--- testsuite/ChangeLog	(working copy)
***************
*** 1,3 ****
--- 1,10 ----
+ 2013-09-04  Jan Hubicka  <jh@suse.cz>
+ 
+ 	PR middle-end/58201
+ 	* g++.dg/torture/pr58201_0.C: New testcase.
+ 	* g++.dg/torture/pr58201_1.C: New testcase.
+ 	* g++.dg/torture/pr58201.h: New testcase.
+ 
  2013-09-05  Jan Hubicka  <jh@suse.cz>
  
  	* gcc.dg/autopar/pr49960.c: Disable partial inlining
Index: testsuite/g++.dg/torture/pr58201_0.C
===================================================================
*** testsuite/g++.dg/torture/pr58201_0.C	(revision 0)
--- testsuite/g++.dg/torture/pr58201_0.C	(revision 0)
***************
*** 0 ****
--- 1,9 ----
+ #include "pr58201.h"    
+                     
+ C::C2::C2(){ }      
+ C::C2::~C2() { }    
+                     
+ int main ()         
+ {                   
+     return 0;       
+ }  
Index: testsuite/g++.dg/torture/pr58201_1.C
===================================================================
*** testsuite/g++.dg/torture/pr58201_1.C	(revision 0)
--- testsuite/g++.dg/torture/pr58201_1.C	(revision 0)
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do link } */
+ /* { dg-options "-O2" } */
+ /* { dg-additional-sources "pr58201_0.C" } */
+ #include "pr58201.h"
+ 
+ A::A() { }
+ A::~A() { }
+ B::B() { }
+ B::~B() { }
+ 
Index: testsuite/g++.dg/torture/pr58201.h
===================================================================
*** testsuite/g++.dg/torture/pr58201.h	(revision 0)
--- testsuite/g++.dg/torture/pr58201.h	(revision 0)
***************
*** 0 ****
--- 1,24 ----
+ class A
+ {
+  protected:
+   A();
+   virtual ~A();
+ };
+ 
+ class B : virtual public A
+ {
+  public:
+   B();
+   virtual ~B();
+ };
+ 
+ class C
+ {
+  private:
+   class C2 : public B
+    {
+    public:
+      C2();
+      virtual ~C2();
+    };
+ };


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]