https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117564

            Bug ID: 117564
           Summary: a-comp.c:649:1: internal compiler error: in
                    plus_constant, at explow.cc:102
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: middle-end
          Assignee: unassigned at gcc dot gnu.org
          Reporter: danglin at gcc dot gnu.org
  Target Milestone: ---

Created attachment 59591
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=59591&action=edit
Preprocessed source.

dave@mx3210:~/debian/ardour/ardour-8.10.0+ds/build$ cat xx.sh
 /home/dave/opt/gnu/gcc/gcc-15/libexec/gcc/hppa-linux-gnu/15.0.0/cc1
-fpreprocessed
/home/dave/debian/ardour/ardour-8.10.0+ds/build/libs/plugins/a-comp.lv2/a-comp.c.5.i
-quiet -dumpdir
/home/dave/debian/ardour/ardour-8.10.0+ds/build/libs/plugins/a-comp.lv2/
-dumpbase a-comp.c.5.c -dumpbase-ext .c -g -O2 -O3
-Werror=implicit-function-declaration -Wformat=1 -Werror=format-security -Wall
-Wpointer-arith -Wcast-qual -Wcast-align -Wno-unused-parameter
-Wstrict-prototypes -Wmissing-prototypes -Wdate-time -std=c99 -version
-ffile-prefix-map=/home/dave/debian/ardour/ardour-8.10.0+ds=. -fshow-column
-fomit-frame-pointer -ffast-math -fPIC -o
/home/dave/debian/ardour/ardour-8.10.0+ds/build/libs/plugins/a-comp.lv2/a-comp.c.5.s

dave@mx3210:~/debian/ardour/ardour-8.10.0+ds/build$ sh xx.sh
GNU C99 (GCC) version 15.0.0 20241112 (experimental) [master
r15-5122-gd976daa9316] (hppa-linux-gnu)
        compiled by GNU C version 15.0.0 20241112 (experimental) [master
r15-5122-gd976daa9316], GMP version 6.3.0, MPFR version 4.2.1, MPC version
1.3.1, isl version isl-0.18-GMP

GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 12114e5f3d081ce33a97759332252bea
during RTL pass: vartrack
../libs/plugins/a-comp.lv2/a-comp.c: In function ‘render_inline’:
../libs/plugins/a-comp.lv2/a-comp.c:649:1: internal compiler error: in
plus_constant, at explow.cc:102
  649 | }
      | ^
0x17c1bf7 internal_error(char const*, ...)
        ../../gcc/gcc/diagnostic-global-context.cc:518
0x1fd14b fancy_abort(char const*, int, char const*)
        ../../gcc/gcc/diagnostic.cc:1696
0x4cc06b plus_constant(machine_mode, rtx_def*, poly_int<1u, long long>, bool)
        ../../gcc/gcc/explow.cc:102
0xd15c13 vt_canonicalize_addr
        ../../gcc/gcc/var-tracking.cc:2240
0xd15cab get_addr_from_local_cache
        ../../gcc/gcc/var-tracking.cc:2127
0xd15cab vt_canonicalize_addr
        ../../gcc/gcc/var-tracking.cc:2209
0xd1623b vt_canon_true_dep
        ../../gcc/gcc/var-tracking.cc:2255
0xd1623b drop_overlapping_mem_locs(variable**, overlapping_mems*)
        ../../gcc/gcc/var-tracking.cc:2294
0xd16483 void hash_table<variable_hasher, false,
xcallocator>::traverse_noresize<overlapping_mems*,
&(drop_overlapping_mem_locs(variable**, overlapping_mems*))>(overlapping_mems*)
        ../../gcc/gcc/var-tracking.cc:2360
0xd16483 void hash_table<variable_hasher, false,
xcallocator>::traverse<overlapping_mems*,
&(drop_overlapping_mem_locs(variable**, overlapping_mems*))>(overlapping_mems*)
        ../../gcc/gcc/hash-table.h:1194
0xd16483 clobber_overlapping_mems
        ../../gcc/gcc/var-tracking.cc:2360
0xd1655b val_bind
        ../../gcc/gcc/var-tracking.cc:2471
0xd178bf compute_bb_dataflow
        ../../gcc/gcc/var-tracking.cc:6947
0xd1933b vt_find_locations
        ../../gcc/gcc/var-tracking.cc:7186
0xd19e87 variable_tracking_main_1
        ../../gcc/gcc/var-tracking.cc:10526
0xd1a073 variable_tracking_main()
        ../../gcc/gcc/var-tracking.cc:10572
0xd1a073 execute
        ../../gcc/gcc/var-tracking.cc:10609
Please submit a full bug report, with preprocessed source (by using
-freport-bug).
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.
dave@mx3210:~/debian/ardour/ardour-8.10.0+ds/build$ cat xx.sh
 /home/dave/opt/gnu/gcc/gcc-15/libexec/gcc/hppa-linux-gnu/15.0.0/cc1
-fpreprocessed
/home/dave/debian/ardour/ardour-8.10.0+ds/build/libs/plugins/a-comp.lv2/a-comp.c.5.i
-quiet -dumpdir
/home/dave/debian/ardour/ardour-8.10.0+ds/build/libs/plugins/a-comp.lv2/
-dumpbase a-comp.c.5.c -dumpbase-ext .c -g -O2 -O3
-Werror=implicit-function-declaration -Wformat=1 -Werror=format-security -Wall
-Wpointer-arith -Wcast-qual -Wcast-align -Wno-unused-parameter
-Wstrict-prototypes -Wmissing-prototypes -Wdate-time -std=c99 -version
-ffile-prefix-map=/home/dave/debian/ardour/ardour-8.10.0+ds=. -fshow-column
-fomit-frame-pointer -ffast-math -fPIC -o
/home/dave/debian/ardour/ardour-8.10.0+ds/build/libs/plugins/a-comp.lv2/a-comp.c.5.s

Breakpoint 1, plus_constant (mode=E_DImode, x=0xf8d6da80, c=...,
    inplace=<optimized out>) at ../../gcc/gcc/explow.cc:102
102       gcc_assert (GET_MODE (x) == VOIDmode || GET_MODE (x) == mode);
(gdb) cond 1 x==0xf8d6da80
(gdb) p *x
$1 = {mode = E_SImode, code = ENTRY_VALUE, jump = 0, call = 0, unchanging = 0,
  volatil = 0, in_struct = 0, used = 0, frame_related = 0, return_val = 0,
  u2 = {original_regno = 0, insn_uid = 0, symbol_ref_flags = 0,
    var_location_status = VAR_INIT_STATUS_UNKNOWN, num_elem = 0,
    const_vector = {npatterns = 0, nelts_per_pattern = 0, unused = 0}}, u = {
    fld = {{rt_int = -115915096, rt_uint = 4179052200, rt_subreg = {coeffs = {
            63767}}, rt_str = 0xf91746a8 "", rt_rtx = 0xf91746a8,
        rt_rtvec = 0xf91746a8, rt_type = 4179052200, rt_addr_diff_vec_flags = {
          min_align = 249, base_after_vec = 0, min_after_vec = 0,
          max_after_vec = 0, min_after_base = 1, max_after_base = 0,
          offset_unsigned = 1, scale = 70}, rt_cselib = 0xf91746a8,
        rt_tree = 0xf91746a8, rt_bb = 0xf91746a8, rt_mem = 0xf91746a8,
        rt_constant = 0xf91746a8, rt_cfi = 0xf91746a8}}, hwint = {
      -497851546432700416}, reg = {regno = 4179052200, nregs = 0, unused = 0,
      attrs = 0x72c00}, block_sym = {fld = {{rt_int = -115915096,
          rt_uint = 4179052200, rt_subreg = {coeffs = {63767}},
          rt_str = 0xf91746a8 "", rt_rtx = 0xf91746a8, rt_rtvec = 0xf91746a8,
          rt_type = 4179052200, rt_addr_diff_vec_flags = {min_align = 249,
            base_after_vec = 0, min_after_vec = 0, max_after_vec = 0,
            min_after_base = 1, max_after_base = 0, offset_unsigned = 1,
            scale = 70}, rt_cselib = 0xf91746a8, rt_tree = 0xf91746a8,
          rt_bb = 0xf91746a8, rt_mem = 0xf91746a8, rt_constant = 0xf91746a8,
          rt_cfi = 0xf91746a8}, {rt_int = 0, rt_uint = 0, rt_subreg = {
--Type <RET> for more, q to quit, c to continue without paging--q
Quit
(gdb) bt
#0  plus_constant (mode=E_DImode, x=0xf8d6da80, c=..., inplace=<optimized out>)
    at ../../gcc/gcc/explow.cc:102
#1  0x00d15c14 in vt_canonicalize_addr (set=0x1df52f8, oloc=0xf8d6f3e0)
    at ../../gcc/gcc/var-tracking.cc:2240
#2  0x00d15cac in get_addr_from_local_cache (set=0x1df52f8,
    loc=<optimized out>) at ../../gcc/gcc/var-tracking.cc:2127
#3  vt_canonicalize_addr (set=0x1df52f8, oloc=0xf8d6f3e0)
    at ../../gcc/gcc/var-tracking.cc:2209
#4  0x00d1623c in vt_canon_true_dep (set=<optimized out>,
    mloc=<optimized out>, maddr=<optimized out>, loc=<optimized out>)
    at ../../gcc/gcc/var-tracking.cc:2255
#5  drop_overlapping_mem_locs (slot=0xf9b02050, coms=<optimized out>)
    at ../../gcc/gcc/var-tracking.cc:2294
#6  0x00d16484 in hash_table<variable_hasher, false,
xcallocator>::traverse_noresize<overlapping_mems*,
&(drop_overlapping_mem_locs(variable**, overlapping_mems*))> (this=<optimized
out>, argument=0xf9b01e88)
    at ../../gcc/gcc/var-tracking.cc:2360
#7  hash_table<variable_hasher, false,
xcallocator>::traverse<overlapping_mems*,
&(drop_overlapping_mem_locs(variable**, overlapping_mems*))> (
    this=<optimized out>, argument=0xf9b01e88)
    at ../../gcc/gcc/hash-table.h:1194
#8  clobber_overlapping_mems (set=0xfffffe8c, loc=<optimized out>)
    at ../../gcc/gcc/var-tracking.cc:2360
--Type <RET> for more, q to quit, c to continue without paging--q

rtx
plus_constant (machine_mode mode, rtx x, poly_int64 c, bool inplace)

  RTX_CODE code;
  rtx y;
  rtx tem;
  int all_constant = 0;

  gcc_assert (GET_MODE (x) == VOIDmode || GET_MODE (x) == mode);

mode is DImode and mode of x is SImode, so assert triggers.

Reply via email to