https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64947
Tobias Burnus <burnus at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |ice-on-valid-code Status|UNCONFIRMED |NEW Last reconfirmed| |2015-02-05 CC| |burnus at gcc dot gnu.org Ever confirmed|0 |1 Known to fail| |4.8.3, 4.9.0, 5.0 --- Comment #2 from Tobias Burnus <burnus at gcc dot gnu.org> --- If fails for: 8837 gcc_assert (!VOID_TYPE_P (TREE_TYPE (*expr_p))); which is: (gdb) p debug_tree(*expr_p) <mem_ref 0x7ffff20f8ca8 type <void_type 0x7ffff1f4c000 void VOID align 8 symtab 0 alias set -1 canonical type 0x7ffff1f4c000 pointer_to_this <pointer_type 0x7ffff1f4c150>> arg 0 <var_decl 0x7ffff1f3cc60 D.3415 type <pointer_type 0x7ffff1f4c150 type <void_type 0x7ffff1f4c000 void> [...] arg 1 <integer_cst 0x7ffff1f31fd8 type <pointer_type 0x7ffff1f4c150> constant 0> foo.f90:40:0> The variable mentioned appears in the void * D.3415; D.3415 = (*strings)[0]; D.3417 = strnlen (*D.3415, 40); c_string (&pstr.1, MAX_EXPR <(integer(kind=4)) D.3417, 0>, D.3415); And the problem is that the TREE_TYPE (*expr_p) _is_ a void pointer.