https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68653

Marek Polacek <mpolacek at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |mpolacek at gcc dot gnu.org

--- Comment #2 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
We ICE on this assert:
  gcc_assert (TREE_CODE (arg) == PARM_DECL && POINTER_TYPE_P (TREE_TYPE
(arg)));
because the type of arg is OFFSET_TYPE.  Which is--in tree.def--described as "a
pointer relative to an object".  So I guess we should allow OFFSET_TYPEs like
this:
--- gcc/tree.c
+++ gcc/tree.c
@@ -13850,7 +13850,9 @@ nonnull_arg_p (const_tree arg)
   tree t, attrs, fntype;
   unsigned HOST_WIDE_INT arg_num;

-  gcc_assert (TREE_CODE (arg) == PARM_DECL && POINTER_TYPE_P (TREE_TYPE
(arg)));
+  gcc_assert (TREE_CODE (arg) == PARM_DECL
+             && (POINTER_TYPE_P (TREE_TYPE (arg))
+                 || TREE_CODE (TREE_TYPE (arg)) == OFFSET_TYPE));

   /* The static chain decl is always non null.  */
   if (arg == cfun->static_chain_decl)

Reply via email to