This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH] Guard early debug generation with !seen_errors ()
- From: Richard Biener <rguenther at suse dot de>
- To: gcc-patches at gcc dot gnu dot org
- Date: Thu, 27 Aug 2015 14:47:32 +0200 (CEST)
- Subject: [PATCH] Guard early debug generation with !seen_errors ()
- Authentication-results: sourceware.org; auth=none
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 ();