This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [patch] diagnostics branch


> Note that init_eh is called during early initialization, where
> current_function_decl is not yet set up.  This causes a crash
> due to NULL pointer access here ...

Ah, I see.

In that case, this should fix it.

This is an obviously correct patch, which I will commit when I'm done
with a bootstrap.

Thanks for pin-pointing this for me.

Aldy

	* except.c (init_eh): Use BUILTINS_LOCATION when calling build_decl.

Index: except.c
===================================================================
--- except.c	(revision 148490)
+++ except.c	(working copy)
@@ -221,12 +221,12 @@ init_eh (void)
 
       sjlj_fc_type_node = lang_hooks.types.make_type (RECORD_TYPE);
 
-      f_prev = build_decl (DECL_SOURCE_LOCATION (current_function_decl),
+      f_prev = build_decl (BUILTINS_LOCATION,
 			   FIELD_DECL, get_identifier ("__prev"),
 			   build_pointer_type (sjlj_fc_type_node));
       DECL_FIELD_CONTEXT (f_prev) = sjlj_fc_type_node;
 
-      f_cs = build_decl (DECL_SOURCE_LOCATION (current_function_decl),
+      f_cs = build_decl (BUILTINS_LOCATION,
 			 FIELD_DECL, get_identifier ("__call_site"),
 			 integer_type_node);
       DECL_FIELD_CONTEXT (f_cs) = sjlj_fc_type_node;
@@ -235,16 +235,16 @@ init_eh (void)
       tmp = build_array_type (lang_hooks.types.type_for_mode
 				(targetm.unwind_word_mode (), 1),
 			      tmp);
-      f_data = build_decl (DECL_SOURCE_LOCATION (current_function_decl),
+      f_data = build_decl (BUILTINS_LOCATION,
 			   FIELD_DECL, get_identifier ("__data"), tmp);
       DECL_FIELD_CONTEXT (f_data) = sjlj_fc_type_node;
 
-      f_per = build_decl (DECL_SOURCE_LOCATION (current_function_decl),
+      f_per = build_decl (BUILTINS_LOCATION,
 			  FIELD_DECL, get_identifier ("__personality"),
 			  ptr_type_node);
       DECL_FIELD_CONTEXT (f_per) = sjlj_fc_type_node;
 
-      f_lsda = build_decl (DECL_SOURCE_LOCATION (current_function_decl),
+      f_lsda = build_decl (BUILTINS_LOCATION,
 			   FIELD_DECL, get_identifier ("__lsda"),
 			   ptr_type_node);
       DECL_FIELD_CONTEXT (f_lsda) = sjlj_fc_type_node;
@@ -265,7 +265,7 @@ init_eh (void)
 #endif
       tmp = build_index_type (tmp);
       tmp = build_array_type (ptr_type_node, tmp);
-      f_jbuf = build_decl (DECL_SOURCE_LOCATION (current_function_decl),
+      f_jbuf = build_decl (BUILTINS_LOCATION,
 			   FIELD_DECL, get_identifier ("__jbuf"), tmp);
 #ifdef DONT_USE_BUILTIN_SETJMP
       /* We don't know what the alignment requirements of the


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]