This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[3.1] locate_and_pad_parm Change Hurts mips-sgi-irix6.5
- To: grahams at redhat dot com
- Subject: [3.1] locate_and_pad_parm Change Hurts mips-sgi-irix6.5
- From: Jeffrey Oldham <oldham at codesourcery dot com>
- Date: Tue, 31 Jul 2001 18:37:26 -0700
- Cc: gcc-bugs at gcc dot gnu dot org, Jeffrey Oldham <oldham at codesourcery dot com>
- Organization: CodeSourcery LLC
Starting 26July, bootstrapping gcc3.1 for mips-sgi-irix6.5 has died
when running f/fini. Binary search revealed your 26Jul change to
gcc/function.c's locate_and_pad_parm (see the attachment) causes the
problem.
Will you please investigate and fix the problem? See the information
below.
Also, where is the gcc-patches message explaining the patch,
illustrating the patch, listing the person approving the patch, and
listing the platform on which you tested the patch.
Thanks,
Jeffrey D. Oldham
oldham@codesourcery.com
gcc 3.1 on mips-sgi-irix6.5
/users/joldham/pooma/dev0/gcc/configure --with-gcc-version-trigger=/users/joldham/pooma/dev0/gcc/gcc/version.c --host=mips-sgi-irix6.5 --prefix=/users/joldham/pooma/dev0/install/mips-sgi-irix6.5 --norecursion
Modifying f/fini.c by adding one line in apparently random places
seems to resolve the problem. I do not know how to recreate the
problem using a cross compiler.
...
stage1/xgcc -Bstage1/ -B/users/joldham/pooma/dev0/install/mips-sgi-irix6.5/mips-sgi-irix6.5/bin/ -DIN_GCC -g -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -DHAVE_CONFIG_H -DGENERATOR_FILE -o f/fini \
f/fini.o f/proj-h.o safe-ctype.o
/bin/sh /users/joldham/pooma/dev0/gcc/gcc/move-if-change tmp-mlib.h multilib.h
./gencheck > tmp-check.h
/bin/sh /users/joldham/pooma/dev0/gcc/gcc/move-if-change tmp-check.h tree-check.h
multilib.h is unchanged
echo timestamp > s-mlib
echo timestamp > s-check
./f/fini /users/joldham/pooma/dev0/gcc/gcc/f/str-1t.fin f/str-1t.j f/str-1t.h
./f/fini /users/joldham/pooma/dev0/gcc/gcc/f/str-1t.fin f/str-1t.j f/str-1t.h
./f/fini /users/joldham/pooma/dev0/gcc/gcc/f/str-2t.fin f/str-2t.j f/str-2t.h
./f/fini /users/joldham/pooma/dev0/gcc/gcc/f/str-2t.fin f/str-2t.j f/str-2t.h
./f/fini /users/joldham/pooma/dev0/gcc/gcc/f/str-fo.fin f/str-fo.j f/str-fo.h
./f/fini /users/joldham/pooma/dev0/gcc/gcc/f/str-fo.fin f/str-fo.j f/str-fo.h
./f/fini /users/joldham/pooma/dev0/gcc/gcc/f/str-io.fin f/str-io.j f/str-io.h
./f/fini /users/joldham/pooma/dev0/gcc/gcc/f/str-io.fin f/str-io.j f/str-io.h
./f/fini /users/joldham/pooma/dev0/gcc/gcc/f/str-nq.fin f/str-nq.j f/str-nq.h
./f/fini /users/joldham/pooma/dev0/gcc/gcc/f/str-nq.fin f/str-nq.j f/str-nq.h
./f/fini /users/joldham/pooma/dev0/gcc/gcc/f/str-op.fin f/str-op.j f/str-op.h
./f/fini /users/joldham/pooma/dev0/gcc/gcc/f/str-op.fin f/str-op.j f/str-op.h
./f/fini /users/joldham/pooma/dev0/gcc/gcc/f/str-ot.fin f/str-ot.j f/str-ot.h
./f/fini /users/joldham/pooma/dev0/gcc/gcc/f/str-ot.fin f/str-ot.j f/str-ot.h
make[2]: *** [f/str-1t.h] Segmentation fault (core dumped)
make[2]: *** Deleting file `f/str-1t.h'
make[2]: *** Waiting for unfinished jobs....
make[2]: *** [f/str-1t.j] Segmentation fault (core dumped)
make[2]: *** Deleting file `f/str-1t.j'
make[1]: *** [stage2_build] Error 2
make[1]: Leaving directory `/am/mother/vol/vol2/frameworks/pooma/joldham/dev0/gcc/objdir/gcc'
make: *** [bootstrap] Error 2
gcc_build: error: Could not bootstrap the compiler
Index: gcc/function.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/function.c,v
retrieving revision 1.283
retrieving revision 1.284
diff -c -p -r1.283 -r1.284
*** function.c 2001/07/11 20:35:51 1.283
--- function.c 2001/07/26 05:45:25 1.284
*************** locate_and_pad_parm (passed_mode, type,
*** 5264,5270 ****
/* However, BLKmode args passed in regs have their padding done elsewhere.
The stack slot must be able to hold the entire register. */
&& !(in_regs && passed_mode == BLKmode))
! pad_below (offset_ptr, passed_mode, sizetree);
if (where_pad != none
&& (!host_integerp (sizetree, 1)
--- 5264,5273 ----
/* However, BLKmode args passed in regs have their padding done elsewhere.
The stack slot must be able to hold the entire register. */
&& !(in_regs && passed_mode == BLKmode))
! {
! pad_below (offset_ptr, passed_mode, sizetree);
! pad_below (initial_offset_ptr, passed_mode, sizetree);
! }
if (where_pad != none
&& (!host_integerp (sizetree, 1)