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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
     Ever confirmed|0                           |1
           Keywords|                            |ice-on-invalid-code
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2021-04-29

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
Confirmed.

#0  0x0000000000d66842 in cp_parser_pragma_unroll (parser=0x7ffff65977b8, 
    pragma_tok=0x7ffff7f2f0c8)
    at /home/rguenther/src/gcc3/gcc/cp/parser.c:44896
44896     if (!INTEGRAL_TYPE_P (TREE_TYPE (expr))
(gdb) l
44891     location_t location = cp_lexer_peek_token (parser->lexer)->location;
44892     tree expr = cp_parser_constant_expression (parser);
44893     unsigned short unroll;
44894     expr = maybe_constant_value (expr);
44895     HOST_WIDE_INT lunroll = 0;
44896     if (!INTEGRAL_TYPE_P (TREE_TYPE (expr))
44897         || TREE_CODE (expr) != INTEGER_CST
44898         || (lunroll = tree_to_shwi (expr)) < 0
44899         || lunroll >= USHRT_MAX)
44900       {
(gdb) p debug_tree (expr)
 <call_expr 0x7ffff66dc990
    fn <parm_decl 0x7ffff66de000 v
        type <template_type_parm 0x7ffff66ccf18 T type_0 type_6 VOID
            align:8 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type
0x7ffff66ccf18
           index 0 level 1 orig_level 1
            chain <type_decl 0x7ffff6597850 T>>
        used VOID t.ii:1:31
        align:8 warn_if_not_align:0 context <function_decl 0x7ffff66cde00 f>>
    t.ii:2:25 start: t.ii:2:24 finish: t.ii:2:26>

so we parsed this to an invalid GENERIC CALL_EXPR with a NULL TREE_TYPE

(gdb) p expr->typed.type
$3 = <tree 0x0>

it should have at least been error_mark_node (or void_type_node).

Reply via email to