[Bug c++/68653] [6 Regression] ICE: in nonnull_arg_p, at tree.c:13853

mpolacek at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Dec 2 15:37:00 GMT 2015


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)


More information about the Gcc-bugs mailing list