This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Fix wrong register allocation for EH


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.
> 	
> 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]