https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115187
Bug ID: 115187 Summary: ICE when deleting temporary array Product: gcc Version: 15.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: mital at mitalashok dot co.uk Target Milestone: --- A delete-expression where the operand comes from a temporary array causes an internal compiler error https://godbolt.org/z/7a9sM9KqT void f() { using T = int[2]; delete T{}; } test.cpp: In function ‘void f()’: test.cpp:3:10: warning: deleting array ‘T()’ 3 | delete T{}; | ^~~ test.cpp:1:6: internal compiler error: in verify_gimple_stmt, at tree-cfg.cc:5169 1 | void f() { | ^ 0x9069f1 verify_gimple_stmt ./gcc/gcc/tree-cfg.cc:5169 0x13ed54f verify_gimple_in_seq_2 ./gcc/gcc/tree-cfg.cc:5288 0x13ed518 verify_gimple_in_seq_2 ./gcc/gcc/tree-cfg.cc:5257 0x13ed588 verify_gimple_in_seq_2 ./gcc/gcc/tree-cfg.cc:5252 0x13ed5ed verify_gimple_in_seq(gimple*, bool) ./gcc/gcc/tree-cfg.cc:5327 0x107426b gimplify_body(tree_node*, bool) ./gcc/gcc/gimplify.cc:19237 0x10743f9 gimplify_function_tree(tree_node*) ./gcc/gcc/gimplify.cc:19355 0xe873c7 cgraph_node::analyze() ./gcc/gcc/cgraphunit.cc:687 0xe899d7 analyze_functions ./gcc/gcc/cgraphunit.cc:1251 0xe8a721 symbol_table::finalize_compilation_unit() ./gcc/gcc/cgraphunit.cc:2560 Please submit a full bug report, with preprocessed source. Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions. This also happens when the array is a subobject of a temporary: struct X { int x[2]; }; void f() { delete X{}.x; } This also happens if the operand is a pointer derived from that array, `delete +T{};`, `delete (T{} + 1);`, `delete +X{}.x;`, `delete (X{}.x + 1)`