This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug fortran/30478] FAIL: gfortran.dg/enum_2.f90 -O (internal compiler error)
- From: "dave at hiauly1 dot hia dot nrc dot ca" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 16 Jan 2007 01:47:25 -0000
- Subject: [Bug fortran/30478] FAIL: gfortran.dg/enum_2.f90 -O (internal compiler error)
- References: <bug-30478-276@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #2 from dave at hiauly1 dot hia dot nrc dot ca 2007-01-16 01:47 -------
Subject: Re: FAIL: gfortran.dg/enum_2.f90 -O (internal compiler error)
> ------- Comment #1 from kargl at gcc dot gnu dot org 2007-01-16 00:54 -------
> \> 0x003e75d8 in __gmpz_add_ui ()
> > (gdb) bt
> > #0 0x003e75d8 in __gmpz_add_ui ()
> > #1 0x0003402c in gfc_enum_initializer (last_initializer=0x400817a8, where=
> > {nextc = 0x0, lb = 0x0}) at ../../gcc/gcc/fortran/arith.c:2475
>
> Is your source up to date? arith.c contains 2447 lines of code.
Yes.
# svn diff arith.c
# wc arith.c
2493 6785 59118 arith.c
The call is here:
if (last_initializer != NULL)
{
mpz_add_ui (result->value.integer, last_initializer->value.integer, 1);
Note, that this is 4.1.2.
> > Dump of assembler code from 0x3e75c8 to 0x3e75e8:
> > 0x003e75c8 <__gmpz_add_ui+104>: ldw -70(sp),r3
> > 0x003e75cc <__gmpz_add_ui+108>: bv r0(rp)
> > 0x003e75d0 <__gmpz_add_ui+112>: ldw,mb -80(sp),r7
> > 0x003e75d4 <__gmpz_add_ui+116>: cmpib,>,n 0,r4,0x3e76d4 <__gmpz_add_ui+372>
> > 0x003e75d8 <__gmpz_add_ui+120>: ldw 0(r25),ret0
> > 0x003e75dc <__gmpz_add_ui+124>: add,l r5,ret0,ret0
> > 0x003e75e0 <__gmpz_add_ui+128>: cmpb,>>= ret0,r5,0x3e769c <__gmpz_add_ui+316>
> > 0x003e75e4 <__gmpz_add_ui+132>: stw ret0,0(r22)
> >
>
> This suggests that you have a broken GMP, which isn't a gfortran problem.
We have for gmpz_add_ui in gmp.h:
#define mpz_add_ui __gmpz_add_ui
__GMP_DECLSPEC void mpz_add_ui __GMP_PROTO ((mpz_ptr, mpz_srcptr, unsigned long
int));
typedef __mpz_struct *mpz_ptr;
typedef __gmp_const __mpz_struct *mpz_srcptr;
Looking at the code in __gmpz_add_ui, it would appear that there is a
problem with the _mp_d field in the struct (i.e., null value). As this
has to be setup before the call and the call is from gfortran, it's not
clear that this is a GMP problem.
I started a new build so I can't debug this further until it completes.
Dave
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30478