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]

[PATCH] Fix PR41430


I forgot about obj-c++ with the EH personality rewrite.  Fixed as
follows, tested on x86_64-unknown-linux-gnu, applied.

Richard.

2009-09-22  Richard Guenther  <rguenther@suse.de>

	PR objc++/41430
	* Make-lang.in (objcp-lang.o): Add $(EXCEPT_H) dependency.
	* objcp-lang.c (LANG_HOOKS_EH_PERSONALITY): Define.
	(LANG_HOOKS_EH_RUNTIME_TYPE): Likewise.
	(objcxx_eh_personality): New function.

Index: gcc/objcp/Make-lang.in
===================================================================
*** gcc/objcp/Make-lang.in	(revision 151977)
--- gcc/objcp/Make-lang.in	(working copy)
*************** cc1objplus$(exeext): $(OBJCXX_OBJS) cc1o
*** 72,78 ****
  objcp/objcp-lang.o : objcp/objcp-lang.c \
    $(CXX_TREE_H) $(TM_H) toplev.h debug.h langhooks.h objc/objc-act.h \
    $(LANGHOOKS_DEF_H) $(C_COMMON_H) gtype-objcp.h \
!   $(DIAGNOSTIC_H) cp/cp-objcp-common.h $(GIMPLE_H)
  
  objcp/objcp-decl.o : objcp/objcp-decl.c \
     $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) $(C_TREE_H) \
--- 72,78 ----
  objcp/objcp-lang.o : objcp/objcp-lang.c \
    $(CXX_TREE_H) $(TM_H) toplev.h debug.h langhooks.h objc/objc-act.h \
    $(LANGHOOKS_DEF_H) $(C_COMMON_H) gtype-objcp.h \
!   $(DIAGNOSTIC_H) cp/cp-objcp-common.h $(GIMPLE_H) $(EXCEPT_H)
  
  objcp/objcp-decl.o : objcp/objcp-decl.c \
     $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) $(C_TREE_H) \
Index: gcc/objcp/objcp-lang.c
===================================================================
*** gcc/objcp/objcp-lang.c	(revision 151977)
--- gcc/objcp/objcp-lang.c	(working copy)
*************** along with GCC; see the file COPYING3.
*** 33,41 ****
--- 33,43 ----
  #include "diagnostic.h"
  #include "debug.h"
  #include "cp-objcp-common.h"
+ #include "except.h"
  
  enum c_language_kind c_language = clk_objcxx;
  static void objcxx_init_ts (void);
+ static tree objcxx_eh_personality (void);
  
  /* Lang hooks common to C++ and ObjC++ are declared in cp/cp-objcp-common.h;
     consequently, there should be very few hooks below.  */
*************** static void objcxx_init_ts (void);
*** 50,55 ****
--- 52,61 ----
  #define LANG_HOOKS_GIMPLIFY_EXPR objc_gimplify_expr
  #undef LANG_HOOKS_INIT_TS
  #define LANG_HOOKS_INIT_TS objcxx_init_ts
+ #undef LANG_HOOKS_EH_PERSONALITY
+ #define LANG_HOOKS_EH_PERSONALITY objcxx_eh_personality
+ #undef LANG_HOOKS_EH_RUNTIME_TYPE
+ #define LANG_HOOKS_EH_RUNTIME_TYPE build_eh_type_type
  
  /* Each front end provides its own lang hook initializer.  */
  struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER;
*************** objcxx_init_ts (void)
*** 138,143 ****
--- 144,163 ----
    init_shadowed_var_for_decl ();
  }
  
+ static GTY(()) tree objcp_eh_personality_decl;
+ 
+ static tree
+ objcxx_eh_personality (void)
+ {
+   if (!objcp_eh_personality_decl)
+     objcp_eh_personality_decl
+ 	= build_personality_function (USING_SJLJ_EXCEPTIONS
+ 				      ? "__gxx_personality_sj0"
+ 				      : "__gxx_personality_v0");
+ 
+   return objcp_eh_personality_decl;
+ }
+ 
  
  void
  finish_file (void)


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