https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84728
Bug ID: 84728 Summary: internal compiler error: Segmentation fault (is_gimple_variable()) Product: gcc Version: 8.0.1 Status: UNCONFIRMED Keywords: ice-on-invalid-code Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: vegard.nossum at gmail dot com CC: webrown.cpp at gmail dot com Target Milestone: --- Input: void a(int b) { asm("" : "=m" (b) : "0" (({ ; }))); } Output: $ xgcc -x c++ -S -g -O1 - <stdin>: In function 'void a(int)': <stdin>:2:37: warning: matching constraint does not allow a register <stdin>:2:37: warning: matching constraint does not allow a register <stdin>:2:31: internal compiler error: Segmentation fault 0x3152ce9 crash_signal /home/vegard/git/gcc/gcc/toplev.c:325 0x20f0ce8 is_gimple_variable /home/vegard/git/gcc/gcc/gimple-expr.h:83 0x20f0ce8 is_gimple_id /home/vegard/git/gcc/gcc/gimple-expr.h:94 0x20f0ce8 is_gimple_addressable /home/vegard/git/gcc/gcc/gimple-expr.h:121 0x20f0ce8 is_gimple_lvalue(tree_node*) /home/vegard/git/gcc/gcc/gimple-expr.c:595 0x222358a gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*), int) /home/vegard/git/gcc/gcc/gimplify.c:12355 0x2242d00 gimplify_asm_expr /home/vegard/git/gcc/gcc/gimplify.c:6289 0x2219681 gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*), int) /home/vegard/git/gcc/gcc/gimplify.c:11766 0x2228401 gimplify_stmt(tree_node**, gimple**) /home/vegard/git/gcc/gcc/gimplify.c:6658 0x221a50d gimplify_cleanup_point_expr /home/vegard/git/gcc/gcc/gimplify.c:6400 0x221a50d gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*), int) /home/vegard/git/gcc/gcc/gimplify.c:11811 0x2228401 gimplify_stmt(tree_node**, gimple**) /home/vegard/git/gcc/gcc/gimplify.c:6658 0x221bc6b gimplify_statement_list /home/vegard/git/gcc/gcc/gimplify.c:1767 0x221bc6b gimplify_expr(tree_node**, gimple**, gimple**, bool (*)(tree_node*), int) /home/vegard/git/gcc/gcc/gimplify.c:11863 0x2228401 gimplify_stmt(tree_node**, gimple**) /home/vegard/git/gcc/gcc/gimplify.c:6658 0x22316c9 gimplify_body(tree_node*, bool) /home/vegard/git/gcc/gcc/gimplify.c:12635 0x2233a20 gimplify_function_tree(tree_node*) /home/vegard/git/gcc/gcc/gimplify.c:12800 0x199ff87 cgraph_node::analyze() /home/vegard/git/gcc/gcc/cgraphunit.c:670 0x19b305b analyze_functions /home/vegard/git/gcc/gcc/cgraphunit.c:1131 0x19b7d71 symbol_table::finalize_compilation_unit() /home/vegard/git/gcc/gcc/cgraphunit.c:2691 $ xgcc --version xgcc (GCC) 8.0.1 20180306 (experimental) Built from git 11a93d7a09b871b3b9a2eb108eb91ad83d94e070 (r258271). 7.3.0 fails more gracefully with: <source>: In function 'void a(int)': <source>:2:37: warning: matching constraint does not allow a register asm("" : "=m" (b) : "0" (({ ; }))); ^ <source>:2:37: warning: matching constraint does not allow a register <source>:2:37: error: memory input 1 is not directly addressable Compiler returned: 1 Test case was minimised by C-Reduce.