https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84938
Bug ID: 84938 Summary: internal compiler error: in gen_reg_rtx, at emit-rtl.c:1187 (gen_reg_rtx()/maybe_legitimize_operand()) 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 &&a = 1 / ~-1ULL; Output: $ cc1plus <stdin>:1:13: warning: division by zero [-Wdiv-by-zero] Analyzing compilation unit Performing interprocedural optimizations <*free_lang_data> <visibility> <build_ssa_passes> <opt_local_passes> <targetclone> <free-fnsummary> <whole-program> <fnsummary> <inline> <free-fnsummary> <single-use> <comdats>Assembling functions: <materialize-all-clones> <simdclone><stdin>:1:21: internal compiler error: in gen_reg_rtx, at emit-rtl.c:1187 0x1d84b67 gen_reg_rtx(machine_mode) /home/vegard/git/gcc/gcc/emit-rtl.c:1187 0x2b0ee4c maybe_legitimize_operand /home/vegard/git/gcc/gcc/optabs.c:7143 0x2b0ee4c maybe_legitimize_operands(insn_code, unsigned int, unsigned int, expand_operand*) /home/vegard/git/gcc/gcc/optabs.c:7222 0x2b0ee4c maybe_gen_insn(insn_code, unsigned int, expand_operand*) /home/vegard/git/gcc/gcc/optabs.c:7240 0x2b0ee4c expand_unop_direct /home/vegard/git/gcc/gcc/optabs.c:2695 0x2b07681 expand_unop(machine_mode, optab_tag, rtx_def*, rtx_def*, int) /home/vegard/git/gcc/gcc/optabs.c:2737 0x1edee2a expand_expr_real_2(separate_ops*, rtx_def*, machine_mode, expand_modifier) /home/vegard/git/gcc/gcc/expr.c:9222 0x1e76836 expand_expr_real_1(tree_node*, rtx_def*, machine_mode, expand_modifier, rtx_def**, bool) /home/vegard/git/gcc/gcc/expr.c:11286 0x1eb0674 expand_expr_real(tree_node*, rtx_def*, machine_mode, expand_modifier, rtx_def**, bool) /home/vegard/git/gcc/gcc/expr.c:8227 0x1eb0674 expand_expr /home/vegard/git/gcc/gcc/expr.h:276 0x1eb0674 expand_operands(tree_node*, tree_node*, rtx_def*, rtx_def**, rtx_def**, expand_modifier) /home/vegard/git/gcc/gcc/expr.c:7825 0x1edc677 expand_expr_real_2(separate_ops*, rtx_def*, machine_mode, expand_modifier) /home/vegard/git/gcc/gcc/expr.c:8971 0x1e76836 expand_expr_real_1(tree_node*, rtx_def*, machine_mode, expand_modifier, rtx_def**, bool) /home/vegard/git/gcc/gcc/expr.c:11286 0x41d9f62 expand_expr /home/vegard/git/gcc/gcc/expr.h:276 0x41d9f62 output_constant /home/vegard/git/gcc/gcc/varasm.c:4907 0x41dcc2b assemble_variable_contents /home/vegard/git/gcc/gcc/varasm.c:2136 0x41fd542 assemble_variable(tree_node*, int, int, int) /home/vegard/git/gcc/gcc/varasm.c:2312 0x4218599 varpool_node::assemble_decl() /home/vegard/git/gcc/gcc/varpool.c:590 0x19a9497 output_in_order /home/vegard/git/gcc/gcc/cgraphunit.c:2385 0x19a9497 symbol_table::compile() /home/vegard/git/gcc/gcc/cgraphunit.c:2623 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions. Version: GNU C++14 (GCC) version 8.0.1 20180306 (experimental) (x86_64-pc-linux-gnu) Possibly related: bug #70420, bug #78380 Clang complains about UB (division by zero) but does compiles it.