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]

[PATCH] Guard early debug generation with !seen_errors ()


This is already done for the TYPE_DECL case, the following avoids
trying to generate any debug after we've seen errors for the
calls to early_global_decl.

Bootstrapped on x86_64-unknown-linux-gnu, testing and gdb testing in 
progress.

Richard.

2015-08-27  Richard Biener  <rguenther@suse.de>

	* passes.c (rest_of_decl_compilation): Guard early_global_decl
	call with !seen_error ().
	* cgraphunit.c (symbol_table::finalize_compilation_unit): Move
	early debug generation and finish...
	(symbol_table::compile): ... here to put it after a !seen_error ()
	guard.

Index: gcc/passes.c
===================================================================
--- gcc/passes.c	(revision 227257)
+++ gcc/passes.c	(working copy)
@@ -318,7 +318,10 @@ rest_of_decl_compilation (tree decl,
       && !decl_function_context (decl)
       && !current_function_decl
       && DECL_SOURCE_LOCATION (decl) != BUILTINS_LOCATION
-      && !decl_type_context (decl))
+      && !decl_type_context (decl)
+      /* Avoid confusing the debug information machinery when there are
+	 errors.  */
+      && !seen_error ())
     (*debug_hooks->early_global_decl) (decl);
 }
 
Index: gcc/cgraphunit.c
===================================================================
--- gcc/cgraphunit.c	(revision 227257)
+++ gcc/cgraphunit.c	(working copy)
@@ -2314,6 +2314,16 @@ symbol_table::compile (void)
   symtab_node::verify_symtab_nodes ();
 #endif
 
+  /* Emit early debug for reachable functions, and by consequence,
+     locally scoped symbols.  */
+  struct cgraph_node *cnode;
+  FOR_EACH_FUNCTION_WITH_GIMPLE_BODY (cnode)
+    (*debug_hooks->early_global_decl) (cnode->decl);
+
+  /* Clean up anything that needs cleaning up after initial debug
+     generation.  */
+  (*debug_hooks->early_finish) ();
+
   timevar_push (TV_CGRAPHOPT);
   if (pre_ipa_mem_report)
     {
@@ -2482,16 +2492,6 @@ symbol_table::finalize_compilation_unit
   /* Gimplify and lower thunks.  */
   analyze_functions (/*first_time=*/false);
 
-  /* Emit early debug for reachable functions, and by consequence,
-     locally scoped symbols.  */
-  struct cgraph_node *cnode;
-  FOR_EACH_FUNCTION_WITH_GIMPLE_BODY (cnode)
-    (*debug_hooks->early_global_decl) (cnode->decl);
-
-  /* Clean up anything that needs cleaning up after initial debug
-     generation.  */
-  (*debug_hooks->early_finish) ();
-
   /* Finally drive the pass manager.  */
   compile ();
 


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