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: Fix class type lookup from OBJ_TYPE_REF


Hi,
this is the patch I comitted after testing.
My apologizes for the breakage.

Honza

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 201816)
+++ ChangeLog	(working copy)
@@ -1,3 +1,8 @@
+2013-08-16  Jan Hubicka  <jh@suse.cz>
+
+	PR middle-end/58179
+	* tree.c (obj_type_ref_class): Do not ICE on non-method calls.
+
 2013-08-16  David Edelsohn  <dje.gcc@gmail.com>
 
 	* config/rs6000/rs6000.md (rs6000_get_timebase_ppc32): Add length
Index: tree.c
===================================================================
--- tree.c	(revision 201814)
+++ tree.c	(working copy)
@@ -11873,7 +11873,11 @@ obj_type_ref_class (tree ref)
   ref = TREE_TYPE (ref);
   gcc_checking_assert (TREE_CODE (ref) == POINTER_TYPE);
   ref = TREE_TYPE (ref);
-  gcc_checking_assert (TREE_CODE (ref) == METHOD_TYPE);
+  /* We look for type THIS points to.  ObjC also builds
+     OBJ_TYPE_REF with non-method calls, Their first parameter
+     ID however also corresponds to class type. */
+  gcc_checking_assert (TREE_CODE (ref) == METHOD_TYPE
+		       || TREE_CODE (ref) == FUNCTION_TYPE);
   ref = TREE_VALUE (TYPE_ARG_TYPES (ref));
   gcc_checking_assert (TREE_CODE (ref) == POINTER_TYPE);
   return TREE_TYPE (ref);


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