public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug rtl-optimization/109478] New: FAIL: g++.dg/other/pr104989.C -std=gnu++14 (internal compiler error: Segmentation fault)
@ 2023-04-11 21:52 danglin at gcc dot gnu.org
2023-04-12 11:31 ` [Bug middle-end/109478] " rguenth at gcc dot gnu.org
` (5 more replies)
0 siblings, 6 replies; 7+ messages in thread
From: danglin at gcc dot gnu.org @ 2023-04-11 21:52 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109478
Bug ID: 109478
Summary: FAIL: g++.dg/other/pr104989.C -std=gnu++14 (internal
compiler error: Segmentation fault)
Product: gcc
Version: 13.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: rtl-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: danglin at gcc dot gnu.org
Target Milestone: ---
Host: hppa64-hp-hpux11.11
Target: hppa64-hp-hpux11.11
Build: hppa64-hp-hpux11.11
spawn -ignore SIGHUP /home/dave/gnu/gcc/objdir64/gcc/testsuite/g++/../../xg++
-B
/home/dave/gnu/gcc/objdir64/gcc/testsuite/g++/../../
/home/dave/gnu/gcc/gcc/gcc/testsuite/g++.dg/other/pr104989.C
-fdiagnostics-plain-output -nostdinc++
-I/home/dave/gnu/gcc/objdir64/hppa64-hp-hpux11.11/libstdc++-v3/include/hppa64-hp-hpux11.11
-I/home/dave/gnu/gcc/objdir64/hppa64-hp-hpux11.11/libstdc++-v3/include
-I/home/dave/gnu/gcc/gcc/libstdc++-v3/libsupc++
-I/home/dave/gnu/gcc/gcc/libstdc++-v3/include/backward
-I/home/dave/gnu/gcc/gcc/libstdc++-v3/testsuite/util -fmessage-length=0
-std=gnu++14 -fnon-call-exceptions -S -o pr104989.s
/home/dave/gnu/gcc/gcc/gcc/testsuite/g++.dg/other/pr104989.C:6:9: warning:
width of 'a::b' exceeds its type
during RTL pass: expand
/home/dave/gnu/gcc/gcc/gcc/testsuite/g++.dg/other/pr104989.C: In function 'void
c(...)':
/home/dave/gnu/gcc/gcc/gcc/testsuite/g++.dg/other/pr104989.C:8:16: internal
compiler error: Segmentation fault
libbacktrace could not find executable to open
Please submit a full bug report, with preprocessed source (by using
-freport-bug).
See <https://gcc.gnu.org/bugs/> for instructions.
compiler exited with status 1
FAIL: g++.dg/other/pr104989.C -std=gnu++14 (internal compiler error:
Segmentation fault)
XFAIL: g++.dg/other/pr104989.C -std=gnu++14 (test for excess errors)
Excess errors:
/home/dave/gnu/gcc/gcc/gcc/testsuite/g++.dg/other/pr104989.C:6:9: warning:
width of 'a::b' exceeds its type
during RTL pass: expand
/home/dave/gnu/gcc/gcc/gcc/testsuite/g++.dg/other/pr104989.C:8:16: internal
compiler error: Segmentation fault
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug middle-end/109478] FAIL: g++.dg/other/pr104989.C -std=gnu++14 (internal compiler error: Segmentation fault)
2023-04-11 21:52 [Bug rtl-optimization/109478] New: FAIL: g++.dg/other/pr104989.C -std=gnu++14 (internal compiler error: Segmentation fault) danglin at gcc dot gnu.org
@ 2023-04-12 11:31 ` rguenth at gcc dot gnu.org
2023-04-12 13:13 ` law at gcc dot gnu.org
` (4 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: rguenth at gcc dot gnu.org @ 2023-04-12 11:31 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109478
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Last reconfirmed| |2023-04-12
CC| |law at gcc dot gnu.org
Status|UNCONFIRMED |NEW
Ever confirmed|0 |1
--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
Confirmed.
t.ii:2:9: warning: width of 'a::b' exceeds its type
2 | short b : -1ULL;
| ^
Program received signal SIGSEGV, Segmentation fault.
0x00000000011d5bf4 in initialize_argument_information (num_actuals=1,
args=0x3398c30, args_size=0x7fffffffc750, n_named_args=1, exp=<call_expr
0x7ffff71c3930>, struct_value_addr_value=<tree 0x0>, fndecl=<function_decl
0x7ffff7329200 c>, fntype=<function_type 0x7ffff7205e70>, args_so_far=...,
reg_parm_stack_space=64, old_stack_level=0x7fffffffc6e0,
old_pending_adj=0x7fffffffc6d8, must_preallocate=0x7fffffffc708,
ecf_flags=0x7fffffffc700, may_tailcall=0x7fffffffc78f, call_from_thunk_p=false)
at /space/rguenther/src/gcc/gcc/calls.cc:1519
1519 && XEXP (XVECEXP (args[i].reg, 0, 0), 0) == 0)
Missing separate debuginfos, use: zypper install
libgmp10-debuginfo-6.1.2-4.9.1.x86_64 libmpc3-debuginfo-1.1.0-1.47.x86_64
libmpfr6-debuginfo-4.0.2-3.3.1.x86_64
libzstd1-debuginfo-1.5.0-150400.3.3.1.x86_64
(gdb) bt
#0 0x00000000011d5bf4 in initialize_argument_information (num_actuals=1,
args=0x3398c30, args_size=0x7fffffffc750, n_named_args=1,
exp=<call_expr 0x7ffff71c3930>, struct_value_addr_value=<tree 0x0>,
fndecl=<function_decl 0x7ffff7329200 c>,
fntype=<function_type 0x7ffff7205e70>, args_so_far=...,
reg_parm_stack_space=64, old_stack_level=0x7fffffffc6e0,
old_pending_adj=0x7fffffffc6d8, must_preallocate=0x7fffffffc708,
ecf_flags=0x7fffffffc700, may_tailcall=0x7fffffffc78f,
call_from_thunk_p=false) at /space/rguenther/src/gcc/gcc/calls.cc:1519
#1 0x00000000011da16d in expand_call (exp=<call_expr 0x7ffff71c3930>,
target=0x0, ignore=1) at /space/rguenther/src/gcc/gcc/calls.cc:2973
#2 0x00000000013af7cf in expand_expr_real_1 (exp=<call_expr 0x7ffff71c3930>,
target=0x0, tmode=E_VOIDmode, modifier=EXPAND_NORMAL, alt_rtl=0x0,
inner_reference_p=false) at /space/rguenther/src/gcc/gcc/expr.cc:11868
#3 0x00000000013a171e in expand_expr_real (exp=<call_expr 0x7ffff71c3930>,
target=0x7ffff71cb490, tmode=E_VOIDmode, modifier=EXPAND_NORMAL,
alt_rtl=0x0, inner_reference_p=false)
at /space/rguenther/src/gcc/gcc/expr.cc:9000
#4 0x00000000011cc17f in expand_expr (exp=<call_expr 0x7ffff71c3930>,
target=0x7ffff71cb490, mode=E_VOIDmode, modifier=EXPAND_NORMAL)
at /space/rguenther/src/gcc/gcc/expr.h:310
#5 0x00000000011f3928 in expand_call_stmt (stmt=0x7ffff73371b0)
at /space/rguenther/src/gcc/gcc/cfgexpand.cc:2831
(gdb) p debug_gimple_stmt (stmt)
# .MEM_3 = VDEF <.MEM_2>
c (D.2324);
(gdb) p debug_tree (exp)
<call_expr 0x7ffff71c3930
...
arg:0 <var_decl 0x7ffff7337120 D.2324
type <record_type 0x7ffff731bd20 a cxx-odr-p type_5 BLK
size <integer_cst 0x7ffff7338030 constant public overflow 0>
unit-size <integer_cst 0x7ffff732efa8 constant 2305843009213693952>
align:64 warn_if_not_align:0 symtab:0 alias-set 1 canonical-type
0x7ffff731bd20 fields <function_decl 0x7ffff7329c00 __dt > context
<translation_unit_decl 0x7ffff71d7000 t.ii>
full-name "struct a"
X() X(constX&) this=(X&) n_parents=0 use_template=0
interface-unknown
pointer_to_this <pointer_type 0x7ffff731b7e0> reference_to_this
<reference_type 0x7ffff731b690> chain <type_decl 0x7ffff7314688 a>>
used ignored BLK t.ii:4:16 size <integer_cst 0x7ffff7338030 overflow 0>
unit-size <integer_cst 0x7ffff732efa8 2305843009213693952>
align:64 warn_if_not_align:0 context <function_decl 0x7ffff7329200 c>
(mem/c:BLK (reg/f:DI 63 virtual-stack-vars) [1 D.2324+0
S2305843009213693952 A64])>
and the RTL for the argument is
(parallel:BLK [])
ick. pa_function_arg runs into
9786 arg_size = pa_function_arg_size (mode, type);
9800 if (arg_size > 1)
(gdb) p arg_size
$7 = 0
so isn't able to decipher things down to a "valid" argument spec. Note
above for the argument type we have TYPE_SIZE == 0 but a very
large TYPE_SIZE_UNIT.
One "obvious" mistake is to use 'int arg_size' for the HOST_WIDE_INT
pa_function_arg_size return value. Adjusting also downstream variable
types helps to some extent but then we ICE in
during RTL pass: dwarf2
t.ii: In function 'void c(...)':
t.ii:4:23: internal compiler error: in dwarf2out_frame_debug_expr, at
dwarf2cfi.cc:1960
4 | void c(...) { c(a()); }
| ^
0x12bd9d2 dwarf2out_frame_debug_expr
/space/rguenther/src/gcc/gcc/dwarf2cfi.cc:1960
0x12bea15 dwarf2out_frame_debug
/space/rguenther/src/gcc/gcc/dwarf2cfi.cc:2367
0x12bf81b scan_insn_after
/space/rguenther/src/gcc/gcc/dwarf2cfi.cc:2726
0x12bfe3c scan_trace
seeing
(set (reg:DI 1 %r1)
(plus:DI (reg/f:DI 30 %r30)
(const_int 4611686018427379840 [0x3fffffffffffe080])))
which probably means PA would need some alternate form when the
offset gets large. The following is what's required to get around
the first ICE:
diff --git a/gcc/config/pa/pa.cc b/gcc/config/pa/pa.cc
index 3f91ebce603..66371f7ced9 100644
--- a/gcc/config/pa/pa.cc
+++ b/gcc/config/pa/pa.cc
@@ -9775,7 +9775,7 @@ pa_function_arg (cumulative_args_t cum_v, const
function_arg_info &arg)
machine_mode mode = arg.mode;
int max_arg_words = (TARGET_64BIT ? 8 : 4);
int alignment = 0;
- int arg_size;
+ HOST_WIDE_INT arg_size;
int fpr_reg_base;
int gpr_reg_base;
rtx retval;
@@ -9840,7 +9840,8 @@ pa_function_arg (cumulative_args_t cum_v, const
function_arg_info &arg)
justified data on a big-endian target. */
rtx loc[8];
- int i, offset = 0, ub = arg_size;
+ int i;
+ HOST_WIDE_INT offset = 0, ub = arg_size;
/* Align the base register. */
gpr_reg_base -= alignment;
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug middle-end/109478] FAIL: g++.dg/other/pr104989.C -std=gnu++14 (internal compiler error: Segmentation fault)
2023-04-11 21:52 [Bug rtl-optimization/109478] New: FAIL: g++.dg/other/pr104989.C -std=gnu++14 (internal compiler error: Segmentation fault) danglin at gcc dot gnu.org
2023-04-12 11:31 ` [Bug middle-end/109478] " rguenth at gcc dot gnu.org
@ 2023-04-12 13:13 ` law at gcc dot gnu.org
2023-04-13 17:11 ` dave.anglin at bell dot net
` (3 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: law at gcc dot gnu.org @ 2023-04-12 13:13 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109478
--- Comment #2 from Jeffrey A. Law <law at gcc dot gnu.org> ---
The pa.cc bits look reasonable. It's been forever since I looked at this code,
but clearly using a HOST_WIDE_INT is the right thing to be doing. While it may
not fix this bug completely, consider it pre-approved.
My PA-fu isn't what it used to be, but I strongly suspect we can't add that
constant directly. It'd need to be broken down into a multi-instruction
sequence. Not sure if ldil+ldo is sufficient there or not.
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug middle-end/109478] FAIL: g++.dg/other/pr104989.C -std=gnu++14 (internal compiler error: Segmentation fault)
2023-04-11 21:52 [Bug rtl-optimization/109478] New: FAIL: g++.dg/other/pr104989.C -std=gnu++14 (internal compiler error: Segmentation fault) danglin at gcc dot gnu.org
2023-04-12 11:31 ` [Bug middle-end/109478] " rguenth at gcc dot gnu.org
2023-04-12 13:13 ` law at gcc dot gnu.org
@ 2023-04-13 17:11 ` dave.anglin at bell dot net
2023-04-15 17:15 ` [Bug target/109478] " danglin at gcc dot gnu.org
` (2 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: dave.anglin at bell dot net @ 2023-04-13 17:11 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109478
--- Comment #3 from dave.anglin at bell dot net ---
On 2023-04-12 7:31 a.m., rguenth at gcc dot gnu.org wrote:
> and the RTL for the argument is
>
> (parallel:BLK [])
>
> ick. pa_function_arg runs into
>
> 9786 arg_size = pa_function_arg_size (mode, type);
> 9800 if (arg_size > 1)
> (gdb) p arg_size
> $7 = 0
>
> so isn't able to decipher things down to a "valid" argument spec. Note
> above for the argument type we have TYPE_SIZE == 0 but a very
> large TYPE_SIZE_UNIT.
>
> One "obvious" mistake is to use 'int arg_size' for the HOST_WIDE_INT
> pa_function_arg_size return value. Adjusting also downstream variable
> types helps to some extent but then we ICE in
Yes, this is wrong. However, pa_function_arg only handles the distribution of
arguments to registers.
It's should return NULL_RTX for "large" arg_size values. Don't know why this
didn't show up before.
>
> during RTL pass: dwarf2
> t.ii: In function 'void c(...)':
> t.ii:4:23: internal compiler error: in dwarf2out_frame_debug_expr, at
> dwarf2cfi.cc:1960
> 4 | void c(...) { c(a()); }
> | ^
> 0x12bd9d2 dwarf2out_frame_debug_expr
> /space/rguenther/src/gcc/gcc/dwarf2cfi.cc:1960
> 0x12bea15 dwarf2out_frame_debug
> /space/rguenther/src/gcc/gcc/dwarf2cfi.cc:2367
> 0x12bf81b scan_insn_after
> /space/rguenther/src/gcc/gcc/dwarf2cfi.cc:2726
> 0x12bfe3c scan_trace
>
> seeing
>
> (set (reg:DI 1 %r1)
> (plus:DI (reg/f:DI 30 %r30)
> (const_int 4611686018427379840 [0x3fffffffffffe080])))
Need to investigate where this stack adjustment comes from.
Even if we force the const_int to memory, this will never work with real
hardware. The maximum physical
address size is 44 bits.
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug target/109478] FAIL: g++.dg/other/pr104989.C -std=gnu++14 (internal compiler error: Segmentation fault)
2023-04-11 21:52 [Bug rtl-optimization/109478] New: FAIL: g++.dg/other/pr104989.C -std=gnu++14 (internal compiler error: Segmentation fault) danglin at gcc dot gnu.org
` (2 preceding siblings ...)
2023-04-13 17:11 ` dave.anglin at bell dot net
@ 2023-04-15 17:15 ` danglin at gcc dot gnu.org
2023-04-16 3:18 ` sjames at gcc dot gnu.org
2023-04-21 14:39 ` cvs-commit at gcc dot gnu.org
5 siblings, 0 replies; 7+ messages in thread
From: danglin at gcc dot gnu.org @ 2023-04-15 17:15 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109478
John David Anglin <danglin at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Resolution|--- |FIXED
Status|NEW |RESOLVED
--- Comment #4 from John David Anglin <danglin at gcc dot gnu.org> ---
Fixed by commit 4f1c5e54d782b26304b0095ffb3ceb4c92c3c78d.
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug target/109478] FAIL: g++.dg/other/pr104989.C -std=gnu++14 (internal compiler error: Segmentation fault)
2023-04-11 21:52 [Bug rtl-optimization/109478] New: FAIL: g++.dg/other/pr104989.C -std=gnu++14 (internal compiler error: Segmentation fault) danglin at gcc dot gnu.org
` (3 preceding siblings ...)
2023-04-15 17:15 ` [Bug target/109478] " danglin at gcc dot gnu.org
@ 2023-04-16 3:18 ` sjames at gcc dot gnu.org
2023-04-21 14:39 ` cvs-commit at gcc dot gnu.org
5 siblings, 0 replies; 7+ messages in thread
From: sjames at gcc dot gnu.org @ 2023-04-16 3:18 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109478
--- Comment #5 from Sam James <sjames at gcc dot gnu.org> ---
(In reply to John David Anglin from comment #4)
> Fixed by commit 4f1c5e54d782b26304b0095ffb3ceb4c92c3c78d.
i.e. r13-7194-g4f1c5e54d782b26304b0095ffb3ceb4c92c3c78d for the nice link
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug target/109478] FAIL: g++.dg/other/pr104989.C -std=gnu++14 (internal compiler error: Segmentation fault)
2023-04-11 21:52 [Bug rtl-optimization/109478] New: FAIL: g++.dg/other/pr104989.C -std=gnu++14 (internal compiler error: Segmentation fault) danglin at gcc dot gnu.org
` (4 preceding siblings ...)
2023-04-16 3:18 ` sjames at gcc dot gnu.org
@ 2023-04-21 14:39 ` cvs-commit at gcc dot gnu.org
5 siblings, 0 replies; 7+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2023-04-21 14:39 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109478
--- Comment #6 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-12 branch has been updated by John David Anglin
<danglin@gcc.gnu.org>:
https://gcc.gnu.org/g:dca9419cc3844d3cf3c06f51d5ca57e3b5f50920
commit r12-9461-gdca9419cc3844d3cf3c06f51d5ca57e3b5f50920
Author: John David Anglin <danglin@gcc.gnu.org>
Date: Fri Apr 21 14:38:42 2023 +0000
Fix handling of large arguments passed by value.
2023-04-15 John David Anglin <danglin@gcc.gnu.org>
gcc/ChangeLog:
PR target/109478
* config/pa/pa-protos.h (pa_function_arg_size): Update prototype.
* config/pa/pa.cc (pa_function_arg): Return NULL_RTX if argument
size is zero.
(pa_arg_partial_bytes): Don't call pa_function_arg_size twice.
(pa_function_arg_size): Change return type to int. Return zero
for arguments larger than 1 GB. Update comments.
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2023-04-21 14:39 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-04-11 21:52 [Bug rtl-optimization/109478] New: FAIL: g++.dg/other/pr104989.C -std=gnu++14 (internal compiler error: Segmentation fault) danglin at gcc dot gnu.org
2023-04-12 11:31 ` [Bug middle-end/109478] " rguenth at gcc dot gnu.org
2023-04-12 13:13 ` law at gcc dot gnu.org
2023-04-13 17:11 ` dave.anglin at bell dot net
2023-04-15 17:15 ` [Bug target/109478] " danglin at gcc dot gnu.org
2023-04-16 3:18 ` sjames at gcc dot gnu.org
2023-04-21 14:39 ` cvs-commit at gcc dot gnu.org
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).