This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Why doesn't -fomit-frame-pointer work(very well)?
- From: "Ulrich Weigand" <Ulrich dot Weigand at de dot ibm dot com>
- To: Peter Barada <pbarada at mail dot wm dot sps dot mot dot com>
- Cc: weigand at immd1 dot informatik dot uni-erlangen dot de, Peter dot Barada at motorola dot com, rth at redhat dot com, gcc at gcc dot gnu dot org
- Date: Thu, 4 Apr 2002 17:02:25 +0200
- Subject: Re: Why doesn't -fomit-frame-pointer work(very well)?
- Sensitivity:
Peter Barada wrote:
>>- Changing FIRST_PSEUDO_REGISTER causes an ABI change
>>in libgcc, unless DWARF_FRAME_REGISTERS is defined ...
>
>I only see DWARF_FRAME_REGSITERS in i386.h and rs6000.h, and no
>documentation on what DWARF_FRAME_REGSITERS should be defined as.
>For the moment I'll define it to be what FIRST_PSEUDO_REGISTER *was*.
config/s390/s390.h does define DWARF_FRAME_REGISTERS (both in
HEAD and gcc-3_1-branch, not however in gcc 3.0.x).
If it is not defined, it'll default to FIRST_PSEUDO_REGISTER,
so I think should should indeed set it to what FIRST_PSEUDO_REGISTER
was before your change.
>>- If you are using REG_ALLOC_ORDER, make sure that *all*
>>hard registers are listed, or else you'll get rare and
>>hard to reproduce reload failures ...
>
>Since the two register I'm adding are virtual, then that should change
>REG_ALLOC_ORDER since thoser oare *physical* registers...
In regclass.c you'll find
int reg_alloc_order[FIRST_PSEUDO_REGISTER] = REG_ALLOC_ORDER;
and the users of reg_alloc_order likewise assume that all
FIRST_PSEUDO_REGISTER many entries of that array are filled.
If REG_ALLOC_ORDER is shorter, you'll have multiple copies of
register 0 in reg_alloc_order, which can confuse reload.
Mit freundlichen Gruessen / Best Regards
Ulrich Weigand
--
Dr. Ulrich Weigand
Linux for S/390 Design & Development
IBM Deutschland Entwicklung GmbH, Schoenaicher Str. 220, 71032 Boeblingen
Phone: +49-7031/16-3727 --- Email: Ulrich.Weigand@de.ibm.com
Peter Barada <pbarada@mail.wm.sps.mot.com> on 04.04.2002 16:50:12
Please respond to Peter Barada <pbarada@mail.wm.sps.mot.com>
To: weigand@immd1.informatik.uni-erlangen.de
cc: Peter.Barada@motorola.com, rth@redhat.com, gcc@gcc.gnu.org, Ulrich
Weigand/Germany/IBM@IBMDE
Subject: Re: Why doesn't -fomit-frame-pointer work(very well)?
>> Is there anything else that I'm missing?
>
>- Changing FIRST_PSEUDO_REGISTER causes an ABI change
>in libgcc, unless DWARF_FRAME_REGISTERS is defined ...
I only see DWARF_FRAME_REGSITERS in i386.h and rs6000.h, and no
documentation on what DWARF_FRAME_REGSITERS should be defined as.
For the moment I'll define it to be what FIRST_PSEUDO_REGISTER *was*.
>- If you are using REG_ALLOC_ORDER, make sure that *all*
>hard registers are listed, or else you'll get rare and
>hard to reproduce reload failures ...
Since the two register I'm adding are virtual, then that should change
REG_ALLOC_ORDER since thoser oare *physical* registers...
--
Peter Barada Peter.Barada@motorola.com
Wizard 781-852-2768 (direct)
WaveMark Solutions(wholly owned by Motorola) 781-270-0193 (fax)