From 671a5ec0216de1a8deadf8df9f2db834b29b7fb2 Mon Sep 17 00:00:00 2001 From: hubicka Date: Sat, 17 Aug 2013 18:14:18 +0000 Subject: [PATCH] PR middle-end/58179 * tree.c (obj_type_ref_class): Do not ICE on non-method calls. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@201817 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 5 +++++ gcc/tree.c | 6 +++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 66048e115228..6462a0559be5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2013-08-16 Jan Hubicka + + PR middle-end/58179 + * tree.c (obj_type_ref_class): Do not ICE on non-method calls. + 2013-08-16 David Edelsohn * config/rs6000/rs6000.md (rs6000_get_timebase_ppc32): Add length diff --git a/gcc/tree.c b/gcc/tree.c index 9480c7308dac..8b4d86585bbd 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -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); -- 2.47.2