This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Fix wrong register allocation for EH
- From: Laurent GUERBY <laurent at guerby dot net>
- To: Eric Botcazou <ebotcazou at adacore dot com>
- Cc: gcc-patches at gcc dot gnu dot org, Joel Sherrill <joel dot sherrill at oarcorp dot com>
- Date: Fri, 14 Nov 2008 17:53:26 +0100
- Subject: Re: [PATCH] Fix wrong register allocation for EH
- References: <200811102356.03693.ebotcazou@adacore.com>
With your patch in the number of FAIL for ACATS on sparc-linux
goes down to only three :).
http://gcc.gnu.org/ml/gcc-testresults/2008-11/msg01191.html
FAIL: cc70a01
FAIL: cd1c04e
FAIL: cxa4016
Compared to 8 before:
http://gcc.gnu.org/ml/gcc-testresults/2008-11/msg00710.html
I didn't spot recent sparc-solaris Ada testresults to compare
with this time.
Please find below a quick analysis of the three fails, it looks like
two are still linked to exception handling, including one that fails
at -O0.
Let me know if you want me to open PRs.
Laurent
,.,. CC70A01 ACATS 2.5 08-11-14 15:14:56
---- CC70A01 Check that the visible part of a generic formal package
includes the first list of basic declarative items of
the package specification. Check for a generic package
where formal package has (<>) actual part.
/home/guerby/trunk/gcc/testsuite/ada/acats/run_all.sh: line 15: 17163 Erreur de segmentation $*
FAIL: cc70a01
cc70a01 works at -O0 and -O1 and fails at -O2. At execution at -O2 I get under gdb:
$ gdb ./cc70a01
(gdb) r
Starting program: /home/guerby/tmp/cc70a01
,.,. CC70A01 ACATS 2.5 08-11-14 16:42:49
---- CC70A01 Check that the visible part of a generic formal package
includes the first list of basic declarative items of
the package specification. Check for a generic package
where formal package has (<>) actual part.
Program received signal SIGSEGV, Segmentation fault.
uw_update_context_1 (context=0xffa31018, fs=0xffa30cb0) at ../../../trunk/libgcc/../gcc/unwind-dw2.c:177
177 return * (_Unwind_Ptr *) ptr;
Current language: auto; currently c
(gdb) bt
#0 uw_update_context_1 (context=0xffa31018, fs=0xffa30cb0) at ../../../trunk/libgcc/../gcc/unwind-dw2.c:177
#1 0x00032c1c in uw_update_context (context=0xffa31018, fs=0xffa30cb0) at ../../../trunk/libgcc/../gcc/unwind-dw2.c:1388
#2 0x00033c84 in _Unwind_RaiseException (exc=0x5a038) at ../../../trunk/libgcc/../gcc/unwind.inc:127
#3 0x000175f4 in ada.exceptions.exception_propagation.propagate_exception (e=0x54840, from_signal_handler=false) at a-exexpr.adb:589
#4 0x00018364 in <__gnat_raise_nodefer_with_msg> (e=0x54840) at a-except.adb:829
#5 0x00018400 in <__gnat_raise_exception> (e=0x54840, message={P_ARRAY = 0xffa30bd0, P_BOUNDS = 0x36098}) at a-except.adb:868
#6 0x00013604 in cc70a01.my_matrix_package."*" (left={P_ARRAY = 0x40000000, P_BOUNDS = 0x3603c}, right={P_ARRAY = 0xffa31780, P_BOUNDS = 0x3602c}) at cc70a01_0.adb:51
#7 0x00013e18 in cc70a01 () at cc70a01.adb:55
(gdb) info local
orig_context = {reg = {0x0 <repeats 14 times>, 0xffa30bcc, 0xffa3159c, 0x0, 0x4, 0x8, 0xc, 0x10, 0x14, 0x18, 0x1c, 0x20, 0x24, 0x28, 0x2c, 0x30, 0x34, 0x38, 0x3c, 0x0 <repeats 71 times>}, cfa = 0x0,
ra = 0x13604, lsda = 0x416ef, bases = {tbase = 0x0, dbase = 0x0, func = 0x1347c}, flags = 1073741824, version = 0, args_size = 0, by_value = '\0' <repeats 102 times>}
cfa = <value optimized out>
tmp_sp = {ptr = 0, word = 0}
(gdb)
,.,. CXA4016 ACATS 2.5 08-11-14 15:44:39
---- CXA4016 Check that the subprograms defined in package
Ada.Strings.Wide_Fixed are available, and that they
produce correct results.
/home/guerby/trunk/gcc/testsuite/ada/acats/run_all.sh: line 15: 3111 Erreur de segmentation $*
FAIL: cxa4016
This one fails at -O0 and above, the backtrace is similar to cc70a01:
(gdb) r
Starting program: /home/guerby/tmp/cxa4016
,.,. CXA4016 ACATS 2.5 08-11-14 16:48:57
---- CXA4016 Check that the subprograms defined in package
Ada.Strings.Wide_Fixed are available, and that they
produce correct results.
Program received signal SIGSEGV, Segmentation fault.
uw_update_context_1 (context=0xffab41f0, fs=0xffab3e88) at ../../../trunk/libgcc/../gcc/unwind-dw2.c:177
177 return * (_Unwind_Ptr *) ptr;
Current language: auto; currently c
(gdb) bt
#0 uw_update_context_1 (context=0xffab41f0, fs=0xffab3e88) at ../../../trunk/libgcc/../gcc/unwind-dw2.c:177
#1 0x000441b8 in uw_update_context (context=0xffab41f0, fs=0xffab3e88) at ../../../trunk/libgcc/../gcc/unwind-dw2.c:1388
#2 0x00045220 in _Unwind_RaiseException (exc=0x6e098) at ../../../trunk/libgcc/../gcc/unwind.inc:127
#3 0x00021df0 in ada.exceptions.exception_propagation.propagate_exception (e=0x68994, from_signal_handler=false) at a-exexpr.adb:589
#4 0x00022b60 in <__gnat_raise_nodefer_with_msg> (e=0x68994) at a-except.adb:829
#5 0x00022bfc in <__gnat_raise_exception> (e=0x68994, message={P_ARRAY = 0xffab3da8, P_BOUNDS = 0x49d80}) at a-except.adb:868
#6 0x00025b88 in ada.strings.wide_fixed.replace_slice (source={P_ARRAY = 0xffab52c4, P_BOUNDS = 0xffab4908}, low=12, high=10, by={P_ARRAY = 0x47ed8, P_BOUNDS = 0xffab4900}) at a-stwifi.adb:447
#7 0x00026934 in ada.strings.wide_fixed.replace_slice (source={P_ARRAY = 0xffab52c4, P_BOUNDS = 0x47ed0}, low=12, high=10, by={P_ARRAY = 0x47ed8, P_BOUNDS = 0x47ee8}, drop=ada__strings__error,
justify=ada__strings__left, pad=32 ' ') at a-stwifi.adb:480
#8 0x00017e64 in cxa4016 () at cxa4016.adb:131
(gdb) info local
orig_context = {reg = {0x0 <repeats 14 times>, 0xffab3da4, 0xffab4774, 0x0, 0x4, 0x8, 0xc, 0x10, 0x14, 0x18, 0x1c, 0x20, 0x24, 0x28, 0x2c, 0x30, 0x34, 0x38, 0x3c, 0x0 <repeats 71 times>}, cfa = 0x0,
ra = 0x25b88, lsda = 0x55aff, bases = {tbase = 0x0, dbase = 0x0, func = 0x25968}, flags = 1073741824, version = 0, args_size = 0, by_value = '\0' <repeats 102 times>}
cfa = <value optimized out>
tmp_sp = {ptr = 0, word = 0}
,.,. CD1C04E ACATS 2.5 08-11-14 15:16:58
---- CD1C04E CHECK THAT A RECORD REPRESENTATION CLAUSE CAN BE GIVEN FOR
A DERIVED RECORD TYPE EVEN IF THE REPRESENTATION IS
INHERITED FROM THE PARENT, AND THAT THE REPRESENTATION
CLAUSE FOR THE DERIVED TYPE OVERRIDES THAT OF THE PARENT
TYPE.
* CD1C04E THE VALUES OF DERIVED_TYPE COMPONENTS WERE INCORRECT.
**** CD1C04E FAILED ****************************.
FAIL: cd1c04e
cd1c04e pass at -O0 and starts failing at -O1.
On Mon, 2008-11-10 at 23:56 +0100, Eric Botcazou wrote:
> Hi,
>
> the problem is responsible for ACATS and C++ failures on SPARC/Solaris,
> for example g++.old-deja/g++.eh/inline2.C. IRA doesn't correctly deal
> with EH_RETURN_DATA_REGNO, unlike the old RA:
...
> 2008-11-10 Eric Botcazou <ebotcazou@adacore.com>
>
> * ira-lives.c (process_bb_node_lives): Deal with EH_RETURN_DATA_REGNO.
>
>