This adds an early assertion that the context of subprograms is in keeping 
with their scope, to avoid obscure segfaults later if this isn't the case.

Tested on x86_64-suse-linux, applied on the mainline.


2015-02-08  Eric Botcazou  <ebotca...@adacore.com>

        * gcc-interface/utils.c (begin_subprog_body): Assert that the body is
        present in the same context as the declaration.


-- 
Eric Botcazou
Index: gcc-interface/utils.c
===================================================================
--- gcc-interface/utils.c	(revision 220502)
+++ gcc-interface/utils.c	(working copy)
@@ -3105,6 +3105,11 @@ begin_subprog_body (tree subprog_decl)
   /* This function is being defined.  */
   TREE_STATIC (subprog_decl) = 1;
 
+  /* The failure of this assertion will likely come from a wrong context for
+     the subprogram body, e.g. another procedure for a procedure declared at
+     library level.  */
+  gcc_assert (current_function_decl == decl_function_context (subprog_decl));
+
   current_function_decl = subprog_decl;
 
   /* Enter a new binding level and show that all the parameters belong to

Reply via email to