re PR middle-end/58179 (obj_type_ref ICE building libobjc)
authorJan Hubicka <jh@suse.cz>
Sat, 17 Aug 2013 18:14:18 +0000 (20:14 +0200)
committerJan Hubicka <hubicka@gcc.gnu.org>
Sat, 17 Aug 2013 18:14:18 +0000 (18:14 +0000)
PR middle-end/58179
* tree.c (obj_type_ref_class): Do not ICE on non-method calls.

From-SVN: r201817

gcc/ChangeLog
gcc/tree.c

index 66048e1..6462a05 100644 (file)
@@ -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 9480c73..8b4d865 100644 (file)
@@ -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);