https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84724
Bug ID: 84724 Summary: internal compiler error: in single_succ_edge, at basic-block.h:339 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: int __builtin_trap(); int a() { int b; int c(&b); return b %= b ? c : 0; } Output: $ xgcc -x c++ -O3 -fpermissive -fno-toplevel-reorder -S - <stdin>:1:5: warning: new declaration 'int __builtin_trap()' ambiguates built-in declaration 'void __builtin_trap()' [-Wbuiltin-declaration-mismatch] <stdin>: In function 'int a()': <stdin>:5:9: warning: invalid conversion from 'int*' to 'int' [-fpermissive] <stdin>:3:5: error: wrong outgoing edge flags at end of bb 4 during GIMPLE pass: isolate-paths <stdin>:3:5: internal compiler error: in single_succ_edge, at basic-block.h:339 0x32700db single_succ_edge /home/vegard/git/gcc/gcc/basic-block.h:339 0x328b157 single_succ /home/vegard/git/gcc/gcc/basic-block.h:359 0x328b157 gimple_verify_flow_info /home/vegard/git/gcc/gcc/tree-cfg.c:5792 0x185db91 verify_flow_info() /home/vegard/git/gcc/gcc/cfghooks.c:263 0x33140ac checking_verify_flow_info /home/vegard/git/gcc/gcc/cfghooks.h:198 0x33140ac cleanup_tree_cfg_noloop /home/vegard/git/gcc/gcc/tree-cfgcleanup.c:920 0x33140ac cleanup_tree_cfg() /home/vegard/git/gcc/gcc/tree-cfgcleanup.c:971 0x2b6aaa4 execute_function_todo /home/vegard/git/gcc/gcc/passes.c:1947 0x2b73d16 do_per_function /home/vegard/git/gcc/gcc/passes.c:1659 0x2b73d16 execute_todo /home/vegard/git/gcc/gcc/passes.c:2048 $ xgcc --version xgcc (GCC) 8.0.1 20180303 (experimental) Built from git 0d86c284d085d29782d862600a79aa1ff0ee0c47 (r258221). 7.3.0 fails differently: <source>:3:5: internal compiler error: in expand_gimple_basic_block, at cfgexpand.c:5457 6.3.0 apparently succeeds in compiling it. Test case was minimised by C-Reduce.