diff options
author | Richard Biener <rguenther@suse.de> | 2015-08-27 13:27:02 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2015-08-27 13:27:02 +0000 |
commit | f11cd82983ce681fd1f6bd232abcc91297d4e855 (patch) | |
tree | 6c8e4c2a30c588f67e6c553245819e9a7c0d4173 | |
parent | a98e4e62c1c0c8570c7db321e3c8a2a7c2336c60 (diff) | |
download | gcc-f11cd82983ce681fd1f6bd232abcc91297d4e855.zip gcc-f11cd82983ce681fd1f6bd232abcc91297d4e855.tar.gz gcc-f11cd82983ce681fd1f6bd232abcc91297d4e855.tar.bz2 |
passes.c (rest_of_decl_compilation): Guard early_global_decl call with !seen_error ().
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.
From-SVN: r227258
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/cgraphunit.c | 20 | ||||
-rw-r--r-- | gcc/passes.c | 5 |
3 files changed, 23 insertions, 11 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6809668..0934bff 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +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. + 2015-08-27 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> * config.gcc (*-*-solaris2*): Enable default_use_cxa_atexit on diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c index a95ce9e..cdec63b 100644 --- a/gcc/cgraphunit.c +++ b/gcc/cgraphunit.c @@ -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 (void) /* 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 (); diff --git a/gcc/passes.c b/gcc/passes.c index d8e9271..1b677ac 100644 --- a/gcc/passes.c +++ b/gcc/passes.c @@ -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); } |