https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117248
--- Comment #3 from John David Anglin <danglin at gcc dot gnu.org> ---
Stage1 cc1 compiles the file without problems. So yes, it seems stage2
cc1 is miscompiled.
At commit 04b4a5e4866daa7b6f4a4a3e7ed1a23f7787841d, the fault occurs
on this statement:
Start it from the beginning? (y or n) y
Starting program: /home/dave/gnu/gcc/objdir64/gcc/cc1 -fpreprocessed
_umoddi3_di.i -quiet -dumpbase _umoddi3_di.c -dumpbase-ext .c -mlong-calls -g
-g -g -O2 -O2 -O2 -Wextra -Wall -Wno-error=narrowing -Wwrite-strings
-Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition
-version -fno-checking -frandom-seed=fixed-seed -fbuilding-libgcc
-fno-stack-protector -frandom-seed=fixed-seed -fexceptions
-fnon-call-exceptions -fvisibility=hidden -o _umoddi3_di.s
warning: Private mapping of shared library text was not specified
by the executable; setting a breakpoint in a shared library which
is not privately mapped will not work. See the HP-UX 11i v3 chatr
manpage for methods to privately map shared library text.
GNU C17 (GCC) version 15.0.0 20241019 (experimental) [remotes/origin/HEAD
r15-4493-g04b4a5e4866] (hppa64-hp-hpux11.11)
compiled by GNU C version 15.0.0 20241019 (experimental)
[remotes/origin/HEAD r15-4493-g04b4a5e4866], GMP version 6.2.1, MPFR version
4.1.1, MPC version 1.2.1, isl version isl-0.25-GMP
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
Compiler executable checksum: 233c0872571a4ebc9f36108fd2718ccf
Breakpoint 1, 0x40000000014dae64 in vectorizable_slp_permutation_1 (
vinfo=0x800000010049aa28, gsi=0x0, node=0x80000001005adf00, perm=...,
children=..., dump_p=false) at ../../gcc/gcc/tree-vect-slp.cc:10576
10576 unsigned vi = (lane + p.second) / vnunits;
(gdb) c
Continuing.
Program received signal SIGFPE, Arithmetic exception.
0x40000000025f47a8 in $$divU () at ../../gcc/gcc/tree.h:3787
3787 tree_contains_struct_check_failed (__t, __s, __f, __l, __g);
(gdb) bt
#0 0x40000000025f47a8 in $$divU () at ../../gcc/gcc/tree.h:3787
#1 0x80000001004c6320 in ?? ()
#2 0x40000000014dae68 in vectorizable_slp_permutation_1 (
vinfo=0x800000010049aa28, gsi=0x0, node=0x80000001005adf00, perm=...,
children=..., dump_p=false) at ../../gcc/gcc/tree-vect-slp.cc:10576
#3 0x40000000014f3d08 in vectorizable_slp_permutation (
vinfo=0x800003ffbf913738, gsi=0x0, node=0x800000010048c0f0, cost_vec=0x1)
at ../../gcc/gcc/dumpfile.h:534
#4 vect_slp_analyze_node_operations_1 (vinfo=0x800003ffbf913738,
node=0x800000010048c0f0, node_instance=0x80000001005adf00, cost_vec=0x1)
at ../../gcc/gcc/tree-vect-slp.cc:7556
#5 vect_slp_analyze_node_operations (vinfo=0x800003ffbf913738,
node=<optimized out>, node_instance=0x80000001005adf00, visited_set=...,
visited_vec=..., cost_vec=0x1) at ../../gcc/gcc/tree-vect-slp.cc:7779
#6 0x40000000014f3498 in vect_slp_analyze_node_operations (
vinfo=0x800003ffbf913738, node=<optimized out>,
node_instance=0x80000001005adf00, visited_set=..., visited_vec=...,
cost_vec=0x1) at ../../gcc/gcc/tree-vect-slp.cc:7756
#7 0x40000000014f3498 in vect_slp_analyze_node_operations (
vinfo=0x800003ffbf913738, node=<optimized out>,
node_instance=0x80000001005adf00, visited_set=..., visited_vec=...,
cost_vec=0x1) at ../../gcc/gcc/tree-vect-slp.cc:7756
#8 0x40000000014f59ac in vect_slp_analyze_operations (vinfo=0x2)
---Type <return> to continue, or q <return> to quit---
at ../../gcc/gcc/tree-vect-slp.cc:8174
#9 0x40000000014fde3c in vect_slp_analyze_bb_1 (bb_vinfo=0x800000010049d180,
n_stmts=<optimized out>, fatal=<optimized out>,
dataref_groups=0x800003ffbfff1958) at ../../gcc/gcc/tree-vect-slp.cc:9214
#10 vect_slp_region (bbs=..., datarefs=...,
dataref_groups=0x800003ffbfff1958, n_stmts=<optimized out>,
orig_loop=<optimized out>) at ../../gcc/gcc/tree-vect-slp.cc:9261
#11 vect_slp_bbs (bbs=..., orig_loop=<optimized out>)
at ../../gcc/gcc/tree-vect-slp.cc:9484
#12 0x400000000150014c in vect_slp_function (fun=0x800003ffbf913738)
at ../../gcc/gcc/tree-vect-slp.cc:9606
#13 0x40000000015073a0 in (anonymous namespace)::pass_slp_vectorize::execute (
this=<optimized out>, fun=0x800000010049d180)
at ../../gcc/gcc/tree-vectorizer.cc:1540
#14 0x4000000000f576cc in execute_one_pass (pass=0x800000010049d180)
at ../../gcc/gcc/passes.cc:2659
#15 0x4000000000f5840c in execute_pass_list_1 (pass=0x800000010049d180)
at ../../gcc/gcc/passes.cc:2768
#16 0x4000000000f58428 in execute_pass_list_1 (pass=0x800000010049d180)
at ../../gcc/gcc/passes.cc:2769
#17 0x4000000000f58428 in execute_pass_list_1 (pass=0x800000010049d180)
at ../../gcc/gcc/passes.cc:2769
#18 0x4000000000f584a0 in execute_pass_list (fn=<optimized out>,
---Type <return> to continue, or q <return> to quit---
pass=<optimized out>) at ../../gcc/gcc/passes.cc:2779
#19 0x4000000000a2d8d0 in expand (this=0x800000010049d180)
at ../../gcc/gcc/context.h:48
#20 cgraph_node::expand (this=0x800000010049d180)
at ../../gcc/gcc/cgraphunit.cc:1798
#21 0x4000000000a3047c in expand_all_functions ()
at ../../gcc/gcc/cgraphunit.cc:2028
#22 symbol_table::compile (this=0x800003ffbf913738)
at ../../gcc/gcc/cgraphunit.cc:2404
#23 0x4000000000a33f60 in compile (this=0x2)
at ../../gcc/gcc/cgraphunit.cc:2589
#24 symbol_table::finalize_compilation_unit (this=0x2)
at ../../gcc/gcc/cgraphunit.cc:2589
#25 0x40000000010dc8ec in compile_file () at ../../gcc/gcc/toplev.cc:478
#26 0x80000001003e4530 in ?? ()
(gdb) r
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: /home/dave/gnu/gcc/objdir64/gcc/cc1 -fpreprocessed
_umoddi3_di.i -quiet -dumpbase _umoddi3_di.c -dumpbase-ext .c -mlong-calls -g
-g -g -O2 -O2 -O2 -Wextra -Wall -Wno-error=narrowing -Wwrite-strings
-Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition
-version -fno-checking -frandom-seed=fixed-seed -fbuilding-libgcc
-fno-stack-protector -frandom-seed=fixed-seed -fexceptions
-fnon-call-exceptions -fvisibility=hidden -o _umoddi3_di.s
warning: Private mapping of shared library text was not specified
by the executable; setting a breakpoint in a shared library which
is not privately mapped will not work. See the HP-UX 11i v3 chatr
manpage for methods to privately map shared library text.
GNU C17 (GCC) version 15.0.0 20241019 (experimental) [remotes/origin/HEAD
r15-4493-g04b4a5e4866] (hppa64-hp-hpux11.11)
compiled by GNU C version 15.0.0 20241019 (experimental)
[remotes/origin/HEAD r15-4493-g04b4a5e4866], GMP version 6.2.1, MPFR version
4.1.1, MPC version 1.2.1, isl version isl-0.25-GMP
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
Compiler executable checksum: 233c0872571a4ebc9f36108fd2718ccf
Breakpoint 2, vectorizable_slp_permutation_1 (vinfo=0x800000010049aa28,
gsi=0x0, node=0x80000001005adf00, perm=..., children=..., dump_p=false)
at ../../gcc/gcc/tree-vect-slp.cc:10575
10575 unsigned lane = active_lane[p.first].to_constant ();
(gdb) p/x $r19
$5 = 0x1
(gdb) p *$r3
$6 = 4
(gdb) r
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: /home/dave/gnu/gcc/objdir64/gcc/cc1 -fpreprocessed
_umoddi3_di.i -quiet -dumpbase _umoddi3_di.c -dumpbase-ext .c -mlong-calls -g
-g -g -O2 -O2 -O2 -Wextra -Wall -Wno-error=narrowing -Wwrite-strings
-Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition
-version -fno-checking -frandom-seed=fixed-seed -fbuilding-libgcc
-fno-stack-protector -frandom-seed=fixed-seed -fexceptions
-fnon-call-exceptions -fvisibility=hidden -o _umoddi3_di.s
warning: Private mapping of shared library text was not specified
by the executable; setting a breakpoint in a shared library which
is not privately mapped will not work. See the HP-UX 11i v3 chatr
manpage for methods to privately map shared library text.
GNU C17 (GCC) version 15.0.0 20241019 (experimental) [remotes/origin/HEAD
r15-4493-g04b4a5e4866] (hppa64-hp-hpux11.11)
compiled by GNU C version 15.0.0 20241019 (experimental)
[remotes/origin/HEAD r15-4493-g04b4a5e4866], GMP version 6.2.1, MPFR version
4.1.1, MPC version 1.2.1, isl version isl-0.25-GMP
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
Compiler executable checksum: 233c0872571a4ebc9f36108fd2718ccf
Breakpoint 2, vectorizable_slp_permutation_1 (vinfo=0x800000010049aa28,
gsi=0x0, node=0x80000001005adf00, perm=..., children=..., dump_p=false)
at ../../gcc/gcc/tree-vect-slp.cc:10575
10575 unsigned lane = active_lane[p.first].to_constant ();
(gdb) disass $pc-16,$pc+64
Dump of assembler code from 0x40000000014dae30 to 0x40000000014dae80:
0x40000000014dae30 <vectorizable_slp_permutation_1(vec_info*,
gimple_stmt_iterator*, slp_tree, lane_permutation_t&, vec<_slp_tree*, va_heap,
vl_ptr>&, bool)+1840>: cmpb,<>,n r24,r19,0x40000000014dc248
<vectorizable_slp_permutation_1(vec_info*, gimple_stmt_iterator*, slp_tree,
lane_permutation_t&, vec<_slp_tree*, va_heap, vl_ptr>&, bool)+6984>
0x40000000014dae34 <vectorizable_slp_permutation_1(vec_info*,
gimple_stmt_iterator*, slp_tree, lane_permutation_t&, vec<_slp_tree*, va_heap,
vl_ptr>&, bool)+1844>: ldh 36(r26),r19
0x40000000014dae38 <vectorizable_slp_permutation_1(vec_info*,
gimple_stmt_iterator*, slp_tree, lane_permutation_t&, vec<_slp_tree*, va_heap,
vl_ptr>&, bool)+1848>: ldw 4(r5),r25
0x40000000014dae3c <vectorizable_slp_permutation_1(vec_info*,
gimple_stmt_iterator*, slp_tree, lane_permutation_t&, vec<_slp_tree*, va_heap,
vl_ptr>&, bool)+1852>: mtsarcm r19
=> 0x40000000014dae40 <vectorizable_slp_permutation_1(vec_info*,
gimple_stmt_iterator*, slp_tree, lane_permutation_t&, vec<_slp_tree*, va_heap,
vl_ptr>&, bool)+1856>: cmpb,>>= ret0,r25,0x40000000014dc104
<vectorizable_slp_permutation_1(vec_info*, gimple_stmt_iterator*, slp_tree,
lane_permutation_t&, vec<_slp_tree*, va_heap, vl_ptr>&, bool)+6660>
0x40000000014dae44 <vectorizable_slp_permutation_1(vec_info*,
gimple_stmt_iterator*, slp_tree, lane_permutation_t&, vec<_slp_tree*, va_heap,
vl_ptr>&, bool)+1860>: depdi,z,* 1,sar,64,r19
---Type <return> to continue, or q <return> to quit---
0x40000000014dae48 <vectorizable_slp_permutation_1(vec_info*,
gimple_stmt_iterator*, slp_tree, lane_permutation_t&, vec<_slp_tree*, va_heap,
vl_ptr>&, bool)+1864>: ldd,s r20(r5),r26
0x40000000014dae4c <vectorizable_slp_permutation_1(vec_info*,
gimple_stmt_iterator*, slp_tree, lane_permutation_t&, vec<_slp_tree*, va_heap,
vl_ptr>&, bool)+1868>: copy ret1,r25
0x40000000014dae50 <vectorizable_slp_permutation_1(vec_info*,
gimple_stmt_iterator*, slp_tree, lane_permutation_t&, vec<_slp_tree*, va_heap,
vl_ptr>&, bool)+1872>: add,l r26,ret1,r26
0x40000000014dae54 <vectorizable_slp_permutation_1(vec_info*,
gimple_stmt_iterator*, slp_tree, lane_permutation_t&, vec<_slp_tree*, va_heap,
vl_ptr>&, bool)+1876>: std ret1,-110(sp)
0x40000000014dae58 <vectorizable_slp_permutation_1(vec_info*,
gimple_stmt_iterator*, slp_tree, lane_permutation_t&, vec<_slp_tree*, va_heap,
vl_ptr>&, bool)+1880>: ldo -1(r19),r19
0x40000000014dae5c <vectorizable_slp_permutation_1(vec_info*,
gimple_stmt_iterator*, slp_tree, lane_permutation_t&, vec<_slp_tree*, va_heap,
vl_ptr>&, bool)+1884>: and r26,r19,r19
0x40000000014dae60 <vectorizable_slp_permutation_1(vec_info*,
gimple_stmt_iterator*, slp_tree, lane_permutation_t&, vec<_slp_tree*, va_heap,
vl_ptr>&, bool)+1888>: b,l 0x40000000010571c0 <.stub>,rp
0x40000000014dae64 <vectorizable_slp_permutation_1(vec_info*,
gimple_stmt_iterator*, slp_tree, lane_permutation_t&, vec<_slp_tree*, va_heap,
vl_ptr>&, bool---Type <return> to continue, or q <return> to quit---
)+1892>: ldw 4(r3),r20
0x40000000014dae68 <vectorizable_slp_permutation_1(vec_info*,
gimple_stmt_iterator*, slp_tree, lane_permutation_t&, vec<_slp_tree*, va_heap,
vl_ptr>&, bool)+1896>: ldw 0(r3),r26
0x40000000014dae6c <vectorizable_slp_permutation_1(vec_info*,
gimple_stmt_iterator*, slp_tree, lane_permutation_t&, vec<_slp_tree*, va_heap,
vl_ptr>&, bool)+1900>: extrd,u,* r20,63,32,r25
0x40000000014dae70 <vectorizable_slp_permutation_1(vec_info*,
gimple_stmt_iterator*, slp_tree, lane_permutation_t&, vec<_slp_tree*, va_heap,
vl_ptr>&, bool)+1904>: extrw,u r26,30,31,r26
0x40000000014dae74 <vectorizable_slp_permutation_1(vec_info*,
gimple_stmt_iterator*, slp_tree, lane_permutation_t&, vec<_slp_tree*, va_heap,
vl_ptr>&, bool)+1908>: cmpb,= r25,r26,0x40000000014dc330
<vectorizable_slp_permutation_1(vec_info*, gimple_stmt_iterator*, slp_tree,
lane_permutation_t&, vec<_slp_tree*, va_heap, vl_ptr>&, bool)+7216>
0x40000000014dae78 <vectorizable_slp_permutation_1(vec_info*,
gimple_stmt_iterator*, slp_tree, lane_permutation_t&, vec<_slp_tree*, va_heap,
vl_ptr>&, bool)+1912>: extrd,u,* r19,63,32,r19
0x40000000014dae7c <vectorizable_slp_permutation_1(vec_info*,
gimple_stmt_iterator*, slp_tree, lane_permutation_t&, vec<_slp_tree*, va_heap,
vl_ptr>&, bool)+1916>: ldo 1(r20),r20
End of assembler dump.
(gdb) info address vnunits
Symbol "vnunits" is multi-location:
Range 0x40000000014dae40-0x40000000014dae5c: a variable in $r19
Range 0x40000000014dae5c-0x40000000014dae60: a complex DWARF expression:
0: DW_OP_breg19 1 [$r19]
2: DW_OP_stack_value
Range 0x40000000014dae60-0x40000000014daea0: a complex DWARF expression:
0: DW_OP_lit1
1: DW_OP_const1u 63
3: DW_OP_bregxwarning: Unmapped DWARF DBX Register #60 encountered.
register 60 [$] offset 0
6: DW_OP_minus
7: DW_OP_shl
8: DW_OP_stack_value
(gdb) p/x $ret1
$13 = 0x0
Not sure what value register $ret1 is supposed to hold, but it is copied
to $r25 for call to $$divU routine causing fault.