This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: GCC trunk SPEC2000 performance
> Yes, that seems to be the same failure:
> /usr/src/SpecTests/d-permanent/i686/install-200206200731/bin/g77 -c -o apsi.o -O3 -fomit-frame-pointer -march=athlon -funroll-all-loops -fstrict-aliasing -malign-double -fprefetch-loop-arrays apsi.f
> apsi.f: In subroutine `uvset':
> apsi.f:4327: internal compiler error: RTL flag check: REG_POINTER used with unexpected rtx code `mem' in copy_rtx_and_substitute, at integrate.c:2065
> Please submit a full bug report,
> with preprocessed source if appropriate.
> See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
> specmake: *** [apsi.o] Error 1
Hmm, obvious fix appears to be the patch attached. I am not at all sure
whether it is the sane fix, as I don't understand the difference between
first and second operand of addressof (need for the second operand).
I also can't test whether it works, as I don't have SPEC sources here.
Index: integrate.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/integrate.c,v
retrieving revision 1.197
diff -c -3 -p -r1.197 integrate.c
*** integrate.c 11 Jun 2002 12:21:46 -0000 1.197
--- integrate.c 20 Jun 2002 15:16:19 -0000
*************** copy_rtx_and_substitute (orig, map, for_
*** 2062,2068 ****
RTX_UNCHANGING_P (map->reg_map[regno]) = RTX_UNCHANGING_P (temp);
/* A reg with REG_FUNCTION_VALUE_P true will never reach here. */
! if (REG_POINTER (map->x_regno_reg_rtx[regno]))
mark_reg_pointer (map->reg_map[regno],
map->regno_pointer_align[regno]);
regno = REGNO (map->reg_map[regno]);
--- 2062,2069 ----
RTX_UNCHANGING_P (map->reg_map[regno]) = RTX_UNCHANGING_P (temp);
/* A reg with REG_FUNCTION_VALUE_P true will never reach here. */
! if (REG_P (map->x_regno_reg_rtx[regno])
! && REG_POINTER (map->x_regno_reg_rtx[regno]))
mark_reg_pointer (map->reg_map[regno],
map->regno_pointer_align[regno]);
regno = REGNO (map->reg_map[regno]);