[parisc-linux] Re: g++ (3.3): ...Error: Field out of range
John David Anglin
dave@hiauly1.hia.nrc.ca
Thu, 19 Jun 2003 11:40:32 -0400 (EDT)
Hi Joel,
Putting me on the CC list of the PR would be appreciated.
> > I would suggest that the code being generated for this fuction
> > isn't going to be very good. Whenever at function
> > exceeds 240KB in size, then GCC needs to generate long branches
> > for function calls and some internal branches. These sequences
> > are much longer and less efficient. You can tweak the parameter
> > of the GCC's inlining model and probably reduce the size of
> > the generated code. The parameters are settable from the
> > command line and are documented in the manual, etc.
>
> hmm I found well severall cmd line parameter concerning inline stuff and
> I was first tempted to test
> -finline-limit=225000 (doesn't help)
> -finline-limit=120000 (doesn't help more)
> too bad :-(
These are the options that provide detailed control for inlining:
--param max-inline-insns-rtl=<value> The maximum number of instructions for the RTL inliner
--param min-inline-insns=<value> The number of instructions in a single functions still eligible to inlining after a lot recursive inlining
--param max-inline-slope=<value> The slope of the linear function throttling inlining after the recursive inlining limit has been reached is given by the negative reciprocal value of this parameter
--param max-inline-insns=<value> The maximum number of instructions by repeated inlining before gcc starts to throttle inlining
--param max-inline-insns-auto=<value> The maximum number of instructions when automatically inlining
--param max-inline-insns-single=<value> The maximum number of instructions in a single function eligible for inlining
The RTL is not used by C or C++ anymore. Look in the GCC file params.def
for the defaults and discussion. I think reducing PARAM_MAX_INLINE_INSNS
from its default of 600 to something in the range of 200-300, or less will
help. You might also make the slope more aggressive. I know that changes
are needed to build LyX (see <http://gcc.gnu.org/PR?10160>).
Dave
--
J. David Anglin dave.anglin@nrc-cnrc.gc.ca
National Research Council of Canada (613) 990-0752 (FAX: 952-6602)