summaryrefslogtreecommitdiff
path: root/gcc/cgraphunit.c
diff options
context:
space:
mode:
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2015-08-28 07:47:37 +0000
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2015-08-28 07:47:37 +0000
commit68f04316eb748568183a612db8461dd7e57fd49e (patch)
treec32e036fe086ac08df078f6e0ffa56d232e30645 /gcc/cgraphunit.c
parent76402908846f403a12cb44880219f4f1abea8a50 (diff)
downloadgcc-68f04316eb748568183a612db8461dd7e57fd49e.tar.gz
2015-08-28 Richard Biener <rguenther@suse.de>
* cgraphunit.c (symbol_table::compile): Move early debug generation and finish... (symbol_table::finalize_compilation_unit): ... back here and add a !seen_error () guard. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@227293 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cgraphunit.c')
-rw-r--r--gcc/cgraphunit.c23
1 files changed, 13 insertions, 10 deletions
diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c
index cdec63bc60a..be16f5d0d04 100644
--- a/gcc/cgraphunit.c
+++ b/gcc/cgraphunit.c
@@ -2314,16 +2314,6 @@ 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)
{
@@ -2492,6 +2482,19 @@ symbol_table::finalize_compilation_unit (void)
/* Gimplify and lower thunks. */
analyze_functions (/*first_time=*/false);
+ if (!seen_error ())
+ {
+ /* 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 ();