https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88256
Richard Biener changed:
What|Removed |Added
Status|ASSIGNED|NEW
Component|ipa |c++
Assignee|rguenth at gcc dot gnu.org |unassigned at gcc dot
gnu.org
Summary|[7/8/9 Regression] ICE: |[7/8/9 Regression] ICE:
|Segmentation fault (in |Segmentation fault (in
|make_ssa_name_fn) |make_ssa_name_fn), C++ FE
||missing DECL_EXPRs
--- Comment #5 from Richard Biener ---
Program received signal SIGSEGV, Segmentation fault.
0x0174d104 in make_ssa_name_fn (fn=0x769e6160, var=,
stmt=, version=0)
at /space/rguenther/src/gcc-sccvn/gcc/tree-ssanames.c:268
268 gcc_assert (VAR_P (var)
we are remapping a released SSA name referenced from TYPE_SIZE of
int[0:(sizetype) D.2308][0:(sizetype) D.2307]
Thus this is a FE issue where we lack a DECL_EXPR for the type used in
some memory reference:
(gdb) p debug_gimple_stmt (stmt)
# VUSE <.MEM_6(D)>
_5 = MEM[(int[0:(sizetype) D.2308][0:(sizetype) D.2307] *)foo.2_4][0]{lb: 0 sz:
_3 * 4}[0];
static void f2 (int arg) { res = ((int (*)[arg][b]) foo)[0][0][0]; }
is in .original
;; Function void f2(int) (null)
;; enabled by -tree-original
<) + 1) *
((sizetype) (SAVE_EXPR <(ssizetype) arg + -1>) + 1);, (int[0:(sizetype)
(SAVE_EXPR <(ssizetype) arg + -1>)][0:(sizetype) (SAVE_EXPR <(ssizetype) b +
-1>)] *) foo;))[0][0]) >;
there's no DECL_EXPR so size expressions are not properly unshared. IIRC
there's a duplicate PR where I ran into a similar issue. I'm probably
thinking of PR86216 which sadly also has no attention from FE maintainers.
Anyway, C++ FE bug.