passes.c (rest_of_decl_compilation): Guard early_global_decl call with !seen_error ().
authorRichard Biener <rguenther@suse.de>
Thu, 27 Aug 2015 13:27:02 +0000 (13:27 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Thu, 27 Aug 2015 13:27:02 +0000 (13:27 +0000)
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

gcc/ChangeLog
gcc/cgraphunit.c
gcc/passes.c

index 6809668597f591611fc426131073ae810e95ec37..0934bff54359ca1be4e1067f13bcff7f9bffdc90 100644 (file)
@@ -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
index a95ce9ee1fc1e48cde9784f7b674b25f0af50655..cdec63bc60a6928dd0485fdbb44b140f5a741a82 100644 (file)
@@ -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 ();
 
index d8e9271fa89b2922b06632a8513a17d5849fc685..1b677ac5a67ee373912844a705a4a6f5a3e18c4b 100644 (file)
@@ -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);
 }