2001-02-14 17:24:45 +01:00
|
|
|
/* params.def - Run-time parameters.
|
2005-01-20 13:45:13 +01:00
|
|
|
Copyright (C) 2001, 2002, 2004, 2005 Free Software Foundation, Inc.
|
2001-02-14 17:24:45 +01:00
|
|
|
Written by Mark Mitchell <mark@codesourcery.com>.
|
|
|
|
|
Makefile.in, [...]: replace "GNU CC" with "GCC".
* Makefile.in, alias.c, basic-block.h, bb-reorder.c, bitmap.c,
bitmap.h, builtin-types.def, builtins.c, builtins.def,
c-aux-info.c, c-common.c, c-common.def, c-common.h,
c-convert.c, c-decl.c, c-dump.c, c-dump.h, c-errors.c,
c-format.c, c-lang.c, c-lex.c, c-lex.h, c-parse.in,
c-pragma.c, c-pragma.h, c-semantics.c, c-tree.h, c-typeck.c,
caller-save.c, calls.c, collect2.c, collect2.h, combine.c,
conditions.h, config.gcc, configure.frag, configure.in,
conflict.c, convert.c, convert.h, cppspec.c, crtstuff.c,
cse.c, cselib.c, cselib.h, dbxout.c, dbxout.h, defaults.h,
dependence.c, df.c, df.h, diagnostic.c, diagnostic.h,
doloop.c, dominance.c, dwarf.h, dwarf2.h, dwarf2asm.c,
dwarf2asm.h, dwarf2out.c, dwarf2out.h, dwarfout.c,
emit-rtl.c, errors.c, errors.h, except.c, except.h,
exgettext, explow.c, expmed.c, expr.c, expr.h, final.c,
fixproto, flags.h, flow.c, fold-const.c, fp-test.c,
function.c, function.h, gbl-ctors.h, gcc.c, gcc.h, gcc.hlp,
gccspec.c, gcov-io.h, gcse.c, genattr.c, genattrtab.c,
gencheck.c, gencodes.c, genconfig.c, genemit.c,
genextract.c, genflags.c, gengenrtl.c, genmultilib,
genopinit.c, genoutput.c, genpeep.c, genrecog.c,
gensupport.c, gensupport.h, ggc-callbacks.c, ggc-common.c,
ggc-none.c, ggc-page.c, ggc-simple.c, ggc.h, global.c,
graph.c, graph.h, gthr-aix.h, gthr-dce.h, gthr-posix.h,
gthr-rtems.h, gthr-single.h, gthr-solaris.h, gthr-vxworks.h,
gthr-win32.h, gthr.h, haifa-sched.c, halfpic.c, halfpic.h,
hard-reg-set.h, hwint.h, ifcvt.c, input.h, insn-addr.h,
integrate.c, integrate.h, jump.c, lcm.c, libgcc2.c,
libgcc2.h, lists.c, local-alloc.c, loop.c, loop.h,
machmode.def, machmode.h, main.c, mbchar.c, mbchar.h,
mips-tdump.c, mips-tfile.c, mklibgcc.in, mkmap-flat.awk,
mkmap-symver.awk, optabs.c, output.h, params.c, params.def,
params.h, predict.c, predict.def, predict.h, prefix.c,
prefix.h, print-rtl.c, print-tree.c, profile.c, protoize.c,
read-rtl.c, real.c, real.h, recog.c, recog.h, reg-stack.c,
regclass.c, regmove.c, regrename.c, regs.h, reload.c,
reload.h, reload1.c, reorg.c, resource.c, resource.h, rtl.c,
rtl.def, rtl.h, rtlanal.c, sbitmap.c, sbitmap.h,
sched-deps.c, sched-ebb.c, sched-int.h, sched-rgn.c,
sched-vis.c, sdbout.c, sdbout.h, sibcall.c, simplify-rtx.c,
ssa-ccp.c, ssa-dce.c, ssa.c, ssa.h, stmt.c, stor-layout.c,
stringpool.c, system.h, timevar.c, timevar.def, timevar.h,
tlink.c, toplev.c, toplev.h, tree.c, tree.def, tree.h,
tsystem.h, unroll.c, unwind-dw2-fde.c, unwind-dw2-fde.h,
unwind-dw2.c, unwind-pe.h, unwind-sjlj.c, unwind.h,
unwind.inc, varasm.c, varray.c, varray.h, xcoffout.c,
xcoffout.h: replace "GNU CC" with "GCC".
From-SVN: r45105
2001-08-22 16:35:51 +02:00
|
|
|
This file is part of GCC.
|
2001-02-14 17:24:45 +01:00
|
|
|
|
Makefile.in, [...]: replace "GNU CC" with "GCC".
* Makefile.in, alias.c, basic-block.h, bb-reorder.c, bitmap.c,
bitmap.h, builtin-types.def, builtins.c, builtins.def,
c-aux-info.c, c-common.c, c-common.def, c-common.h,
c-convert.c, c-decl.c, c-dump.c, c-dump.h, c-errors.c,
c-format.c, c-lang.c, c-lex.c, c-lex.h, c-parse.in,
c-pragma.c, c-pragma.h, c-semantics.c, c-tree.h, c-typeck.c,
caller-save.c, calls.c, collect2.c, collect2.h, combine.c,
conditions.h, config.gcc, configure.frag, configure.in,
conflict.c, convert.c, convert.h, cppspec.c, crtstuff.c,
cse.c, cselib.c, cselib.h, dbxout.c, dbxout.h, defaults.h,
dependence.c, df.c, df.h, diagnostic.c, diagnostic.h,
doloop.c, dominance.c, dwarf.h, dwarf2.h, dwarf2asm.c,
dwarf2asm.h, dwarf2out.c, dwarf2out.h, dwarfout.c,
emit-rtl.c, errors.c, errors.h, except.c, except.h,
exgettext, explow.c, expmed.c, expr.c, expr.h, final.c,
fixproto, flags.h, flow.c, fold-const.c, fp-test.c,
function.c, function.h, gbl-ctors.h, gcc.c, gcc.h, gcc.hlp,
gccspec.c, gcov-io.h, gcse.c, genattr.c, genattrtab.c,
gencheck.c, gencodes.c, genconfig.c, genemit.c,
genextract.c, genflags.c, gengenrtl.c, genmultilib,
genopinit.c, genoutput.c, genpeep.c, genrecog.c,
gensupport.c, gensupport.h, ggc-callbacks.c, ggc-common.c,
ggc-none.c, ggc-page.c, ggc-simple.c, ggc.h, global.c,
graph.c, graph.h, gthr-aix.h, gthr-dce.h, gthr-posix.h,
gthr-rtems.h, gthr-single.h, gthr-solaris.h, gthr-vxworks.h,
gthr-win32.h, gthr.h, haifa-sched.c, halfpic.c, halfpic.h,
hard-reg-set.h, hwint.h, ifcvt.c, input.h, insn-addr.h,
integrate.c, integrate.h, jump.c, lcm.c, libgcc2.c,
libgcc2.h, lists.c, local-alloc.c, loop.c, loop.h,
machmode.def, machmode.h, main.c, mbchar.c, mbchar.h,
mips-tdump.c, mips-tfile.c, mklibgcc.in, mkmap-flat.awk,
mkmap-symver.awk, optabs.c, output.h, params.c, params.def,
params.h, predict.c, predict.def, predict.h, prefix.c,
prefix.h, print-rtl.c, print-tree.c, profile.c, protoize.c,
read-rtl.c, real.c, real.h, recog.c, recog.h, reg-stack.c,
regclass.c, regmove.c, regrename.c, regs.h, reload.c,
reload.h, reload1.c, reorg.c, resource.c, resource.h, rtl.c,
rtl.def, rtl.h, rtlanal.c, sbitmap.c, sbitmap.h,
sched-deps.c, sched-ebb.c, sched-int.h, sched-rgn.c,
sched-vis.c, sdbout.c, sdbout.h, sibcall.c, simplify-rtx.c,
ssa-ccp.c, ssa-dce.c, ssa.c, ssa.h, stmt.c, stor-layout.c,
stringpool.c, system.h, timevar.c, timevar.def, timevar.h,
tlink.c, toplev.c, toplev.h, tree.c, tree.def, tree.h,
tsystem.h, unroll.c, unwind-dw2-fde.c, unwind-dw2-fde.h,
unwind-dw2.c, unwind-pe.h, unwind-sjlj.c, unwind.h,
unwind.inc, varasm.c, varray.c, varray.h, xcoffout.c,
xcoffout.h: replace "GNU CC" with "GCC".
From-SVN: r45105
2001-08-22 16:35:51 +02:00
|
|
|
GCC is free software; you can redistribute it and/or modify it under
|
|
|
|
the terms of the GNU General Public License as published by the Free
|
|
|
|
Software Foundation; either version 2, or (at your option) any later
|
|
|
|
version.
|
2001-02-14 17:24:45 +01:00
|
|
|
|
Makefile.in, [...]: replace "GNU CC" with "GCC".
* Makefile.in, alias.c, basic-block.h, bb-reorder.c, bitmap.c,
bitmap.h, builtin-types.def, builtins.c, builtins.def,
c-aux-info.c, c-common.c, c-common.def, c-common.h,
c-convert.c, c-decl.c, c-dump.c, c-dump.h, c-errors.c,
c-format.c, c-lang.c, c-lex.c, c-lex.h, c-parse.in,
c-pragma.c, c-pragma.h, c-semantics.c, c-tree.h, c-typeck.c,
caller-save.c, calls.c, collect2.c, collect2.h, combine.c,
conditions.h, config.gcc, configure.frag, configure.in,
conflict.c, convert.c, convert.h, cppspec.c, crtstuff.c,
cse.c, cselib.c, cselib.h, dbxout.c, dbxout.h, defaults.h,
dependence.c, df.c, df.h, diagnostic.c, diagnostic.h,
doloop.c, dominance.c, dwarf.h, dwarf2.h, dwarf2asm.c,
dwarf2asm.h, dwarf2out.c, dwarf2out.h, dwarfout.c,
emit-rtl.c, errors.c, errors.h, except.c, except.h,
exgettext, explow.c, expmed.c, expr.c, expr.h, final.c,
fixproto, flags.h, flow.c, fold-const.c, fp-test.c,
function.c, function.h, gbl-ctors.h, gcc.c, gcc.h, gcc.hlp,
gccspec.c, gcov-io.h, gcse.c, genattr.c, genattrtab.c,
gencheck.c, gencodes.c, genconfig.c, genemit.c,
genextract.c, genflags.c, gengenrtl.c, genmultilib,
genopinit.c, genoutput.c, genpeep.c, genrecog.c,
gensupport.c, gensupport.h, ggc-callbacks.c, ggc-common.c,
ggc-none.c, ggc-page.c, ggc-simple.c, ggc.h, global.c,
graph.c, graph.h, gthr-aix.h, gthr-dce.h, gthr-posix.h,
gthr-rtems.h, gthr-single.h, gthr-solaris.h, gthr-vxworks.h,
gthr-win32.h, gthr.h, haifa-sched.c, halfpic.c, halfpic.h,
hard-reg-set.h, hwint.h, ifcvt.c, input.h, insn-addr.h,
integrate.c, integrate.h, jump.c, lcm.c, libgcc2.c,
libgcc2.h, lists.c, local-alloc.c, loop.c, loop.h,
machmode.def, machmode.h, main.c, mbchar.c, mbchar.h,
mips-tdump.c, mips-tfile.c, mklibgcc.in, mkmap-flat.awk,
mkmap-symver.awk, optabs.c, output.h, params.c, params.def,
params.h, predict.c, predict.def, predict.h, prefix.c,
prefix.h, print-rtl.c, print-tree.c, profile.c, protoize.c,
read-rtl.c, real.c, real.h, recog.c, recog.h, reg-stack.c,
regclass.c, regmove.c, regrename.c, regs.h, reload.c,
reload.h, reload1.c, reorg.c, resource.c, resource.h, rtl.c,
rtl.def, rtl.h, rtlanal.c, sbitmap.c, sbitmap.h,
sched-deps.c, sched-ebb.c, sched-int.h, sched-rgn.c,
sched-vis.c, sdbout.c, sdbout.h, sibcall.c, simplify-rtx.c,
ssa-ccp.c, ssa-dce.c, ssa.c, ssa.h, stmt.c, stor-layout.c,
stringpool.c, system.h, timevar.c, timevar.def, timevar.h,
tlink.c, toplev.c, toplev.h, tree.c, tree.def, tree.h,
tsystem.h, unroll.c, unwind-dw2-fde.c, unwind-dw2-fde.h,
unwind-dw2.c, unwind-pe.h, unwind-sjlj.c, unwind.h,
unwind.inc, varasm.c, varray.c, varray.h, xcoffout.c,
xcoffout.h: replace "GNU CC" with "GCC".
From-SVN: r45105
2001-08-22 16:35:51 +02:00
|
|
|
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
|
|
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
|
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
|
|
for more details.
|
2001-02-14 17:24:45 +01:00
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License
|
Makefile.in, [...]: replace "GNU CC" with "GCC".
* Makefile.in, alias.c, basic-block.h, bb-reorder.c, bitmap.c,
bitmap.h, builtin-types.def, builtins.c, builtins.def,
c-aux-info.c, c-common.c, c-common.def, c-common.h,
c-convert.c, c-decl.c, c-dump.c, c-dump.h, c-errors.c,
c-format.c, c-lang.c, c-lex.c, c-lex.h, c-parse.in,
c-pragma.c, c-pragma.h, c-semantics.c, c-tree.h, c-typeck.c,
caller-save.c, calls.c, collect2.c, collect2.h, combine.c,
conditions.h, config.gcc, configure.frag, configure.in,
conflict.c, convert.c, convert.h, cppspec.c, crtstuff.c,
cse.c, cselib.c, cselib.h, dbxout.c, dbxout.h, defaults.h,
dependence.c, df.c, df.h, diagnostic.c, diagnostic.h,
doloop.c, dominance.c, dwarf.h, dwarf2.h, dwarf2asm.c,
dwarf2asm.h, dwarf2out.c, dwarf2out.h, dwarfout.c,
emit-rtl.c, errors.c, errors.h, except.c, except.h,
exgettext, explow.c, expmed.c, expr.c, expr.h, final.c,
fixproto, flags.h, flow.c, fold-const.c, fp-test.c,
function.c, function.h, gbl-ctors.h, gcc.c, gcc.h, gcc.hlp,
gccspec.c, gcov-io.h, gcse.c, genattr.c, genattrtab.c,
gencheck.c, gencodes.c, genconfig.c, genemit.c,
genextract.c, genflags.c, gengenrtl.c, genmultilib,
genopinit.c, genoutput.c, genpeep.c, genrecog.c,
gensupport.c, gensupport.h, ggc-callbacks.c, ggc-common.c,
ggc-none.c, ggc-page.c, ggc-simple.c, ggc.h, global.c,
graph.c, graph.h, gthr-aix.h, gthr-dce.h, gthr-posix.h,
gthr-rtems.h, gthr-single.h, gthr-solaris.h, gthr-vxworks.h,
gthr-win32.h, gthr.h, haifa-sched.c, halfpic.c, halfpic.h,
hard-reg-set.h, hwint.h, ifcvt.c, input.h, insn-addr.h,
integrate.c, integrate.h, jump.c, lcm.c, libgcc2.c,
libgcc2.h, lists.c, local-alloc.c, loop.c, loop.h,
machmode.def, machmode.h, main.c, mbchar.c, mbchar.h,
mips-tdump.c, mips-tfile.c, mklibgcc.in, mkmap-flat.awk,
mkmap-symver.awk, optabs.c, output.h, params.c, params.def,
params.h, predict.c, predict.def, predict.h, prefix.c,
prefix.h, print-rtl.c, print-tree.c, profile.c, protoize.c,
read-rtl.c, real.c, real.h, recog.c, recog.h, reg-stack.c,
regclass.c, regmove.c, regrename.c, regs.h, reload.c,
reload.h, reload1.c, reorg.c, resource.c, resource.h, rtl.c,
rtl.def, rtl.h, rtlanal.c, sbitmap.c, sbitmap.h,
sched-deps.c, sched-ebb.c, sched-int.h, sched-rgn.c,
sched-vis.c, sdbout.c, sdbout.h, sibcall.c, simplify-rtx.c,
ssa-ccp.c, ssa-dce.c, ssa.c, ssa.h, stmt.c, stor-layout.c,
stringpool.c, system.h, timevar.c, timevar.def, timevar.h,
tlink.c, toplev.c, toplev.h, tree.c, tree.def, tree.h,
tsystem.h, unroll.c, unwind-dw2-fde.c, unwind-dw2-fde.h,
unwind-dw2.c, unwind-pe.h, unwind-sjlj.c, unwind.h,
unwind.inc, varasm.c, varray.c, varray.h, xcoffout.c,
xcoffout.h: replace "GNU CC" with "GCC".
From-SVN: r45105
2001-08-22 16:35:51 +02:00
|
|
|
along with GCC; see the file COPYING. If not, write to the Free
|
2005-06-25 04:02:01 +02:00
|
|
|
Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
|
|
|
|
02110-1301, USA.
|
2001-02-14 17:24:45 +01:00
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
/* This file contains definitions for language-independent
|
2005-07-28 02:40:06 +02:00
|
|
|
parameters. The DEFPARAM macro takes 6 arguments:
|
2001-02-14 17:24:45 +01:00
|
|
|
|
2001-02-21 17:11:59 +01:00
|
|
|
- The enumeral corresponding to this parameter.
|
2001-02-14 17:24:45 +01:00
|
|
|
|
|
|
|
- The name that can be used to set this parameter using the
|
|
|
|
command-line option `--param <name>=<value>'.
|
|
|
|
|
|
|
|
- A help string explaining how the parameter is used.
|
|
|
|
|
2001-05-01 20:51:06 +02:00
|
|
|
- A default value for the parameter.
|
|
|
|
|
2005-07-28 06:57:07 +02:00
|
|
|
- The minimum acceptable value for the parameter.
|
2005-07-28 02:40:06 +02:00
|
|
|
|
2005-07-28 06:57:07 +02:00
|
|
|
- The maximum acceptable value for the parameter (if greater than
|
2005-07-28 02:40:06 +02:00
|
|
|
the minimum).
|
|
|
|
|
2001-05-01 20:51:06 +02:00
|
|
|
Be sure to add an entry to invoke.texi summarizing the parameter. */
|
2001-02-14 17:24:45 +01:00
|
|
|
|
2005-04-06 22:03:15 +02:00
|
|
|
/* The maximum number of fields in a variable with only implicit uses
|
|
|
|
for which structure aliasing will consider trying to track each
|
|
|
|
field. The default is 5. */
|
|
|
|
DEFPARAM (PARAM_SALIAS_MAX_IMPLICIT_FIELDS,
|
|
|
|
"salias-max-implicit-fields",
|
|
|
|
"The maximum number of fields in a structure variable without direct structure accesses that GCC will attempt to track separately",
|
|
|
|
5, 0, 0)
|
2006-01-14 15:30:33 +01:00
|
|
|
|
|
|
|
/* The maximum number of array elements structure aliasing will decompose
|
|
|
|
an array for. The default is 4. */
|
|
|
|
DEFPARAM (PARAM_SALIAS_MAX_ARRAY_ELEMENTS,
|
|
|
|
"salias-max-array-elements",
|
|
|
|
"The maximum number of elements in an array for wich we track its elements separately",
|
|
|
|
4, 0, 0)
|
|
|
|
|
2004-10-27 23:02:16 +02:00
|
|
|
/* The maximum structure size at which the scalar replacement of
|
|
|
|
aggregates (SRA) pass will perform block copies. The default
|
|
|
|
value, 0, implies that GCC will select the most appropriate size
|
|
|
|
itself. */
|
|
|
|
DEFPARAM (PARAM_SRA_MAX_STRUCTURE_SIZE,
|
|
|
|
"sra-max-structure-size",
|
2005-08-05 04:42:06 +02:00
|
|
|
"The maximum structure size (in bytes) for which GCC will "
|
|
|
|
"use by-element copies",
|
|
|
|
0, 0, 0)
|
|
|
|
|
|
|
|
/* The maximum number of structure fields which the SRA pass will
|
|
|
|
instantiate to avoid block copies. The default value, 0, implies
|
|
|
|
that GCC will select the appropriate value itself. */
|
|
|
|
DEFPARAM (PARAM_SRA_MAX_STRUCTURE_COUNT,
|
|
|
|
"sra-max-structure-count",
|
|
|
|
"The maximum number of structure fields for which GCC will "
|
|
|
|
"use by-element copies",
|
2004-12-01 17:46:25 +01:00
|
|
|
0, 0, 0)
|
2004-10-27 23:02:16 +02:00
|
|
|
|
|
|
|
/* The ratio between instantiated fields and the complete structure
|
|
|
|
size. We say that if the ratio of the number of bytes in
|
|
|
|
instantiated fields to the number of bytes in the complete
|
2005-08-05 04:42:06 +02:00
|
|
|
structure exceeds this parameter, or if the number of instantiated
|
|
|
|
fields to the total number of fields exceeds this parameter, then
|
|
|
|
block copies are not used. The default is 75%. */
|
2004-10-27 23:02:16 +02:00
|
|
|
DEFPARAM (PARAM_SRA_FIELD_STRUCTURE_RATIO,
|
|
|
|
"sra-field-structure-ratio",
|
2004-12-01 17:46:25 +01:00
|
|
|
"The threshold ratio between instantiated fields and the total structure size",
|
|
|
|
75, 0, 100)
|
2004-10-27 23:02:16 +02:00
|
|
|
|
2002-04-27 20:59:40 +02:00
|
|
|
/* The single function inlining limit. This is the maximum size
|
|
|
|
of a function counted in internal gcc instructions (not in
|
|
|
|
real machine instructions) that is eligible for inlining
|
|
|
|
by the tree inliner.
|
2005-03-22 21:53:40 +01:00
|
|
|
The default value is 450.
|
2002-04-27 20:59:40 +02:00
|
|
|
Only functions marked inline (or methods defined in the class
|
2005-03-22 21:53:40 +01:00
|
|
|
definition for C++) are affected by this.
|
2002-04-27 20:59:40 +02:00
|
|
|
There are more restrictions to inlining: If inlined functions
|
|
|
|
call other functions, the already inlined instructions are
|
|
|
|
counted and once the recursive inline limit (see
|
|
|
|
"max-inline-insns" parameter) is exceeded, the acceptable size
|
|
|
|
gets decreased. */
|
|
|
|
DEFPARAM (PARAM_MAX_INLINE_INSNS_SINGLE,
|
|
|
|
"max-inline-insns-single",
|
2003-03-02 22:18:16 +01:00
|
|
|
"The maximum number of instructions in a single function eligible for inlining",
|
2005-03-22 21:53:40 +01:00
|
|
|
450, 0, 0)
|
2002-04-27 20:59:40 +02:00
|
|
|
|
2003-03-02 22:18:16 +01:00
|
|
|
/* The single function inlining limit for functions that are
|
|
|
|
inlined by virtue of -finline-functions (-O3).
|
|
|
|
This limit should be chosen to be below or equal to the limit
|
|
|
|
that is applied to functions marked inlined (or defined in the
|
|
|
|
class declaration in C++) given by the "max-inline-insns-single"
|
|
|
|
parameter.
|
2005-03-22 21:53:40 +01:00
|
|
|
The default value is 90. */
|
2003-03-02 22:18:16 +01:00
|
|
|
DEFPARAM (PARAM_MAX_INLINE_INSNS_AUTO,
|
|
|
|
"max-inline-insns-auto",
|
|
|
|
"The maximum number of instructions when automatically inlining",
|
2005-03-22 21:53:40 +01:00
|
|
|
90, 0, 0)
|
2003-03-02 22:18:16 +01:00
|
|
|
|
2004-05-13 08:41:07 +02:00
|
|
|
DEFPARAM (PARAM_MAX_INLINE_INSNS_RECURSIVE,
|
|
|
|
"max-inline-insns-recursive",
|
|
|
|
"The maximum number of instructions inline function can grow to via recursive inlining",
|
2005-03-22 21:53:40 +01:00
|
|
|
450, 0, 0)
|
2004-05-13 08:41:07 +02:00
|
|
|
|
|
|
|
DEFPARAM (PARAM_MAX_INLINE_INSNS_RECURSIVE_AUTO,
|
|
|
|
"max-inline-insns-recursive-auto",
|
|
|
|
"The maximum number of instructions non-inline function can grow to via recursive inlining",
|
2005-03-22 21:53:40 +01:00
|
|
|
450, 0, 0)
|
2004-05-13 08:41:07 +02:00
|
|
|
|
|
|
|
DEFPARAM (PARAM_MAX_INLINE_RECURSIVE_DEPTH,
|
|
|
|
"max-inline-recursive-depth",
|
|
|
|
"The maximum depth of recursive inlining for inline functions",
|
2004-12-01 17:46:25 +01:00
|
|
|
8, 0, 0)
|
2004-05-13 08:41:07 +02:00
|
|
|
|
|
|
|
DEFPARAM (PARAM_MAX_INLINE_RECURSIVE_DEPTH_AUTO,
|
|
|
|
"max-inline-recursive-depth-auto",
|
|
|
|
"The maximum depth of recursive inlining for non-inline functions",
|
2004-12-01 17:46:25 +01:00
|
|
|
8, 0, 0)
|
2004-05-13 08:41:07 +02:00
|
|
|
|
2005-07-28 23:45:27 +02:00
|
|
|
DEFPARAM (PARAM_MIN_INLINE_RECURSIVE_PROBABILITY,
|
|
|
|
"min-inline-recursive-probability",
|
|
|
|
"Inline recursively only when the probability of call being executed exceeds the parameter",
|
|
|
|
10, 0, 0)
|
|
|
|
|
Makefile.in (loop-unroll.o): Add VARRAY_H dependency.
2004-10-18 Revital Eres <eres@il.ibm.com>
* Makefile.in (loop-unroll.o): Add VARRAY_H dependency.
* loop-unroll.c: Include varray.h.
(struct var_to_expand, struct opt_info): Rename split_ivs_info to
opt_info and expand it to support variable expansion.
(analyze_insns_in_loop): Rename analyze_ivs_to_split and
expand it to support variable expansion.
(pt_info_start_duplication): Rename si_info_start_duplication.
(apply_opt_in_copies): Rename split_ivs_in_copies and add support
to the variable expansion optimization.
(free_opt_info): Rename free_si_info.
(analyze_insn_to_expand_var, referenced_in_one_insn_in_loop_p,
expand_var_during_unrolling, insert_var_expansion_initialization,
combine_var_copies_in_loop_exit, release_var_copies,
get_expansion): New functions.
(peel_loop_completely, unroll_loop_constant_iterations,
unroll_loop_runtime_iterations, peel_loop_simple,
unroll_loop_stupid): Change uses of struct si_info
to struct opt_info
and add uses of fvariable-expansion-in-unroller flag.
* params.def: Add parameter to restrict the number of expansions.
* params.h: (MAX_VARIABLE_EXPANSIONS): New define to restrict
the number of expansions.
* common.opt: (fvariable-expansion-in-unroller): New flag.
* doc/invoke.texi: (fvariable-expansion-in-unroller): Document.
From-SVN: r89197
2004-10-18 07:31:28 +02:00
|
|
|
/* Limit the number of expansions created by the variable expansion
|
|
|
|
optimization to avoid register pressure. */
|
|
|
|
DEFPARAM (PARAM_MAX_VARIABLE_EXPANSIONS,
|
|
|
|
"max-variable-expansions-in-unroller",
|
2005-10-08 09:15:59 +02:00
|
|
|
"If -fvariable-expansion-in-unroller is used, the maximum number of times that an individual variable will be expanded during loop unrolling",
|
2004-12-01 17:46:25 +01:00
|
|
|
1, 0, 0)
|
Makefile.in (loop-unroll.o): Add VARRAY_H dependency.
2004-10-18 Revital Eres <eres@il.ibm.com>
* Makefile.in (loop-unroll.o): Add VARRAY_H dependency.
* loop-unroll.c: Include varray.h.
(struct var_to_expand, struct opt_info): Rename split_ivs_info to
opt_info and expand it to support variable expansion.
(analyze_insns_in_loop): Rename analyze_ivs_to_split and
expand it to support variable expansion.
(pt_info_start_duplication): Rename si_info_start_duplication.
(apply_opt_in_copies): Rename split_ivs_in_copies and add support
to the variable expansion optimization.
(free_opt_info): Rename free_si_info.
(analyze_insn_to_expand_var, referenced_in_one_insn_in_loop_p,
expand_var_during_unrolling, insert_var_expansion_initialization,
combine_var_copies_in_loop_exit, release_var_copies,
get_expansion): New functions.
(peel_loop_completely, unroll_loop_constant_iterations,
unroll_loop_runtime_iterations, peel_loop_simple,
unroll_loop_stupid): Change uses of struct si_info
to struct opt_info
and add uses of fvariable-expansion-in-unroller flag.
* params.def: Add parameter to restrict the number of expansions.
* params.h: (MAX_VARIABLE_EXPANSIONS): New define to restrict
the number of expansions.
* common.opt: (fvariable-expansion-in-unroller): New flag.
* doc/invoke.texi: (fvariable-expansion-in-unroller): Document.
From-SVN: r89197
2004-10-18 07:31:28 +02:00
|
|
|
|
2001-02-21 17:11:59 +01:00
|
|
|
/* The maximum number of instructions to consider when looking for an
|
|
|
|
instruction to fill a delay slot. If more than this arbitrary
|
|
|
|
number of instructions is searched, the time savings from filling
|
|
|
|
the delay slot will be minimal so stop searching. Increasing
|
|
|
|
values mean more aggressive optimization, making the compile time
|
|
|
|
increase with probably small improvement in executable run time. */
|
|
|
|
DEFPARAM (PARAM_MAX_DELAY_SLOT_INSN_SEARCH,
|
|
|
|
"max-delay-slot-insn-search",
|
|
|
|
"The maximum number of instructions to consider to fill a delay slot",
|
2004-12-01 17:46:25 +01:00
|
|
|
100, 0, 0)
|
2001-02-21 17:11:59 +01:00
|
|
|
|
2001-02-23 18:47:52 +01:00
|
|
|
/* When trying to fill delay slots, the maximum number of instructions
|
|
|
|
to consider when searching for a block with valid live register
|
|
|
|
information. Increasing this arbitrarily chosen value means more
|
|
|
|
aggressive optimization, increasing the compile time. This
|
|
|
|
parameter should be removed when the delay slot code is rewritten
|
|
|
|
to maintain the control-flow graph. */
|
|
|
|
DEFPARAM(PARAM_MAX_DELAY_SLOT_LIVE_SEARCH,
|
|
|
|
"max-delay-slot-live-search",
|
|
|
|
"The maximum number of instructions to consider to find accurate live register information",
|
2004-12-01 17:46:25 +01:00
|
|
|
333, 0, 0)
|
2001-02-23 18:47:52 +01:00
|
|
|
|
2001-07-26 15:59:22 +02:00
|
|
|
/* This parameter limits the number of branch elements that the
|
ChangeLog.0, [...]: Fix spelling errors.
* ChangeLog.0, ChangeLog.1, ChangeLog.2, ChangeLog.3, ChangeLog.4,
ChangeLog.5, ChangeLog, FSFChangeLog.10, FSFChangeLog.11,
c-common.c, c-common.h, c-parse.in, c-typeck.c, cfg.c, config.gcc,
configure, configure.in, except.c, except.h, flow.c, function.c,
gcc.c, gcse.c, genrecog.c, libgcc2.c, loop.c, loop.h, params.def,
predict.def, predict.h, reg-stack.c, regmove.c, sched-deps.c,
sched-int.h, sibcall.c, ssa.c, stringpool.c, toplev.c, tree.c,
unroll.c: Fix spelling errors.
From-SVN: r46595
2001-10-28 21:09:17 +01:00
|
|
|
scheduler will track anti-dependencies through without resetting
|
2001-07-26 15:59:22 +02:00
|
|
|
the tracking mechanism. Large functions with few calls or barriers
|
ChangeLog.0, [...]: Fix spelling errors.
* ChangeLog.0, ChangeLog.1, ChangeLog.2, ChangeLog.3, ChangeLog.4,
ChangeLog.5, ChangeLog, FSFChangeLog.10, FSFChangeLog.11,
c-common.c, c-common.h, c-parse.in, c-typeck.c, cfg.c, config.gcc,
configure, configure.in, except.c, except.h, flow.c, function.c,
gcc.c, gcse.c, genrecog.c, libgcc2.c, loop.c, loop.h, params.def,
predict.def, predict.h, reg-stack.c, regmove.c, sched-deps.c,
sched-int.h, sibcall.c, ssa.c, stringpool.c, toplev.c, tree.c,
unroll.c: Fix spelling errors.
From-SVN: r46595
2001-10-28 21:09:17 +01:00
|
|
|
can generate lists containing many 1000's of dependencies. Generally
|
2001-07-26 15:59:22 +02:00
|
|
|
the compiler either uses all available memory, or runs for far too long. */
|
|
|
|
DEFPARAM(PARAM_MAX_PENDING_LIST_LENGTH,
|
|
|
|
"max-pending-list-length",
|
|
|
|
"The maximum length of scheduling's pending operations list",
|
2004-12-01 17:46:25 +01:00
|
|
|
32, 0, 0)
|
2001-07-26 15:59:22 +02:00
|
|
|
|
cgraph.c (cgraph_max_uid): New global variable.
* cgraph.c (cgraph_max_uid): New global variable.
(cgraph_node): Set uid field.
(create_edge): Keep inline flags consistent.
(dump_cgraph): Dump more info.
* cgraph.h (struct cgraph_local_info): Remove inline_many and
can_inline_once; add inlinable, disgread_inline_limits, and self_insn
(struct cgraph_global_info): Add insns, calls, cloned_times,
will_be_output.
(struct cgraph_node): Add uid.
(struct cgraph_edge): Add inline_call.
(cgraph_max_uid, cgraph_inline_p): Declare.
* cgraph.c: Include params.h and fibheap.h
(cgraph_mark_functions_to_inline_once): Kill.
(INSNS_PER_CALL): New constant.
(ncalls_inlined, nfunctions_inlined, initial_insns, overall_insns): New
static variables.
(cgraph_finalize_function): Do not analyze inlining.
(cgraph_finalize_compilation_unit): Set inlining attributes.
(cgraph_mark_functions_to_output): More consistency checks.
(cgraph_optimize_function): Set current_function_decl to NULL.
(cgraph_expand_function): Use new inline flags.
(cgraph_postorder): Expand from cgraph_expand_functions.
(INLINED_TIMES, SET_INLINED_TIMES): New macros.
(cgraph_inlined_into, cgraph_inlined_callees,
cgraph_estimate_size_after_inlining, cgraph_estimate_growth,
cgraph_mark_inline, cgraph_check_inline_limits,
cgraph_default_inline_p, cgraph_decide_inling_of_small_functions,
cgraph_decide_inlining, cgraph_inline_p): New functions.
* params.def (PARAM_LARGE_FUNCTION_INSNS, PARAM_LARGE_FUNCTION_GROWTH,
PARAM_INLINE_UNIT_GROWTH): New parameters.
* tree-inline.c (struct inline_data): New field current_decl.
(expand_call_inline): Avoid forward declarations; use
inlinable_function_p.
(optimize_inline_calls): Set id.current_decl.
Co-Authored-By: Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
From-SVN: r69262
2003-07-12 03:07:40 +02:00
|
|
|
DEFPARAM(PARAM_LARGE_FUNCTION_INSNS,
|
|
|
|
"large-function-insns",
|
|
|
|
"The size of function body to be considered large",
|
2005-03-22 21:53:40 +01:00
|
|
|
2700, 0, 0)
|
cgraph.c (cgraph_max_uid): New global variable.
* cgraph.c (cgraph_max_uid): New global variable.
(cgraph_node): Set uid field.
(create_edge): Keep inline flags consistent.
(dump_cgraph): Dump more info.
* cgraph.h (struct cgraph_local_info): Remove inline_many and
can_inline_once; add inlinable, disgread_inline_limits, and self_insn
(struct cgraph_global_info): Add insns, calls, cloned_times,
will_be_output.
(struct cgraph_node): Add uid.
(struct cgraph_edge): Add inline_call.
(cgraph_max_uid, cgraph_inline_p): Declare.
* cgraph.c: Include params.h and fibheap.h
(cgraph_mark_functions_to_inline_once): Kill.
(INSNS_PER_CALL): New constant.
(ncalls_inlined, nfunctions_inlined, initial_insns, overall_insns): New
static variables.
(cgraph_finalize_function): Do not analyze inlining.
(cgraph_finalize_compilation_unit): Set inlining attributes.
(cgraph_mark_functions_to_output): More consistency checks.
(cgraph_optimize_function): Set current_function_decl to NULL.
(cgraph_expand_function): Use new inline flags.
(cgraph_postorder): Expand from cgraph_expand_functions.
(INLINED_TIMES, SET_INLINED_TIMES): New macros.
(cgraph_inlined_into, cgraph_inlined_callees,
cgraph_estimate_size_after_inlining, cgraph_estimate_growth,
cgraph_mark_inline, cgraph_check_inline_limits,
cgraph_default_inline_p, cgraph_decide_inling_of_small_functions,
cgraph_decide_inlining, cgraph_inline_p): New functions.
* params.def (PARAM_LARGE_FUNCTION_INSNS, PARAM_LARGE_FUNCTION_GROWTH,
PARAM_INLINE_UNIT_GROWTH): New parameters.
* tree-inline.c (struct inline_data): New field current_decl.
(expand_call_inline): Avoid forward declarations; use
inlinable_function_p.
(optimize_inline_calls): Set id.current_decl.
Co-Authored-By: Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
From-SVN: r69262
2003-07-12 03:07:40 +02:00
|
|
|
DEFPARAM(PARAM_LARGE_FUNCTION_GROWTH,
|
|
|
|
"large-function-growth",
|
2003-07-19 10:13:58 +02:00
|
|
|
"Maximal growth due to inlining of large function (in percent)",
|
2004-12-01 17:46:25 +01:00
|
|
|
100, 0, 0)
|
2005-11-15 13:27:33 +01:00
|
|
|
DEFPARAM(PARAM_LARGE_UNIT_INSNS,
|
|
|
|
"large-unit-insns",
|
|
|
|
"The size of translation unit to be considered large",
|
|
|
|
10000, 0, 0)
|
cgraph.c (cgraph_max_uid): New global variable.
* cgraph.c (cgraph_max_uid): New global variable.
(cgraph_node): Set uid field.
(create_edge): Keep inline flags consistent.
(dump_cgraph): Dump more info.
* cgraph.h (struct cgraph_local_info): Remove inline_many and
can_inline_once; add inlinable, disgread_inline_limits, and self_insn
(struct cgraph_global_info): Add insns, calls, cloned_times,
will_be_output.
(struct cgraph_node): Add uid.
(struct cgraph_edge): Add inline_call.
(cgraph_max_uid, cgraph_inline_p): Declare.
* cgraph.c: Include params.h and fibheap.h
(cgraph_mark_functions_to_inline_once): Kill.
(INSNS_PER_CALL): New constant.
(ncalls_inlined, nfunctions_inlined, initial_insns, overall_insns): New
static variables.
(cgraph_finalize_function): Do not analyze inlining.
(cgraph_finalize_compilation_unit): Set inlining attributes.
(cgraph_mark_functions_to_output): More consistency checks.
(cgraph_optimize_function): Set current_function_decl to NULL.
(cgraph_expand_function): Use new inline flags.
(cgraph_postorder): Expand from cgraph_expand_functions.
(INLINED_TIMES, SET_INLINED_TIMES): New macros.
(cgraph_inlined_into, cgraph_inlined_callees,
cgraph_estimate_size_after_inlining, cgraph_estimate_growth,
cgraph_mark_inline, cgraph_check_inline_limits,
cgraph_default_inline_p, cgraph_decide_inling_of_small_functions,
cgraph_decide_inlining, cgraph_inline_p): New functions.
* params.def (PARAM_LARGE_FUNCTION_INSNS, PARAM_LARGE_FUNCTION_GROWTH,
PARAM_INLINE_UNIT_GROWTH): New parameters.
* tree-inline.c (struct inline_data): New field current_decl.
(expand_call_inline): Avoid forward declarations; use
inlinable_function_p.
(optimize_inline_calls): Set id.current_decl.
Co-Authored-By: Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
From-SVN: r69262
2003-07-12 03:07:40 +02:00
|
|
|
DEFPARAM(PARAM_INLINE_UNIT_GROWTH,
|
|
|
|
"inline-unit-growth",
|
2003-07-19 10:13:58 +02:00
|
|
|
"how much can given compilation unit grow because of the inlining (in percent)",
|
2004-12-01 17:46:25 +01:00
|
|
|
50, 0, 0)
|
2005-03-22 21:53:40 +01:00
|
|
|
DEFPARAM(PARAM_INLINE_CALL_COST,
|
|
|
|
"inline-call-cost",
|
2005-03-23 20:10:01 +01:00
|
|
|
"expense of call operation relative to ordinary arithmetic operations",
|
2005-03-22 21:53:40 +01:00
|
|
|
16, 0, 0)
|
cgraph.c (cgraph_max_uid): New global variable.
* cgraph.c (cgraph_max_uid): New global variable.
(cgraph_node): Set uid field.
(create_edge): Keep inline flags consistent.
(dump_cgraph): Dump more info.
* cgraph.h (struct cgraph_local_info): Remove inline_many and
can_inline_once; add inlinable, disgread_inline_limits, and self_insn
(struct cgraph_global_info): Add insns, calls, cloned_times,
will_be_output.
(struct cgraph_node): Add uid.
(struct cgraph_edge): Add inline_call.
(cgraph_max_uid, cgraph_inline_p): Declare.
* cgraph.c: Include params.h and fibheap.h
(cgraph_mark_functions_to_inline_once): Kill.
(INSNS_PER_CALL): New constant.
(ncalls_inlined, nfunctions_inlined, initial_insns, overall_insns): New
static variables.
(cgraph_finalize_function): Do not analyze inlining.
(cgraph_finalize_compilation_unit): Set inlining attributes.
(cgraph_mark_functions_to_output): More consistency checks.
(cgraph_optimize_function): Set current_function_decl to NULL.
(cgraph_expand_function): Use new inline flags.
(cgraph_postorder): Expand from cgraph_expand_functions.
(INLINED_TIMES, SET_INLINED_TIMES): New macros.
(cgraph_inlined_into, cgraph_inlined_callees,
cgraph_estimate_size_after_inlining, cgraph_estimate_growth,
cgraph_mark_inline, cgraph_check_inline_limits,
cgraph_default_inline_p, cgraph_decide_inling_of_small_functions,
cgraph_decide_inlining, cgraph_inline_p): New functions.
* params.def (PARAM_LARGE_FUNCTION_INSNS, PARAM_LARGE_FUNCTION_GROWTH,
PARAM_INLINE_UNIT_GROWTH): New parameters.
* tree-inline.c (struct inline_data): New field current_decl.
(expand_call_inline): Avoid forward declarations; use
inlinable_function_p.
(optimize_inline_calls): Set id.current_decl.
Co-Authored-By: Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
From-SVN: r69262
2003-07-12 03:07:40 +02:00
|
|
|
|
2001-04-11 20:22:46 +02:00
|
|
|
/* The GCSE optimization will be disabled if it would require
|
|
|
|
significantly more memory than this value. */
|
|
|
|
DEFPARAM(PARAM_MAX_GCSE_MEMORY,
|
|
|
|
"max-gcse-memory",
|
|
|
|
"The maximum amount of memory to be allocated by GCSE",
|
2004-12-01 17:46:25 +01:00
|
|
|
50 * 1024 * 1024, 0, 0)
|
2002-09-29 15:16:44 +02:00
|
|
|
/* The number of repetitions of copy/const prop and PRE to run. */
|
2001-06-27 16:35:24 +02:00
|
|
|
DEFPARAM(PARAM_MAX_GCSE_PASSES,
|
|
|
|
"max-gcse-passes",
|
|
|
|
"The maximum number of passes to make when doing GCSE",
|
2004-12-01 17:46:25 +01:00
|
|
|
1, 1, 0)
|
common.opt: Add description of the new -fgcse-after-reload flag.
2004-03-03 Mostafa Hagog <mustafa@il.ibm.com>
* common.opt: Add description of the new -fgcse-after-reload flag.
* flags.h (flag_gcse_after_reload): Declaration of global variable.
* gcse.c (reg_used_on_edge ,reg_set_between_after_reload_p,
reg_used_between_after_reload_p, rtx get_avail_load_store_reg,
is_jump_table_basic_block, bb_has_well_behaved_predecessors,
get_bb_avail_insn, hash_scan_set_after_reload,
compute_hash_table_after_reload, eliminate_partially_redundant_loads,
gcse_after_reload, get_bb_avail_insn): New functions to implement
gcse-after-reload.
(gcse_after_reload_main): New function, the main entry point to
gcse-after-reload.
* rtl.h (gcse_after_reload_main): Declaration of the new function.
* opts.c (common_handle_option): Handle the -fgcse-after-reload flag.
* toplev.c (flag_gcse_after_reload): Initialization.
* passes.c (rest_of_handl_gcse2): Call gcse_after_reload_main.
* params.def (PARAM_GCSE_AFTER_RELOAD_PARTIAL_FRACTION,
PARAM_GCSE_AFTER_RELOAD_CRITICAL_FRACTION): New parameters for tuning
the gcse after reload optimization.
* params.h (GCSE_AFTER_RELOAD_PARTIAL_FRACTION,
GCSE_AFTER_RELOAD_CRITICAL_FRACTION): Two macros to access the tuning
parameters.
* doc/invoke.texi: Documentation for the new flag gcse-after-reload.
From-SVN: r78842
2004-03-03 17:32:45 +01:00
|
|
|
/* This is the threshold ratio when to perform partial redundancy
|
|
|
|
elimination after reload. We perform partial redundancy elimination
|
|
|
|
when the following holds:
|
|
|
|
(Redundant load execution count)
|
|
|
|
------------------------------- >= GCSE_AFTER_RELOAD_PARTIAL_FRACTION
|
|
|
|
(Added loads execution count) */
|
|
|
|
DEFPARAM(PARAM_GCSE_AFTER_RELOAD_PARTIAL_FRACTION,
|
|
|
|
"gcse-after-reload-partial-fraction",
|
c.opt, [...]: Remove "." from end of help texts.
* c.opt, common.opt, config/bfin/bfin.opt, config/pa/pa.opt,
config/rs6000/rs6000.opt, params.def: Remove "." from end of help
texts.
* config/avr/avr.c: Do not use '`' as left quote.
* config/rs6000/rs6000.c, config/s390/s390.c, opts.c, tree.c:
Remove "." from end of diagnostics. Make diagnostics start with
lowercase letter.
cp:
* name-lookup.c, parser.c: Use %q, %< and %> to quote in
diagnostics.
fortran:
* lang.opt: Remove "." from end of help texts.
objc:
* objc-act.c: Use %q to quote in diagnostics.
From-SVN: r101533
2005-07-02 15:19:59 +02:00
|
|
|
"The threshold ratio for performing partial redundancy elimination after reload",
|
2004-12-01 17:46:25 +01:00
|
|
|
3, 0, 0)
|
common.opt: Add description of the new -fgcse-after-reload flag.
2004-03-03 Mostafa Hagog <mustafa@il.ibm.com>
* common.opt: Add description of the new -fgcse-after-reload flag.
* flags.h (flag_gcse_after_reload): Declaration of global variable.
* gcse.c (reg_used_on_edge ,reg_set_between_after_reload_p,
reg_used_between_after_reload_p, rtx get_avail_load_store_reg,
is_jump_table_basic_block, bb_has_well_behaved_predecessors,
get_bb_avail_insn, hash_scan_set_after_reload,
compute_hash_table_after_reload, eliminate_partially_redundant_loads,
gcse_after_reload, get_bb_avail_insn): New functions to implement
gcse-after-reload.
(gcse_after_reload_main): New function, the main entry point to
gcse-after-reload.
* rtl.h (gcse_after_reload_main): Declaration of the new function.
* opts.c (common_handle_option): Handle the -fgcse-after-reload flag.
* toplev.c (flag_gcse_after_reload): Initialization.
* passes.c (rest_of_handl_gcse2): Call gcse_after_reload_main.
* params.def (PARAM_GCSE_AFTER_RELOAD_PARTIAL_FRACTION,
PARAM_GCSE_AFTER_RELOAD_CRITICAL_FRACTION): New parameters for tuning
the gcse after reload optimization.
* params.h (GCSE_AFTER_RELOAD_PARTIAL_FRACTION,
GCSE_AFTER_RELOAD_CRITICAL_FRACTION): Two macros to access the tuning
parameters.
* doc/invoke.texi: Documentation for the new flag gcse-after-reload.
From-SVN: r78842
2004-03-03 17:32:45 +01:00
|
|
|
/* This is the threshold ratio of the critical edges execution count compared to
|
|
|
|
the redundant loads execution count that permits performing the load
|
|
|
|
redundancy elimination in gcse after reload. */
|
|
|
|
DEFPARAM(PARAM_GCSE_AFTER_RELOAD_CRITICAL_FRACTION,
|
|
|
|
"gcse-after-reload-critical-fraction",
|
c.opt, [...]: Remove "." from end of help texts.
* c.opt, common.opt, config/bfin/bfin.opt, config/pa/pa.opt,
config/rs6000/rs6000.opt, params.def: Remove "." from end of help
texts.
* config/avr/avr.c: Do not use '`' as left quote.
* config/rs6000/rs6000.c, config/s390/s390.c, opts.c, tree.c:
Remove "." from end of diagnostics. Make diagnostics start with
lowercase letter.
cp:
* name-lookup.c, parser.c: Use %q, %< and %> to quote in
diagnostics.
fortran:
* lang.opt: Remove "." from end of help texts.
objc:
* objc-act.c: Use %q to quote in diagnostics.
From-SVN: r101533
2005-07-02 15:19:59 +02:00
|
|
|
"The threshold ratio of critical edges execution count that permit performing redundancy elimination after reload",
|
2004-12-01 17:46:25 +01:00
|
|
|
10, 0, 0)
|
2002-03-15 00:31:50 +01:00
|
|
|
/* This parameter limits the number of insns in a loop that will be unrolled,
|
2004-02-21 01:34:46 +01:00
|
|
|
and by how much the loop is unrolled.
|
|
|
|
|
|
|
|
This limit should be at most half of the peeling limits: loop unroller
|
|
|
|
decides to not unroll loops that iterate fewer than 2*number of allowed
|
c-decl.c, [...]: Fix comment typos and formatting.
* c-decl.c, c-ppoutput.c, combine.c, cppfiles.c, dwarf2out.c,
expr.c, fold-const.c, gcc.c, haifa-sched.c, loop-iv.c,
params.def, read-rtl.c, rtl.c, rtlanal.c, toplev.c: Fix
comment typos and formatting. Follow spelling conventions.
From-SVN: r78555
2004-02-27 08:09:43 +01:00
|
|
|
unrollings and thus we would have loops that are neither peeled or unrolled
|
2004-02-21 01:34:46 +01:00
|
|
|
otherwise. */
|
2002-03-15 00:31:50 +01:00
|
|
|
DEFPARAM(PARAM_MAX_UNROLLED_INSNS,
|
|
|
|
"max-unrolled-insns",
|
|
|
|
"The maximum number of instructions to consider to unroll in a loop",
|
2004-12-01 17:46:25 +01:00
|
|
|
200, 0, 0)
|
cse.c (count_reg_usage): Fix handling of REG_EQUAL notes.
* cse.c (count_reg_usage): Fix handling of REG_EQUAL notes.
* Makefile.in (loop-unroll.o): New.
* cfgloop.h (UAP_PEEL, UAP_UNROLL, UAP_UNROLL_ALL): New.
(unroll_and_peel_loops): Declare.
* alias.c (init_alias_analysis): Flag_unroll_loops renamed to
flag_old_unroll_loops.
* loop.c (loop_invariant_p): Ditto.
* unroll.c (unroll_loop): Flag_unroll_all_loops renamed to
flag_old_unroll_all_loops.
* flags.h (flag_unroll_loops): Renamed to flag_old_unroll_loops.
(flag_unroll_all_loops): Renamed to flag_old_unroll_all_loops.
* params.def (PARAM_MAX_UNROLLED_INSNS): Default value changed.
(PARAM_MAX_AVERAGE_UNROLLED_INSNS, PARAM_MAX_UNROLL_TIMES,
PARAM_MAX_PEELED_INSNS, PARAM_MAX_PEEL_TIMES,
PARAM_MAX_COMPLETELY_PEELED_INSNS, PARAM_MAX_COMPLETELY_PEEL_TIMES,
PARAM_MAX_ONCE_PEELED_INSNS): New.
* toplev.h (flag_old_unroll_loops, flag_old_unroll_all_loops): New.
(flag_unroll_loops, flag_unroll_all_loops): Used for new unroller
instead of old one.
(flag_peel_loops): New.
(lang_independent_options): The new flags added.
(rest_of_compilation): Call new unroller.
(process_options): Setup flags for coexistence of old and new unroller.
* doc/invoke.texi: Document new options.
* doc/passes.texi: Document new unroller pass.
From-SVN: r63462
2003-02-26 11:48:36 +01:00
|
|
|
/* This parameter limits how many times the loop is unrolled depending
|
|
|
|
on number of insns really executed in each iteration. */
|
|
|
|
DEFPARAM(PARAM_MAX_AVERAGE_UNROLLED_INSNS,
|
|
|
|
"max-average-unrolled-insns",
|
|
|
|
"The maximum number of instructions to consider to unroll in a loop on average",
|
2004-12-01 17:46:25 +01:00
|
|
|
80, 0, 0)
|
cse.c (count_reg_usage): Fix handling of REG_EQUAL notes.
* cse.c (count_reg_usage): Fix handling of REG_EQUAL notes.
* Makefile.in (loop-unroll.o): New.
* cfgloop.h (UAP_PEEL, UAP_UNROLL, UAP_UNROLL_ALL): New.
(unroll_and_peel_loops): Declare.
* alias.c (init_alias_analysis): Flag_unroll_loops renamed to
flag_old_unroll_loops.
* loop.c (loop_invariant_p): Ditto.
* unroll.c (unroll_loop): Flag_unroll_all_loops renamed to
flag_old_unroll_all_loops.
* flags.h (flag_unroll_loops): Renamed to flag_old_unroll_loops.
(flag_unroll_all_loops): Renamed to flag_old_unroll_all_loops.
* params.def (PARAM_MAX_UNROLLED_INSNS): Default value changed.
(PARAM_MAX_AVERAGE_UNROLLED_INSNS, PARAM_MAX_UNROLL_TIMES,
PARAM_MAX_PEELED_INSNS, PARAM_MAX_PEEL_TIMES,
PARAM_MAX_COMPLETELY_PEELED_INSNS, PARAM_MAX_COMPLETELY_PEEL_TIMES,
PARAM_MAX_ONCE_PEELED_INSNS): New.
* toplev.h (flag_old_unroll_loops, flag_old_unroll_all_loops): New.
(flag_unroll_loops, flag_unroll_all_loops): Used for new unroller
instead of old one.
(flag_peel_loops): New.
(lang_independent_options): The new flags added.
(rest_of_compilation): Call new unroller.
(process_options): Setup flags for coexistence of old and new unroller.
* doc/invoke.texi: Document new options.
* doc/passes.texi: Document new unroller pass.
From-SVN: r63462
2003-02-26 11:48:36 +01:00
|
|
|
/* The maximum number of unrollings of a single loop. */
|
|
|
|
DEFPARAM(PARAM_MAX_UNROLL_TIMES,
|
|
|
|
"max-unroll-times",
|
|
|
|
"The maximum number of unrollings of a single loop",
|
2004-12-01 17:46:25 +01:00
|
|
|
8, 0, 0)
|
cse.c (count_reg_usage): Fix handling of REG_EQUAL notes.
* cse.c (count_reg_usage): Fix handling of REG_EQUAL notes.
* Makefile.in (loop-unroll.o): New.
* cfgloop.h (UAP_PEEL, UAP_UNROLL, UAP_UNROLL_ALL): New.
(unroll_and_peel_loops): Declare.
* alias.c (init_alias_analysis): Flag_unroll_loops renamed to
flag_old_unroll_loops.
* loop.c (loop_invariant_p): Ditto.
* unroll.c (unroll_loop): Flag_unroll_all_loops renamed to
flag_old_unroll_all_loops.
* flags.h (flag_unroll_loops): Renamed to flag_old_unroll_loops.
(flag_unroll_all_loops): Renamed to flag_old_unroll_all_loops.
* params.def (PARAM_MAX_UNROLLED_INSNS): Default value changed.
(PARAM_MAX_AVERAGE_UNROLLED_INSNS, PARAM_MAX_UNROLL_TIMES,
PARAM_MAX_PEELED_INSNS, PARAM_MAX_PEEL_TIMES,
PARAM_MAX_COMPLETELY_PEELED_INSNS, PARAM_MAX_COMPLETELY_PEEL_TIMES,
PARAM_MAX_ONCE_PEELED_INSNS): New.
* toplev.h (flag_old_unroll_loops, flag_old_unroll_all_loops): New.
(flag_unroll_loops, flag_unroll_all_loops): Used for new unroller
instead of old one.
(flag_peel_loops): New.
(lang_independent_options): The new flags added.
(rest_of_compilation): Call new unroller.
(process_options): Setup flags for coexistence of old and new unroller.
* doc/invoke.texi: Document new options.
* doc/passes.texi: Document new unroller pass.
From-SVN: r63462
2003-02-26 11:48:36 +01:00
|
|
|
/* The maximum number of insns of a peeled loop. */
|
|
|
|
DEFPARAM(PARAM_MAX_PEELED_INSNS,
|
|
|
|
"max-peeled-insns",
|
|
|
|
"The maximum number of insns of a peeled loop",
|
2004-12-01 17:46:25 +01:00
|
|
|
400, 0, 0)
|
cse.c (count_reg_usage): Fix handling of REG_EQUAL notes.
* cse.c (count_reg_usage): Fix handling of REG_EQUAL notes.
* Makefile.in (loop-unroll.o): New.
* cfgloop.h (UAP_PEEL, UAP_UNROLL, UAP_UNROLL_ALL): New.
(unroll_and_peel_loops): Declare.
* alias.c (init_alias_analysis): Flag_unroll_loops renamed to
flag_old_unroll_loops.
* loop.c (loop_invariant_p): Ditto.
* unroll.c (unroll_loop): Flag_unroll_all_loops renamed to
flag_old_unroll_all_loops.
* flags.h (flag_unroll_loops): Renamed to flag_old_unroll_loops.
(flag_unroll_all_loops): Renamed to flag_old_unroll_all_loops.
* params.def (PARAM_MAX_UNROLLED_INSNS): Default value changed.
(PARAM_MAX_AVERAGE_UNROLLED_INSNS, PARAM_MAX_UNROLL_TIMES,
PARAM_MAX_PEELED_INSNS, PARAM_MAX_PEEL_TIMES,
PARAM_MAX_COMPLETELY_PEELED_INSNS, PARAM_MAX_COMPLETELY_PEEL_TIMES,
PARAM_MAX_ONCE_PEELED_INSNS): New.
* toplev.h (flag_old_unroll_loops, flag_old_unroll_all_loops): New.
(flag_unroll_loops, flag_unroll_all_loops): Used for new unroller
instead of old one.
(flag_peel_loops): New.
(lang_independent_options): The new flags added.
(rest_of_compilation): Call new unroller.
(process_options): Setup flags for coexistence of old and new unroller.
* doc/invoke.texi: Document new options.
* doc/passes.texi: Document new unroller pass.
From-SVN: r63462
2003-02-26 11:48:36 +01:00
|
|
|
/* The maximum number of peelings of a single loop. */
|
|
|
|
DEFPARAM(PARAM_MAX_PEEL_TIMES,
|
|
|
|
"max-peel-times",
|
|
|
|
"The maximum number of peelings of a single loop",
|
2004-12-01 17:46:25 +01:00
|
|
|
16, 0, 0)
|
cse.c (count_reg_usage): Fix handling of REG_EQUAL notes.
* cse.c (count_reg_usage): Fix handling of REG_EQUAL notes.
* Makefile.in (loop-unroll.o): New.
* cfgloop.h (UAP_PEEL, UAP_UNROLL, UAP_UNROLL_ALL): New.
(unroll_and_peel_loops): Declare.
* alias.c (init_alias_analysis): Flag_unroll_loops renamed to
flag_old_unroll_loops.
* loop.c (loop_invariant_p): Ditto.
* unroll.c (unroll_loop): Flag_unroll_all_loops renamed to
flag_old_unroll_all_loops.
* flags.h (flag_unroll_loops): Renamed to flag_old_unroll_loops.
(flag_unroll_all_loops): Renamed to flag_old_unroll_all_loops.
* params.def (PARAM_MAX_UNROLLED_INSNS): Default value changed.
(PARAM_MAX_AVERAGE_UNROLLED_INSNS, PARAM_MAX_UNROLL_TIMES,
PARAM_MAX_PEELED_INSNS, PARAM_MAX_PEEL_TIMES,
PARAM_MAX_COMPLETELY_PEELED_INSNS, PARAM_MAX_COMPLETELY_PEEL_TIMES,
PARAM_MAX_ONCE_PEELED_INSNS): New.
* toplev.h (flag_old_unroll_loops, flag_old_unroll_all_loops): New.
(flag_unroll_loops, flag_unroll_all_loops): Used for new unroller
instead of old one.
(flag_peel_loops): New.
(lang_independent_options): The new flags added.
(rest_of_compilation): Call new unroller.
(process_options): Setup flags for coexistence of old and new unroller.
* doc/invoke.texi: Document new options.
* doc/passes.texi: Document new unroller pass.
From-SVN: r63462
2003-02-26 11:48:36 +01:00
|
|
|
/* The maximum number of insns of a peeled loop. */
|
|
|
|
DEFPARAM(PARAM_MAX_COMPLETELY_PEELED_INSNS,
|
|
|
|
"max-completely-peeled-insns",
|
|
|
|
"The maximum number of insns of a completely peeled loop",
|
2004-12-01 17:46:25 +01:00
|
|
|
400, 0, 0)
|
cse.c (count_reg_usage): Fix handling of REG_EQUAL notes.
* cse.c (count_reg_usage): Fix handling of REG_EQUAL notes.
* Makefile.in (loop-unroll.o): New.
* cfgloop.h (UAP_PEEL, UAP_UNROLL, UAP_UNROLL_ALL): New.
(unroll_and_peel_loops): Declare.
* alias.c (init_alias_analysis): Flag_unroll_loops renamed to
flag_old_unroll_loops.
* loop.c (loop_invariant_p): Ditto.
* unroll.c (unroll_loop): Flag_unroll_all_loops renamed to
flag_old_unroll_all_loops.
* flags.h (flag_unroll_loops): Renamed to flag_old_unroll_loops.
(flag_unroll_all_loops): Renamed to flag_old_unroll_all_loops.
* params.def (PARAM_MAX_UNROLLED_INSNS): Default value changed.
(PARAM_MAX_AVERAGE_UNROLLED_INSNS, PARAM_MAX_UNROLL_TIMES,
PARAM_MAX_PEELED_INSNS, PARAM_MAX_PEEL_TIMES,
PARAM_MAX_COMPLETELY_PEELED_INSNS, PARAM_MAX_COMPLETELY_PEEL_TIMES,
PARAM_MAX_ONCE_PEELED_INSNS): New.
* toplev.h (flag_old_unroll_loops, flag_old_unroll_all_loops): New.
(flag_unroll_loops, flag_unroll_all_loops): Used for new unroller
instead of old one.
(flag_peel_loops): New.
(lang_independent_options): The new flags added.
(rest_of_compilation): Call new unroller.
(process_options): Setup flags for coexistence of old and new unroller.
* doc/invoke.texi: Document new options.
* doc/passes.texi: Document new unroller pass.
From-SVN: r63462
2003-02-26 11:48:36 +01:00
|
|
|
/* The maximum number of peelings of a single loop that is peeled completely. */
|
|
|
|
DEFPARAM(PARAM_MAX_COMPLETELY_PEEL_TIMES,
|
|
|
|
"max-completely-peel-times",
|
|
|
|
"The maximum number of peelings of a single loop that is peeled completely",
|
2004-12-01 17:46:25 +01:00
|
|
|
16, 0, 0)
|
cse.c (count_reg_usage): Fix handling of REG_EQUAL notes.
* cse.c (count_reg_usage): Fix handling of REG_EQUAL notes.
* Makefile.in (loop-unroll.o): New.
* cfgloop.h (UAP_PEEL, UAP_UNROLL, UAP_UNROLL_ALL): New.
(unroll_and_peel_loops): Declare.
* alias.c (init_alias_analysis): Flag_unroll_loops renamed to
flag_old_unroll_loops.
* loop.c (loop_invariant_p): Ditto.
* unroll.c (unroll_loop): Flag_unroll_all_loops renamed to
flag_old_unroll_all_loops.
* flags.h (flag_unroll_loops): Renamed to flag_old_unroll_loops.
(flag_unroll_all_loops): Renamed to flag_old_unroll_all_loops.
* params.def (PARAM_MAX_UNROLLED_INSNS): Default value changed.
(PARAM_MAX_AVERAGE_UNROLLED_INSNS, PARAM_MAX_UNROLL_TIMES,
PARAM_MAX_PEELED_INSNS, PARAM_MAX_PEEL_TIMES,
PARAM_MAX_COMPLETELY_PEELED_INSNS, PARAM_MAX_COMPLETELY_PEEL_TIMES,
PARAM_MAX_ONCE_PEELED_INSNS): New.
* toplev.h (flag_old_unroll_loops, flag_old_unroll_all_loops): New.
(flag_unroll_loops, flag_unroll_all_loops): Used for new unroller
instead of old one.
(flag_peel_loops): New.
(lang_independent_options): The new flags added.
(rest_of_compilation): Call new unroller.
(process_options): Setup flags for coexistence of old and new unroller.
* doc/invoke.texi: Document new options.
* doc/passes.texi: Document new unroller pass.
From-SVN: r63462
2003-02-26 11:48:36 +01:00
|
|
|
/* The maximum number of insns of a peeled loop that rolls only once. */
|
|
|
|
DEFPARAM(PARAM_MAX_ONCE_PEELED_INSNS,
|
|
|
|
"max-once-peeled-insns",
|
|
|
|
"The maximum number of insns of a peeled loop that rolls only once",
|
2004-12-01 17:46:25 +01:00
|
|
|
400, 0, 0)
|
invoke.texi (-malign-double): Re-add lost warning.
* invoke.texi (-malign-double): Re-add lost warning.
* i386-protos.h (x86_output_mi_thunk): Declare.
* unix.h (ASM_OUTPUT_MI_THUNK): Move offline to ...
* i386.c (x86_output_mi_thunk): ... here; handle 64bits.
* dwarf2out.c (output_call_frame_info): Do not skip unwind info
when flag_asynchronous_unwind_tables is set.
* flags.h (flag_reorder_functions): Declare.
* function.c (prepare_function_start): Initialize frequnecy.
* params.def (HOT_BB_COUNT_FRACTION, HOT_BB_FREQUENCY_FRACTION): New paramters.
* Makefile.in (predict.o): Add dependency on target.h and params.h
* defaults.h (HOT_TEXT_SECTION_NAME,
UNLIKELY_EXECUTED_TEXT_SECTION_NAME): New macros.
* predict.c (choose_function_section): New function.
(estimate_bb_frequencies): Use it.
* toplev.c (flag_reorder_functions): New global variable.
(lang_independent_options): New.
(parse_options_and_default_flags): Set.
* varasm.c (assemble_start_function): Bypass functdion alignment
for never executed functions.
* invoke.texi (-freorder-blocks, -freorder-functions): Document.
(param hot-bb-count-fraction, hot-bb-frequency-fraction): New.
* tm.texi (HOT_TEXT_SECTION_NAME, UNLIKELY_EXECUTED_TEXT_SECTION_NAME):
Document.
Thu Jan 3 21:52:09 CET 2002 Jan Hubicka <jh@suse.cz>
* predict.c: Inlude profile.h
(MIN_COUNT): Rename to MIN_COUNT_FRACTION
(maybe_hot_bb_p, probably_cold_bb_p, probably_never_executed_bb_p):
Use the information about maximal counter in the program.
Thu Dec 20 22:14:00 CET 2001 Jan Hubicka <jh@suse.cz>
* basic-block.h (maybe_hot_bb_p, probably_cold_bb_p,
probably_never_executed_bb_p): New functions.
* cfgcleanup.c (outgoing_edges_match): Use them.
* predict.c (MIN_COUNT, MIN_FREQUENCY): New macros.
(maybe_hot_bb_p, probably_cold_bb_p,
probably_never_executed_bb_p): New functions.
* function.h (function): Add new field function_frequency.
* predict.c (compute_function_frequency): New function.
(estimate_probability): Call it.
From-SVN: r53478
2002-05-15 11:00:30 +02:00
|
|
|
|
cfgloop.h (fix_loop_placement, [...]): Declare.
* cfgloop.h (fix_loop_placement, can_duplicate_loop_p,
duplicate_loop_to_header_edge, loopify, remove_path, split_loop_bb):
Declare.
(DLTHE_FLAG_UPDATE_FREQ): New.
* cfgloopmanip.c (duplicate_loop, duplicate_subloops, copy_loops_to,
loop_redirect_edge, loop_delete_branch_edge, copy_bbs, remove_bbs,
rpe_enum_p, find_branch, alp_enum_p, add_loop, fix_loop_placements,
fix_bb_placement, fix_bb_placements, place_new_loop,
scale_loop_frequencies, scale_bbs_frequencies, record_exit_edges):
New static functions.
(fix_loop_placement, can_duplicate_loop_p,
duplicate_loop_to_header_edge, loopify, remove_path, split_loop_bb):
New functions.
* cfgloop.h (loop_optimizer_init, loop_optimizer_finalize,
unswitch_loops): Declare.
* loop-init.c: New file.
* loop-unswitch.c: New file.
* Makefile.in (loop-init.o, loop-unswitch.o): New.
* params.def (PARAM_MAX_UNSWITCH_INSNS, PARAM_MAX_UNSWITCH_LEVEL): New.
* toplev.c (DFI_loop2): New dump.
(flag_unswitch_loops): New.
(lang_independent_options): Add it.
(rest_of_compilation): Call new loop optimizer.
(parse_options_and_default_flags): Turn flag_unswitch_loops on with -O3.
From-SVN: r62578
2003-02-08 15:29:00 +01:00
|
|
|
/* The maximum number of insns of an unswitched loop. */
|
|
|
|
DEFPARAM(PARAM_MAX_UNSWITCH_INSNS,
|
|
|
|
"max-unswitch-insns",
|
|
|
|
"The maximum number of insns of an unswitched loop",
|
2004-12-01 17:46:25 +01:00
|
|
|
50, 0, 0)
|
cfgloop.h (fix_loop_placement, [...]): Declare.
* cfgloop.h (fix_loop_placement, can_duplicate_loop_p,
duplicate_loop_to_header_edge, loopify, remove_path, split_loop_bb):
Declare.
(DLTHE_FLAG_UPDATE_FREQ): New.
* cfgloopmanip.c (duplicate_loop, duplicate_subloops, copy_loops_to,
loop_redirect_edge, loop_delete_branch_edge, copy_bbs, remove_bbs,
rpe_enum_p, find_branch, alp_enum_p, add_loop, fix_loop_placements,
fix_bb_placement, fix_bb_placements, place_new_loop,
scale_loop_frequencies, scale_bbs_frequencies, record_exit_edges):
New static functions.
(fix_loop_placement, can_duplicate_loop_p,
duplicate_loop_to_header_edge, loopify, remove_path, split_loop_bb):
New functions.
* cfgloop.h (loop_optimizer_init, loop_optimizer_finalize,
unswitch_loops): Declare.
* loop-init.c: New file.
* loop-unswitch.c: New file.
* Makefile.in (loop-init.o, loop-unswitch.o): New.
* params.def (PARAM_MAX_UNSWITCH_INSNS, PARAM_MAX_UNSWITCH_LEVEL): New.
* toplev.c (DFI_loop2): New dump.
(flag_unswitch_loops): New.
(lang_independent_options): Add it.
(rest_of_compilation): Call new loop optimizer.
(parse_options_and_default_flags): Turn flag_unswitch_loops on with -O3.
From-SVN: r62578
2003-02-08 15:29:00 +01:00
|
|
|
/* The maximum level of recursion in unswitch_single_loop. */
|
|
|
|
DEFPARAM(PARAM_MAX_UNSWITCH_LEVEL,
|
|
|
|
"max-unswitch-level",
|
|
|
|
"The maximum number of unswitchings in a single loop",
|
2004-12-01 17:46:25 +01:00
|
|
|
3, 0, 0)
|
cfgloop.h (fix_loop_placement, [...]): Declare.
* cfgloop.h (fix_loop_placement, can_duplicate_loop_p,
duplicate_loop_to_header_edge, loopify, remove_path, split_loop_bb):
Declare.
(DLTHE_FLAG_UPDATE_FREQ): New.
* cfgloopmanip.c (duplicate_loop, duplicate_subloops, copy_loops_to,
loop_redirect_edge, loop_delete_branch_edge, copy_bbs, remove_bbs,
rpe_enum_p, find_branch, alp_enum_p, add_loop, fix_loop_placements,
fix_bb_placement, fix_bb_placements, place_new_loop,
scale_loop_frequencies, scale_bbs_frequencies, record_exit_edges):
New static functions.
(fix_loop_placement, can_duplicate_loop_p,
duplicate_loop_to_header_edge, loopify, remove_path, split_loop_bb):
New functions.
* cfgloop.h (loop_optimizer_init, loop_optimizer_finalize,
unswitch_loops): Declare.
* loop-init.c: New file.
* loop-unswitch.c: New file.
* Makefile.in (loop-init.o, loop-unswitch.o): New.
* params.def (PARAM_MAX_UNSWITCH_INSNS, PARAM_MAX_UNSWITCH_LEVEL): New.
* toplev.c (DFI_loop2): New dump.
(flag_unswitch_loops): New.
(lang_independent_options): Add it.
(rest_of_compilation): Call new loop optimizer.
(parse_options_and_default_flags): Turn flag_unswitch_loops on with -O3.
From-SVN: r62578
2003-02-08 15:29:00 +01:00
|
|
|
|
2004-07-09 05:19:14 +02:00
|
|
|
/* The maximum number of iterations of a loop the brute force algorithm
|
|
|
|
for analysis of # of iterations of the loop tries to evaluate. */
|
|
|
|
DEFPARAM(PARAM_MAX_ITERATIONS_TO_TRACK,
|
|
|
|
"max-iterations-to-track",
|
2004-12-01 17:46:25 +01:00
|
|
|
"Bound on the number of iterations the brute force # of iterations analysis algorithm evaluates",
|
|
|
|
1000, 0, 0)
|
2004-07-09 05:19:14 +02:00
|
|
|
|
ddg.h, [...]: New files.
* ddg.h, ddg.c, modulo-sched.c: New files.
* cfglayout.c (duplicate_insn_chain): Remove "static" and push
internals to "dupicate_insn".
(duplicate_insn): New function.
* cfglayout.h (duplicate_insn_chain, duplicate_insn): New
declarations.
* common.opt (fmodulo-sched): New flag.
* df.c (df_bb_regno_last_use_find, df_bb_regno_first_def_find):
Remove static and forward declaration.
(df_find_def, df_reg_used, df_bb_regno_last_def_find): New
functions.
* df.h (df_bb_regno_last_use_find, df_bb_regno_first_def_find,
df_bb_regno_last_def_find, df_find_def, df_reg_used): New
declarations.
* flags.h (flag_modulo_sched): New flag.
* opts.c (common_handle_option): Handle modulo-sched flag.
* params.def (max-sms-loop-number, sms-max-ii-factor,
sms-dfa-history, sms-loop-average-count-threshold): New
parameters.
* params.h (MAX_SMS_LOOP_NUMBER, SMS_MAX_II_FACTOR,
SMS_DFA_HISTORY, SMS_LOOP_AVERAGE_COUNT_THRESHOLD): New
parameters.
* passes.c ("sms", "sms-vcg"): New dumps.
(rest_of_handle_sched): Call sms_schedule.
* rtl.h (sms_schedule): New declaration.
* timevar.def (TV_SMS): New.
* toplev.c (flag_modulo_sched): Initialize.
(f_options): Handle -fmodulo-sched option.
* docs/invoke.texi: Document -fmodulo-sched & -dm options.
* docs/passes.texi: Document new SMS pass.f toplev.c doc/invoke.texi doc/passes.texi
Co-Authored-By: Mostafa Hagog <mustafa@il.ibm.com>
From-SVN: r82235
2004-05-25 14:55:06 +02:00
|
|
|
DEFPARAM(PARAM_MAX_SMS_LOOP_NUMBER,
|
|
|
|
"max-sms-loop-number",
|
2004-12-01 17:46:25 +01:00
|
|
|
"Maximum number of loops to perform swing modulo scheduling on (mainly for debugging)",
|
|
|
|
-1, -1, -1)
|
|
|
|
|
ddg.h, [...]: New files.
* ddg.h, ddg.c, modulo-sched.c: New files.
* cfglayout.c (duplicate_insn_chain): Remove "static" and push
internals to "dupicate_insn".
(duplicate_insn): New function.
* cfglayout.h (duplicate_insn_chain, duplicate_insn): New
declarations.
* common.opt (fmodulo-sched): New flag.
* df.c (df_bb_regno_last_use_find, df_bb_regno_first_def_find):
Remove static and forward declaration.
(df_find_def, df_reg_used, df_bb_regno_last_def_find): New
functions.
* df.h (df_bb_regno_last_use_find, df_bb_regno_first_def_find,
df_bb_regno_last_def_find, df_find_def, df_reg_used): New
declarations.
* flags.h (flag_modulo_sched): New flag.
* opts.c (common_handle_option): Handle modulo-sched flag.
* params.def (max-sms-loop-number, sms-max-ii-factor,
sms-dfa-history, sms-loop-average-count-threshold): New
parameters.
* params.h (MAX_SMS_LOOP_NUMBER, SMS_MAX_II_FACTOR,
SMS_DFA_HISTORY, SMS_LOOP_AVERAGE_COUNT_THRESHOLD): New
parameters.
* passes.c ("sms", "sms-vcg"): New dumps.
(rest_of_handle_sched): Call sms_schedule.
* rtl.h (sms_schedule): New declaration.
* timevar.def (TV_SMS): New.
* toplev.c (flag_modulo_sched): Initialize.
(f_options): Handle -fmodulo-sched option.
* docs/invoke.texi: Document -fmodulo-sched & -dm options.
* docs/passes.texi: Document new SMS pass.f toplev.c doc/invoke.texi doc/passes.texi
Co-Authored-By: Mostafa Hagog <mustafa@il.ibm.com>
From-SVN: r82235
2004-05-25 14:55:06 +02:00
|
|
|
/* This parameter is used to tune SMS MAX II calculations. */
|
|
|
|
DEFPARAM(PARAM_SMS_MAX_II_FACTOR,
|
|
|
|
"sms-max-ii-factor",
|
2004-12-01 17:46:25 +01:00
|
|
|
"A factor for tuning the upper bound that swing modulo scheduler uses for scheduling a loop",
|
|
|
|
100, 0, 0)
|
ddg.h, [...]: New files.
* ddg.h, ddg.c, modulo-sched.c: New files.
* cfglayout.c (duplicate_insn_chain): Remove "static" and push
internals to "dupicate_insn".
(duplicate_insn): New function.
* cfglayout.h (duplicate_insn_chain, duplicate_insn): New
declarations.
* common.opt (fmodulo-sched): New flag.
* df.c (df_bb_regno_last_use_find, df_bb_regno_first_def_find):
Remove static and forward declaration.
(df_find_def, df_reg_used, df_bb_regno_last_def_find): New
functions.
* df.h (df_bb_regno_last_use_find, df_bb_regno_first_def_find,
df_bb_regno_last_def_find, df_find_def, df_reg_used): New
declarations.
* flags.h (flag_modulo_sched): New flag.
* opts.c (common_handle_option): Handle modulo-sched flag.
* params.def (max-sms-loop-number, sms-max-ii-factor,
sms-dfa-history, sms-loop-average-count-threshold): New
parameters.
* params.h (MAX_SMS_LOOP_NUMBER, SMS_MAX_II_FACTOR,
SMS_DFA_HISTORY, SMS_LOOP_AVERAGE_COUNT_THRESHOLD): New
parameters.
* passes.c ("sms", "sms-vcg"): New dumps.
(rest_of_handle_sched): Call sms_schedule.
* rtl.h (sms_schedule): New declaration.
* timevar.def (TV_SMS): New.
* toplev.c (flag_modulo_sched): Initialize.
(f_options): Handle -fmodulo-sched option.
* docs/invoke.texi: Document -fmodulo-sched & -dm options.
* docs/passes.texi: Document new SMS pass.f toplev.c doc/invoke.texi doc/passes.texi
Co-Authored-By: Mostafa Hagog <mustafa@il.ibm.com>
From-SVN: r82235
2004-05-25 14:55:06 +02:00
|
|
|
DEFPARAM(PARAM_SMS_DFA_HISTORY,
|
|
|
|
"sms-dfa-history",
|
2005-10-08 09:15:59 +02:00
|
|
|
"The number of cycles the swing modulo scheduler considers when checking conflicts using DFA",
|
2004-12-01 17:46:25 +01:00
|
|
|
0, 0, 0)
|
ddg.h, [...]: New files.
* ddg.h, ddg.c, modulo-sched.c: New files.
* cfglayout.c (duplicate_insn_chain): Remove "static" and push
internals to "dupicate_insn".
(duplicate_insn): New function.
* cfglayout.h (duplicate_insn_chain, duplicate_insn): New
declarations.
* common.opt (fmodulo-sched): New flag.
* df.c (df_bb_regno_last_use_find, df_bb_regno_first_def_find):
Remove static and forward declaration.
(df_find_def, df_reg_used, df_bb_regno_last_def_find): New
functions.
* df.h (df_bb_regno_last_use_find, df_bb_regno_first_def_find,
df_bb_regno_last_def_find, df_find_def, df_reg_used): New
declarations.
* flags.h (flag_modulo_sched): New flag.
* opts.c (common_handle_option): Handle modulo-sched flag.
* params.def (max-sms-loop-number, sms-max-ii-factor,
sms-dfa-history, sms-loop-average-count-threshold): New
parameters.
* params.h (MAX_SMS_LOOP_NUMBER, SMS_MAX_II_FACTOR,
SMS_DFA_HISTORY, SMS_LOOP_AVERAGE_COUNT_THRESHOLD): New
parameters.
* passes.c ("sms", "sms-vcg"): New dumps.
(rest_of_handle_sched): Call sms_schedule.
* rtl.h (sms_schedule): New declaration.
* timevar.def (TV_SMS): New.
* toplev.c (flag_modulo_sched): Initialize.
(f_options): Handle -fmodulo-sched option.
* docs/invoke.texi: Document -fmodulo-sched & -dm options.
* docs/passes.texi: Document new SMS pass.f toplev.c doc/invoke.texi doc/passes.texi
Co-Authored-By: Mostafa Hagog <mustafa@il.ibm.com>
From-SVN: r82235
2004-05-25 14:55:06 +02:00
|
|
|
DEFPARAM(PARAM_SMS_LOOP_AVERAGE_COUNT_THRESHOLD,
|
|
|
|
"sms-loop-average-count-threshold",
|
2004-12-01 17:46:25 +01:00
|
|
|
"A threshold on the average loop count considered by the swing modulo scheduler",
|
|
|
|
0, 0, 0)
|
ddg.h, [...]: New files.
* ddg.h, ddg.c, modulo-sched.c: New files.
* cfglayout.c (duplicate_insn_chain): Remove "static" and push
internals to "dupicate_insn".
(duplicate_insn): New function.
* cfglayout.h (duplicate_insn_chain, duplicate_insn): New
declarations.
* common.opt (fmodulo-sched): New flag.
* df.c (df_bb_regno_last_use_find, df_bb_regno_first_def_find):
Remove static and forward declaration.
(df_find_def, df_reg_used, df_bb_regno_last_def_find): New
functions.
* df.h (df_bb_regno_last_use_find, df_bb_regno_first_def_find,
df_bb_regno_last_def_find, df_find_def, df_reg_used): New
declarations.
* flags.h (flag_modulo_sched): New flag.
* opts.c (common_handle_option): Handle modulo-sched flag.
* params.def (max-sms-loop-number, sms-max-ii-factor,
sms-dfa-history, sms-loop-average-count-threshold): New
parameters.
* params.h (MAX_SMS_LOOP_NUMBER, SMS_MAX_II_FACTOR,
SMS_DFA_HISTORY, SMS_LOOP_AVERAGE_COUNT_THRESHOLD): New
parameters.
* passes.c ("sms", "sms-vcg"): New dumps.
(rest_of_handle_sched): Call sms_schedule.
* rtl.h (sms_schedule): New declaration.
* timevar.def (TV_SMS): New.
* toplev.c (flag_modulo_sched): Initialize.
(f_options): Handle -fmodulo-sched option.
* docs/invoke.texi: Document -fmodulo-sched & -dm options.
* docs/passes.texi: Document new SMS pass.f toplev.c doc/invoke.texi doc/passes.texi
Co-Authored-By: Mostafa Hagog <mustafa@il.ibm.com>
From-SVN: r82235
2004-05-25 14:55:06 +02:00
|
|
|
|
invoke.texi (-malign-double): Re-add lost warning.
* invoke.texi (-malign-double): Re-add lost warning.
* i386-protos.h (x86_output_mi_thunk): Declare.
* unix.h (ASM_OUTPUT_MI_THUNK): Move offline to ...
* i386.c (x86_output_mi_thunk): ... here; handle 64bits.
* dwarf2out.c (output_call_frame_info): Do not skip unwind info
when flag_asynchronous_unwind_tables is set.
* flags.h (flag_reorder_functions): Declare.
* function.c (prepare_function_start): Initialize frequnecy.
* params.def (HOT_BB_COUNT_FRACTION, HOT_BB_FREQUENCY_FRACTION): New paramters.
* Makefile.in (predict.o): Add dependency on target.h and params.h
* defaults.h (HOT_TEXT_SECTION_NAME,
UNLIKELY_EXECUTED_TEXT_SECTION_NAME): New macros.
* predict.c (choose_function_section): New function.
(estimate_bb_frequencies): Use it.
* toplev.c (flag_reorder_functions): New global variable.
(lang_independent_options): New.
(parse_options_and_default_flags): Set.
* varasm.c (assemble_start_function): Bypass functdion alignment
for never executed functions.
* invoke.texi (-freorder-blocks, -freorder-functions): Document.
(param hot-bb-count-fraction, hot-bb-frequency-fraction): New.
* tm.texi (HOT_TEXT_SECTION_NAME, UNLIKELY_EXECUTED_TEXT_SECTION_NAME):
Document.
Thu Jan 3 21:52:09 CET 2002 Jan Hubicka <jh@suse.cz>
* predict.c: Inlude profile.h
(MIN_COUNT): Rename to MIN_COUNT_FRACTION
(maybe_hot_bb_p, probably_cold_bb_p, probably_never_executed_bb_p):
Use the information about maximal counter in the program.
Thu Dec 20 22:14:00 CET 2001 Jan Hubicka <jh@suse.cz>
* basic-block.h (maybe_hot_bb_p, probably_cold_bb_p,
probably_never_executed_bb_p): New functions.
* cfgcleanup.c (outgoing_edges_match): Use them.
* predict.c (MIN_COUNT, MIN_FREQUENCY): New macros.
(maybe_hot_bb_p, probably_cold_bb_p,
probably_never_executed_bb_p): New functions.
* function.h (function): Add new field function_frequency.
* predict.c (compute_function_frequency): New function.
(estimate_probability): Call it.
From-SVN: r53478
2002-05-15 11:00:30 +02:00
|
|
|
DEFPARAM(HOT_BB_COUNT_FRACTION,
|
|
|
|
"hot-bb-count-fraction",
|
2004-12-01 17:46:25 +01:00
|
|
|
"Select fraction of the maximal count of repetitions of basic block in program given basic block needs to have to be considered hot",
|
|
|
|
10000, 0, 0)
|
invoke.texi (-malign-double): Re-add lost warning.
* invoke.texi (-malign-double): Re-add lost warning.
* i386-protos.h (x86_output_mi_thunk): Declare.
* unix.h (ASM_OUTPUT_MI_THUNK): Move offline to ...
* i386.c (x86_output_mi_thunk): ... here; handle 64bits.
* dwarf2out.c (output_call_frame_info): Do not skip unwind info
when flag_asynchronous_unwind_tables is set.
* flags.h (flag_reorder_functions): Declare.
* function.c (prepare_function_start): Initialize frequnecy.
* params.def (HOT_BB_COUNT_FRACTION, HOT_BB_FREQUENCY_FRACTION): New paramters.
* Makefile.in (predict.o): Add dependency on target.h and params.h
* defaults.h (HOT_TEXT_SECTION_NAME,
UNLIKELY_EXECUTED_TEXT_SECTION_NAME): New macros.
* predict.c (choose_function_section): New function.
(estimate_bb_frequencies): Use it.
* toplev.c (flag_reorder_functions): New global variable.
(lang_independent_options): New.
(parse_options_and_default_flags): Set.
* varasm.c (assemble_start_function): Bypass functdion alignment
for never executed functions.
* invoke.texi (-freorder-blocks, -freorder-functions): Document.
(param hot-bb-count-fraction, hot-bb-frequency-fraction): New.
* tm.texi (HOT_TEXT_SECTION_NAME, UNLIKELY_EXECUTED_TEXT_SECTION_NAME):
Document.
Thu Jan 3 21:52:09 CET 2002 Jan Hubicka <jh@suse.cz>
* predict.c: Inlude profile.h
(MIN_COUNT): Rename to MIN_COUNT_FRACTION
(maybe_hot_bb_p, probably_cold_bb_p, probably_never_executed_bb_p):
Use the information about maximal counter in the program.
Thu Dec 20 22:14:00 CET 2001 Jan Hubicka <jh@suse.cz>
* basic-block.h (maybe_hot_bb_p, probably_cold_bb_p,
probably_never_executed_bb_p): New functions.
* cfgcleanup.c (outgoing_edges_match): Use them.
* predict.c (MIN_COUNT, MIN_FREQUENCY): New macros.
(maybe_hot_bb_p, probably_cold_bb_p,
probably_never_executed_bb_p): New functions.
* function.h (function): Add new field function_frequency.
* predict.c (compute_function_frequency): New function.
(estimate_probability): Call it.
From-SVN: r53478
2002-05-15 11:00:30 +02:00
|
|
|
DEFPARAM(HOT_BB_FREQUENCY_FRACTION,
|
|
|
|
"hot-bb-frequency-fraction",
|
2004-12-01 17:46:25 +01:00
|
|
|
"Select fraction of the maximal frequency of executions of basic block in function given basic block needs to have to be considered hot",
|
|
|
|
1000, 0, 0)
|
2005-11-05 01:55:23 +01:00
|
|
|
|
|
|
|
/* For guessed profiles, the loops having unknown number of iterations
|
|
|
|
are predicted to iterate relatively few (10) times at average.
|
|
|
|
For functions containing one loop with large known number of iterations
|
|
|
|
and other loops having unbounded loops we would end up predicting all
|
c-typeck.c, [...]: Fix comment typos.
* c-typeck.c, config/i386/netware.h, config/m32c/cond.md,
config/ms1/ms1.h, config/rs6000/predicates.md,
config/s390/s390.c, params.def, postreload-gcse.c,
tree-flow-inline.h, tree-ssa-operands.c, tree-vectorizer.c,
tree-vrp.c, tree.c: Fix comment typos.
* doc/invoke.texi: Fix typos.
From-SVN: r106532
2005-11-05 21:24:18 +01:00
|
|
|
the other loops cold that is not usually the case. So we need to artificially
|
2005-11-05 01:55:23 +01:00
|
|
|
flatten the profile.
|
|
|
|
|
basic-block.h, [...]: Fix comment typos.
* basic-block.h, config/i386/winnt.c, config/pa/pa.c,
config/s390/s390.c, dfp.c, expr.c, fold-const.c, params.def,
reload.c, struct-equiv.c, tree-ssa-ccp.c, tree-ssa-pre.c,
tree-ssa-reassoc.c, tree-ssa-structalias.c: Fix comment typos.
* doc/invoke.texi, doc/tm.texi: Fix typos.
From-SVN: r108626
2005-12-16 07:09:31 +01:00
|
|
|
We need to cut the maximal predicted iterations to large enough iterations
|
2005-11-05 01:55:23 +01:00
|
|
|
so the loop appears important, but safely within HOT_BB_COUNT_FRACTION
|
|
|
|
range. */
|
|
|
|
|
|
|
|
DEFPARAM(PARAM_MAX_PREDICTED_ITERATIONS,
|
|
|
|
"max-predicted-iterations",
|
|
|
|
"The maximum number of loop iterations we predict statically",
|
|
|
|
100, 0, 0)
|
2002-06-01 23:31:42 +02:00
|
|
|
DEFPARAM(TRACER_DYNAMIC_COVERAGE_FEEDBACK,
|
|
|
|
"tracer-dynamic-coverage-feedback",
|
2004-12-01 17:46:25 +01:00
|
|
|
"The percentage of function, weighted by execution frequency, that must be covered by trace formation. Used when profile feedback is available",
|
|
|
|
95, 0, 100)
|
2002-06-01 23:31:42 +02:00
|
|
|
DEFPARAM(TRACER_DYNAMIC_COVERAGE,
|
|
|
|
"tracer-dynamic-coverage",
|
2004-12-01 17:46:25 +01:00
|
|
|
"The percentage of function, weighted by execution frequency, that must be covered by trace formation. Used when profile feedback is not available",
|
|
|
|
75, 0, 100)
|
2002-06-01 23:31:42 +02:00
|
|
|
DEFPARAM(TRACER_MAX_CODE_GROWTH,
|
|
|
|
"tracer-max-code-growth",
|
2003-07-19 10:13:58 +02:00
|
|
|
"Maximal code growth caused by tail duplication (in percent)",
|
2004-12-01 17:46:25 +01:00
|
|
|
100, 0, 0)
|
2002-06-01 23:31:42 +02:00
|
|
|
DEFPARAM(TRACER_MIN_BRANCH_RATIO,
|
|
|
|
"tracer-min-branch-ratio",
|
2004-12-01 17:46:25 +01:00
|
|
|
"Stop reverse growth if the reverse probability of best edge is less than this threshold (in percent)",
|
|
|
|
10, 0, 100)
|
2002-06-01 23:31:42 +02:00
|
|
|
DEFPARAM(TRACER_MIN_BRANCH_PROBABILITY_FEEDBACK,
|
|
|
|
"tracer-min-branch-probability-feedback",
|
2004-12-01 17:46:25 +01:00
|
|
|
"Stop forward growth if the probability of best edge is less than this threshold (in percent). Used when profile feedback is available",
|
|
|
|
80, 0, 100)
|
2002-06-01 23:31:42 +02:00
|
|
|
DEFPARAM(TRACER_MIN_BRANCH_PROBABILITY,
|
|
|
|
"tracer-min-branch-probability",
|
2004-12-01 17:46:25 +01:00
|
|
|
"Stop forward growth if the probability of best edge is less than this threshold (in percent). Used when profile feedback is not available",
|
|
|
|
50, 0, 100)
|
2002-11-12 01:27:31 +01:00
|
|
|
|
2003-02-15 22:06:16 +01:00
|
|
|
/* The maximum number of incoming edges to consider for crossjumping. */
|
|
|
|
DEFPARAM(PARAM_MAX_CROSSJUMP_EDGES,
|
|
|
|
"max-crossjump-edges",
|
|
|
|
"The maximum number of incoming edges to consider for crossjumping",
|
2004-12-01 17:46:25 +01:00
|
|
|
100, 0, 0)
|
2003-02-15 22:06:16 +01:00
|
|
|
|
2004-08-06 19:20:53 +02:00
|
|
|
/* The minimum number of matching instructions to consider for crossjumping. */
|
|
|
|
DEFPARAM(PARAM_MIN_CROSSJUMP_INSNS,
|
|
|
|
"min-crossjump-insns",
|
|
|
|
"The minimum number of matching instructions to consider for crossjumping",
|
2004-12-01 17:46:25 +01:00
|
|
|
5, 0, 0)
|
2004-08-06 19:20:53 +02:00
|
|
|
|
2005-10-05 21:11:42 +02:00
|
|
|
/* The maximum number expansion factor when copying basic blocks. */
|
|
|
|
DEFPARAM(PARAM_MAX_GROW_COPY_BB_INSNS,
|
|
|
|
"max-grow-copy-bb-insns",
|
|
|
|
"The maximum expansion factor when copying basic blocks",
|
|
|
|
8, 0, 0)
|
|
|
|
|
2005-02-01 11:03:15 +01:00
|
|
|
/* The maximum number of insns to duplicate when unfactoring computed gotos. */
|
|
|
|
DEFPARAM(PARAM_MAX_GOTO_DUPLICATION_INSNS,
|
|
|
|
"max-goto-duplication-insns",
|
|
|
|
"The maximum number of insns to duplicate when unfactoring computed gotos",
|
|
|
|
8, 0, 0)
|
|
|
|
|
2003-06-04 09:51:41 +02:00
|
|
|
/* The maximum length of path considered in cse. */
|
|
|
|
DEFPARAM(PARAM_MAX_CSE_PATH_LENGTH,
|
|
|
|
"max-cse-path-length",
|
2003-07-19 10:13:58 +02:00
|
|
|
"The maximum length of path considered in cse",
|
2004-12-01 17:46:25 +01:00
|
|
|
10, 0, 0)
|
2005-11-05 01:55:23 +01:00
|
|
|
DEFPARAM(PARAM_MAX_CSE_INSNS,
|
|
|
|
"max-flow-memory-locations",
|
|
|
|
"The maximum instructions CSE process before flushing",
|
|
|
|
1000, 0, 0)
|
2003-06-04 09:51:41 +02:00
|
|
|
|
2004-07-10 06:57:58 +02:00
|
|
|
/* The cost of expression in loop invariant motion that is considered
|
|
|
|
expensive. */
|
|
|
|
DEFPARAM(PARAM_LIM_EXPENSIVE,
|
|
|
|
"lim-expensive",
|
|
|
|
"The minimum cost of an expensive expression in the loop invariant motion",
|
2004-12-01 17:46:25 +01:00
|
|
|
20, 0, 0)
|
2004-07-10 06:57:58 +02:00
|
|
|
|
tree-ssa-loop-ivopts.c: New file.
* tree-ssa-loop-ivopts.c: New file.
* Makefile.in (tree-ssa-loop-ivopts.c): Add.
* cfgloop.h (target_avail_regs, target_res_regs, target_small_cost,
target_pres_cost, target_spill_cost): Declare.
* cfgloopanal.c (avail_regs, res_regs, small_cost, pres_cost,
spill_cost): Renamed to ...
(target_avail_regs, target_res_regs, target_small_cost,
target_pres_cost, target_spill_cost): ... and exported.
(init_set_costs, global_cost_for_size): Work with renamed variables.
* common.opt (flag_ivopts): New flag.
* expr.c (expand_expr_real_1): Handle SSA_NAME case. Handle
REF_ORIGINAL.
* gimplify.c (struct gimplify_ctx): Add into_ssa field.
(internal_get_tmp_var, gimplify_modify_expr, gimplify_expr): Support
generating SSA form.
(force_gimple_operand): New function.
* timevar.def (TV_TREE_LOOP_IVOPTS): New timevar.
* tree-cfg.c (stmt_bsi): New function.
* params.def (PARAM_IV_CONSIDER_ALL_CANDIDATES_BOUND,
PARAM_IV_MAX_CONSIDERED_USES): New.
* tree-flow.h (stmt_bsi, tree_ssa_iv_optimize, split_loop_exit_edge,
bsi_insert_on_edge_immediate_loop. standard_iv_increment_position,
ip_end_pos, ip_normal_pos, force_gimple_operand): Declare.
* tree-gimple.c (is_gimple_formal_tmp_var): Accept ssa names.
* tree-nested.c (build_addr): Export.
* tree-optimize.c (init_tree_optimization_passes): Add
pass_iv_optimize.
* tree-pass.h (pass_iv_optimize): Declare.
* tree-ssa-loop-im.c (for_each_index): Handle REALPART_EXPR and
IMAGPART_EXPR.
* tree-ssa-loop-manip.c (create_iv): Force the base to be acceptable
as a phi node argument.
(split_loop_exit_edge, bsi_insert_on_edge_immediate_loop,
ip_end_pos, ip_normal_pos, standard_iv_increment_position): New
functions.
* tree-ssa-loop-niter.c (zero_p, unsigned_type_for): Export.
* tree-ssa-loop.c (tree_ssa_loop_ivopts, gate_tree_ssa_loop_ivopts,
pass_iv_optimize): New pass.
* tree-ssa-operands.c (get_indirect_ref_operands): Handle REF_ORIGINAL.
* tree-ssanames.c (release_ssa_name): Allow calling with var = NULL.
* tree.c (build_int_cst_type, cst_and_fits_in_hwi): New functions.
* tree.h (REF_ORIGINAL): New macro.
(build_int_cst_type, unsigned_type_for, zero_p,
cst_and_fits_in_hwi, build_addr): Declare.
* doc/invoke.texi (-fivopts): Document.
(PARAM_IV_CONSIDER_ALL_CANDIDATES_BOUND,
PARAM_IV_MAX_CONSIDERED_USES): Document.
* doc/passes.texi: Document induction variable optimizations pass.
* gcc.dg/tree-ssa/loop-2.c: New test.
* gcc.dg/tree-ssa/loop-3.c: New test.
* gcc.dg/tree-ssa/loop-4.c: New test.
* gcc.dg/tree-ssa/loop-5.c: New test.
From-SVN: r87100
2004-09-05 11:25:37 +02:00
|
|
|
/* Bound on number of candidates for induction variables below that
|
|
|
|
all candidates are considered for each use in induction variable
|
|
|
|
optimizations. */
|
|
|
|
|
|
|
|
DEFPARAM(PARAM_IV_CONSIDER_ALL_CANDIDATES_BOUND,
|
|
|
|
"iv-consider-all-candidates-bound",
|
|
|
|
"Bound on number of candidates below that all candidates are considered in iv optimizations",
|
2004-12-01 17:46:25 +01:00
|
|
|
30, 0, 0)
|
tree-ssa-loop-ivopts.c: New file.
* tree-ssa-loop-ivopts.c: New file.
* Makefile.in (tree-ssa-loop-ivopts.c): Add.
* cfgloop.h (target_avail_regs, target_res_regs, target_small_cost,
target_pres_cost, target_spill_cost): Declare.
* cfgloopanal.c (avail_regs, res_regs, small_cost, pres_cost,
spill_cost): Renamed to ...
(target_avail_regs, target_res_regs, target_small_cost,
target_pres_cost, target_spill_cost): ... and exported.
(init_set_costs, global_cost_for_size): Work with renamed variables.
* common.opt (flag_ivopts): New flag.
* expr.c (expand_expr_real_1): Handle SSA_NAME case. Handle
REF_ORIGINAL.
* gimplify.c (struct gimplify_ctx): Add into_ssa field.
(internal_get_tmp_var, gimplify_modify_expr, gimplify_expr): Support
generating SSA form.
(force_gimple_operand): New function.
* timevar.def (TV_TREE_LOOP_IVOPTS): New timevar.
* tree-cfg.c (stmt_bsi): New function.
* params.def (PARAM_IV_CONSIDER_ALL_CANDIDATES_BOUND,
PARAM_IV_MAX_CONSIDERED_USES): New.
* tree-flow.h (stmt_bsi, tree_ssa_iv_optimize, split_loop_exit_edge,
bsi_insert_on_edge_immediate_loop. standard_iv_increment_position,
ip_end_pos, ip_normal_pos, force_gimple_operand): Declare.
* tree-gimple.c (is_gimple_formal_tmp_var): Accept ssa names.
* tree-nested.c (build_addr): Export.
* tree-optimize.c (init_tree_optimization_passes): Add
pass_iv_optimize.
* tree-pass.h (pass_iv_optimize): Declare.
* tree-ssa-loop-im.c (for_each_index): Handle REALPART_EXPR and
IMAGPART_EXPR.
* tree-ssa-loop-manip.c (create_iv): Force the base to be acceptable
as a phi node argument.
(split_loop_exit_edge, bsi_insert_on_edge_immediate_loop,
ip_end_pos, ip_normal_pos, standard_iv_increment_position): New
functions.
* tree-ssa-loop-niter.c (zero_p, unsigned_type_for): Export.
* tree-ssa-loop.c (tree_ssa_loop_ivopts, gate_tree_ssa_loop_ivopts,
pass_iv_optimize): New pass.
* tree-ssa-operands.c (get_indirect_ref_operands): Handle REF_ORIGINAL.
* tree-ssanames.c (release_ssa_name): Allow calling with var = NULL.
* tree.c (build_int_cst_type, cst_and_fits_in_hwi): New functions.
* tree.h (REF_ORIGINAL): New macro.
(build_int_cst_type, unsigned_type_for, zero_p,
cst_and_fits_in_hwi, build_addr): Declare.
* doc/invoke.texi (-fivopts): Document.
(PARAM_IV_CONSIDER_ALL_CANDIDATES_BOUND,
PARAM_IV_MAX_CONSIDERED_USES): Document.
* doc/passes.texi: Document induction variable optimizations pass.
* gcc.dg/tree-ssa/loop-2.c: New test.
* gcc.dg/tree-ssa/loop-3.c: New test.
* gcc.dg/tree-ssa/loop-4.c: New test.
* gcc.dg/tree-ssa/loop-5.c: New test.
From-SVN: r87100
2004-09-05 11:25:37 +02:00
|
|
|
|
|
|
|
/* The induction variable optimizations give up on loops that contain more
|
|
|
|
induction variable uses. */
|
|
|
|
|
|
|
|
DEFPARAM(PARAM_IV_MAX_CONSIDERED_USES,
|
|
|
|
"iv-max-considered-uses",
|
|
|
|
"Bound on number of iv uses in loop optimized in iv optimizations",
|
2004-12-01 17:46:25 +01:00
|
|
|
250, 0, 0)
|
tree-ssa-loop-ivopts.c: New file.
* tree-ssa-loop-ivopts.c: New file.
* Makefile.in (tree-ssa-loop-ivopts.c): Add.
* cfgloop.h (target_avail_regs, target_res_regs, target_small_cost,
target_pres_cost, target_spill_cost): Declare.
* cfgloopanal.c (avail_regs, res_regs, small_cost, pres_cost,
spill_cost): Renamed to ...
(target_avail_regs, target_res_regs, target_small_cost,
target_pres_cost, target_spill_cost): ... and exported.
(init_set_costs, global_cost_for_size): Work with renamed variables.
* common.opt (flag_ivopts): New flag.
* expr.c (expand_expr_real_1): Handle SSA_NAME case. Handle
REF_ORIGINAL.
* gimplify.c (struct gimplify_ctx): Add into_ssa field.
(internal_get_tmp_var, gimplify_modify_expr, gimplify_expr): Support
generating SSA form.
(force_gimple_operand): New function.
* timevar.def (TV_TREE_LOOP_IVOPTS): New timevar.
* tree-cfg.c (stmt_bsi): New function.
* params.def (PARAM_IV_CONSIDER_ALL_CANDIDATES_BOUND,
PARAM_IV_MAX_CONSIDERED_USES): New.
* tree-flow.h (stmt_bsi, tree_ssa_iv_optimize, split_loop_exit_edge,
bsi_insert_on_edge_immediate_loop. standard_iv_increment_position,
ip_end_pos, ip_normal_pos, force_gimple_operand): Declare.
* tree-gimple.c (is_gimple_formal_tmp_var): Accept ssa names.
* tree-nested.c (build_addr): Export.
* tree-optimize.c (init_tree_optimization_passes): Add
pass_iv_optimize.
* tree-pass.h (pass_iv_optimize): Declare.
* tree-ssa-loop-im.c (for_each_index): Handle REALPART_EXPR and
IMAGPART_EXPR.
* tree-ssa-loop-manip.c (create_iv): Force the base to be acceptable
as a phi node argument.
(split_loop_exit_edge, bsi_insert_on_edge_immediate_loop,
ip_end_pos, ip_normal_pos, standard_iv_increment_position): New
functions.
* tree-ssa-loop-niter.c (zero_p, unsigned_type_for): Export.
* tree-ssa-loop.c (tree_ssa_loop_ivopts, gate_tree_ssa_loop_ivopts,
pass_iv_optimize): New pass.
* tree-ssa-operands.c (get_indirect_ref_operands): Handle REF_ORIGINAL.
* tree-ssanames.c (release_ssa_name): Allow calling with var = NULL.
* tree.c (build_int_cst_type, cst_and_fits_in_hwi): New functions.
* tree.h (REF_ORIGINAL): New macro.
(build_int_cst_type, unsigned_type_for, zero_p,
cst_and_fits_in_hwi, build_addr): Declare.
* doc/invoke.texi (-fivopts): Document.
(PARAM_IV_CONSIDER_ALL_CANDIDATES_BOUND,
PARAM_IV_MAX_CONSIDERED_USES): Document.
* doc/passes.texi: Document induction variable optimizations pass.
* gcc.dg/tree-ssa/loop-2.c: New test.
* gcc.dg/tree-ssa/loop-3.c: New test.
* gcc.dg/tree-ssa/loop-4.c: New test.
* gcc.dg/tree-ssa/loop-5.c: New test.
From-SVN: r87100
2004-09-05 11:25:37 +02:00
|
|
|
|
2004-12-18 21:22:52 +01:00
|
|
|
/* If there are at most this number of ivs in the set, try removing unnecessary
|
|
|
|
ivs from the set always. */
|
|
|
|
|
|
|
|
DEFPARAM(PARAM_IV_ALWAYS_PRUNE_CAND_SET_BOUND,
|
|
|
|
"iv-always-prune-cand-set-bound",
|
|
|
|
"If number of candidates in the set is smaller, we always try to remove unused ivs during its optimization",
|
|
|
|
10, 0, 0)
|
|
|
|
|
2005-04-21 10:48:55 +02:00
|
|
|
DEFPARAM(PARAM_SCEV_MAX_EXPR_SIZE,
|
|
|
|
"scev-max-expr-size",
|
|
|
|
"Bound on size of expressions used in the scalar evolutions analyzer",
|
|
|
|
20, 0, 0)
|
|
|
|
|
2005-09-06 12:59:58 +02:00
|
|
|
DEFPARAM(PARAM_VECT_MAX_VERSION_CHECKS,
|
|
|
|
"vect-max-version-checks",
|
|
|
|
"Bound on number of runtime checks inserted by the vectorizer's loop versioning",
|
|
|
|
6, 0, 0)
|
|
|
|
|
2004-05-13 08:41:07 +02:00
|
|
|
/* The product of the next two is used to decide whether or not to
|
|
|
|
use .GLOBAL_VAR. See tree-dfa.c. */
|
|
|
|
DEFPARAM(PARAM_GLOBAL_VAR_THRESHOLD,
|
|
|
|
"global-var-threshold",
|
|
|
|
"Given N calls and V call-clobbered vars in a function. Use .GLOBAL_VAR if NxV is larger than this limit",
|
2004-12-01 17:46:25 +01:00
|
|
|
500000, 0, 0)
|
2004-05-13 08:41:07 +02:00
|
|
|
|
2004-01-12 10:44:16 +01:00
|
|
|
DEFPARAM(PARAM_MAX_CSELIB_MEMORY_LOCATIONS,
|
|
|
|
"max-cselib-memory-locations",
|
|
|
|
"The maximum memory locations recorded by cselib",
|
2004-12-01 17:46:25 +01:00
|
|
|
500, 0, 0)
|
2005-11-05 01:55:23 +01:00
|
|
|
DEFPARAM(PARAM_MAX_FLOW_MEMORY_LOCATIONS,
|
|
|
|
"max-flow-memory-locations",
|
|
|
|
"The maximum memory locations recorded by flow",
|
|
|
|
100, 0, 0)
|
2004-01-12 10:44:16 +01:00
|
|
|
|
2002-11-12 01:27:31 +01:00
|
|
|
#ifdef ENABLE_GC_ALWAYS_COLLECT
|
|
|
|
# define GGC_MIN_EXPAND_DEFAULT 0
|
2002-11-15 22:27:48 +01:00
|
|
|
# define GGC_MIN_HEAPSIZE_DEFAULT 0
|
2002-11-12 01:27:31 +01:00
|
|
|
#else
|
|
|
|
# define GGC_MIN_EXPAND_DEFAULT 30
|
2002-11-15 22:27:48 +01:00
|
|
|
# define GGC_MIN_HEAPSIZE_DEFAULT 4096
|
2002-11-12 01:27:31 +01:00
|
|
|
#endif
|
|
|
|
|
|
|
|
DEFPARAM(GGC_MIN_EXPAND,
|
|
|
|
"ggc-min-expand",
|
2004-12-01 17:46:25 +01:00
|
|
|
"Minimum heap expansion to trigger garbage collection, as a percentage of the total size of the heap",
|
|
|
|
GGC_MIN_EXPAND_DEFAULT, 0, 0)
|
2002-11-12 01:27:31 +01:00
|
|
|
|
|
|
|
DEFPARAM(GGC_MIN_HEAPSIZE,
|
|
|
|
"ggc-min-heapsize",
|
2003-07-19 10:13:58 +02:00
|
|
|
"Minimum heap size before we start collecting garbage, in kilobytes",
|
2004-12-01 17:46:25 +01:00
|
|
|
GGC_MIN_HEAPSIZE_DEFAULT, 0, 0)
|
2002-11-15 22:27:48 +01:00
|
|
|
|
|
|
|
#undef GGC_MIN_EXPAND_DEFAULT
|
|
|
|
#undef GGC_MIN_HEAPSIZE_DEFAULT
|
2002-11-12 01:27:31 +01:00
|
|
|
|
2004-01-11 16:56:26 +01:00
|
|
|
DEFPARAM(PARAM_MAX_RELOAD_SEARCH_INSNS,
|
|
|
|
"max-reload-search-insns",
|
|
|
|
"The maximum number of instructions to search backward when looking for equivalent reload",
|
2004-12-01 17:46:25 +01:00
|
|
|
100, 0, 0)
|
2004-01-11 16:56:26 +01:00
|
|
|
|
2004-05-13 08:41:07 +02:00
|
|
|
DEFPARAM(PARAM_MAX_ALIASED_VOPS,
|
|
|
|
"max-aliased-vops",
|
c.opt, [...]: Remove "." from end of help texts.
* c.opt, common.opt, config/bfin/bfin.opt, config/pa/pa.opt,
config/rs6000/rs6000.opt, params.def: Remove "." from end of help
texts.
* config/avr/avr.c: Do not use '`' as left quote.
* config/rs6000/rs6000.c, config/s390/s390.c, opts.c, tree.c:
Remove "." from end of diagnostics. Make diagnostics start with
lowercase letter.
cp:
* name-lookup.c, parser.c: Use %q, %< and %> to quote in
diagnostics.
fortran:
* lang.opt: Remove "." from end of help texts.
objc:
* objc-act.c: Use %q to quote in diagnostics.
From-SVN: r101533
2005-07-02 15:19:59 +02:00
|
|
|
"The maximum number of virtual operands allowed to represent aliases before triggering alias grouping",
|
2004-12-01 17:46:25 +01:00
|
|
|
500, 0, 0)
|
2004-05-13 08:41:07 +02:00
|
|
|
|
2004-03-22 23:05:05 +01:00
|
|
|
DEFPARAM(PARAM_MAX_SCHED_REGION_BLOCKS,
|
|
|
|
"max-sched-region-blocks",
|
|
|
|
"The maximum number of blocks in a region to be considered for interblock scheduling",
|
2004-12-01 17:46:25 +01:00
|
|
|
10, 0, 0)
|
2004-03-22 23:05:05 +01:00
|
|
|
|
|
|
|
DEFPARAM(PARAM_MAX_SCHED_REGION_INSNS,
|
|
|
|
"max-sched-region-insns",
|
|
|
|
"The maximum number of insns in a region to be considered for interblock scheduling",
|
2004-12-01 17:46:25 +01:00
|
|
|
100, 0, 0)
|
2004-03-22 23:05:05 +01:00
|
|
|
|
2005-08-24 22:28:07 +02:00
|
|
|
DEFPARAM(PARAM_MIN_SPEC_PROB,
|
|
|
|
"min-spec-prob",
|
|
|
|
"The minimum probability of reaching a source block for interblock speculative scheduling",
|
|
|
|
40, 0, 0)
|
|
|
|
|
2006-03-16 06:20:39 +01:00
|
|
|
DEFPARAM(PARAM_MAX_SCHED_EXTEND_REGIONS_ITERS,
|
|
|
|
"max-sched-extend-regions-iters",
|
|
|
|
"The maximum number of iterations through CFG to extend regions",
|
|
|
|
2, 0, 0)
|
|
|
|
|
2005-01-19 10:31:16 +01:00
|
|
|
DEFPARAM(PARAM_MAX_LAST_VALUE_RTL,
|
|
|
|
"max-last-value-rtl",
|
|
|
|
"The maximum number of RTL nodes that can be recorded as combiner's last value",
|
|
|
|
10000, 0, 0)
|
|
|
|
|
2004-08-19 12:36:07 +02:00
|
|
|
/* INTEGER_CST nodes are shared for values [{-1,0} .. N) for
|
|
|
|
{signed,unsigned} integral types. This determines N.
|
|
|
|
Experimentation shows 256 to be a good value. */
|
|
|
|
DEFPARAM (PARAM_INTEGER_SHARE_LIMIT,
|
|
|
|
"integer-share-limit",
|
|
|
|
"The upper bound for sharing integer constants",
|
2004-12-01 17:46:25 +01:00
|
|
|
256, 2, 2)
|
2004-08-19 12:36:07 +02:00
|
|
|
|
[multiple changes]
2005-04-22 Diego Novillo <dnovillo@redhat.com>
* Makefile.in (tree-into-ssa.o): Add dependency on PARAMS_H.
* lambda-code.c (perfect_nestify): Mark virtual operands in
the moved statement for renaming.
* params.def (PARAM_MIN_VIRTUAL_MAPPINGS): Define.
(PARAM_VIRTUAL_MAPPINGS_TO_SYMS_RATIO): Define.
* params.h (MIN_VIRTUAL_MAPPINGS): Define.
(VIRTUAL_MAPPINGS_TO_SYMS_RATIO): Define.
* tree-flow.h (struct var_ann_d): Update comments.
(rewrite_to_new_ssa_names_bb, rewrite_to_new_ssa_names,
allocate_ssa_names, find_phi_node_for, dump_tree_ssa,
debug_tree_ssa, debug_def_blocks, dump_tree_ssa_stats,
debug_tree_ssa_stats, rewrite_ssa_into_ssa,
dump_repl_tbl, debug_repl_tbl, dump_names_replaced_by,
debug_names_replaced_by): Remove declarations.
(delete_update_ssa, get_current_def, set_current_def): Declare.
(rewrite_into_loop_closed_ssa): Add new argument. Update
all callers.
* tree-into-ssa.c: Include params.h.
(old_virtual_ssa_names): Remove. Update all users.
(need_to_replace_names_p): Remove. Update all users.
(struct update_ssa_stats_d): Declare.
(update_ssa_stats): New local.
(dump_tree_ssa, debug_tree_ssa, debug_def_blocks,
dump_tree_ssa_stats, debug_tree_ssa_stats,
dump_update_ssa, debug_update_ssa,
dump_names_replaced_by, debug_names_replaced_by): Declare.
(get_current_def, set current_def): Make extern.
(is_old_name, is_new_name): Protect against references
past the end of the sets.
(add_new_name_mapping): Assert that OLD and NEW are
different SSA names for the same symbol.
When adding a virtual mapping, update stats for virtual
mapping heuristic.
(insert_phi_nodes_for): If UPDATE_P is true, create the
LHS of the new PHI by duplicating SSA name VAR.
(insert_phi_nodes_1): Remove. Update all users.
(insert_phi_nodes): Remove second argument. Update all
users.
(maybe_replace_use, maybe_replace_def): New.
(rewrite_update_stmt): Call them.
(mark_def_interesting): Remove calls to is_gimple_reg.
(prepare_phi_args_for_update): Remove. Update all users.
(prepare_block_for_update): Only process virtual operands
and GIMPLE registers in normal form.
(prepare_use_sites_for): New.
(prepare_names_to_update): Rename from prepare_def_sites.
Call prepare_use_sites_for.
(dump_update_ssa): Rename from dump_repl_tbl.
Update all users.
Show statistics for virtual mapping heuristic.
(debug_update_ssa): Rename from debug_debug_repl_tbl.
(init_update_ssa): Initialize UPDATE_SSA_STATS.
(delete_update_ssa): Make extern.
(mark_set_for_renaming): If the set is empty, do nothing.
(release_ssa_name_after_update_ssa): Update comment.
(insert_updated_phi_nodes_for): Do not remove existing
PHI nodes for symbols.
(switch_virtuals_to_full_rewrite_p): New.
(switch_virtuals_to_full_rewrite): New.
(update_ssa): Call them.
Clear REWRITE_THIS_STMT and REGISTER_DEFS_IN_THIS_STMT
for every statement before updating.
If all the names in NEW_SSA_NAMES have been marked for
removal, do nothing.
Only start at the top of the CFG if there are symbols in
SYMS_TO_RENAME.
(ssa_rewrite_finalize_block): Remove.
(ssa_register_new_def): Remove.
(ssa_rewrite_stmt): Remove.
(ssa_rewrite_phi_arguments): Remove.
(ssa_rewrite_initialize_block): Remove.
(ssa_mark_def_sites): Remove.
(ssa_mark_def_sites_initialize_block): Remove.
(ssa_mark_phi_uses): Remove.
(rewrite_ssa_into_ssa): Remove.
* tree-phinodes.c (find_phi_node_for): Remove.
* tree-ssa-loop-ivcanon.c (try_unroll_loop_completely):
Call update_ssa.
* tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops):
Remove calls to verify_dominators and
verify_loop_structure.
(tree_unswitch_single_loop): Call update_ssa.
* tree-ssa.c (verify_ssa): Assert that need_ssa_update_p
returns false.
Call verify_stmts.
(delete_tree_ssa): Assert that need_ssa_update_p returns
false.
* tree-vect-transform.c (vect_transform_loop): Call update_ssa.
* tree-vectorizer.c (allocate_new_names, rename_def_op,
free_new_names): Remove. Update all users.
(rename_use_op): Call get_current_def.
(rename_variables_in_bb): Do not handle any real or
virtual definition.
(slpeel_update_phis_for_duplicate_loop): Call
get_current_def and set_current_def instead of using
SSA_NAME_AUX.
(slpeel_update_phi_nodes_for_guard2): Reformat comments.
(slpeel_can_duplicate_loop_p): Call need_ssa_update_p,
ssa_names_to_replace and delete_update_ssa.
* doc/invoke.texi: Document --param min-virtual-mappings
and --param virtual-mappings-ratio.
2005-04-22 Zdenek Dvorak <dvorakz@suse.cz>
Diego Novillo <dnovillo@redhat.com>
* tree-cfg.c (tree_duplicate_bb): Call create_new_def_for
for newly created PHI nodes.
Call create_new_def_for for every new V_MAY_DEF and
V_MUST_DEF on the copied statement.
(struct ssa_name_map_entry): Remove.
(ssa_name_map_entry_hash): Remove.
(ssa_name_map_entry_eq): Remove.
(allocate_ssa_names): Remove.
(rewrite_to_new_ssa_names_def): Remove.
(rewrite_to_new_ssa_names_use): Remove.
(rewrite_to_new_ssa_names_bb): Remove.
(rewrite_to_new_ssa_names): Remove.
(tree_duplicate_sese_region): Remove variables ver,
definitions, phi, ssa_name_map and bi.
Call need_ssa_update_p instead of any_marked_for_rewrite_p.
Call update_ssa.
* tree-ssa-dom.c (tree_ssa_dominator_optimize): Call
update_ssa instead of rewrite_ssa_into_ssa.
* tree-ssa-loop-manip.c (add_exit_phis_edge): Call
create_new_def_for.
(find_uses_to_rename_use): Add argument 'need_phis'.
(find_uses_to_rename_stmt): Do not scan virtual operands.
(find_uses_to_rename): Only scan PHI nodes for
non-virtual names.
(rewrite_into_loop_closed_ssa): Call update_ssa.
(check_loop_closed_ssa_use): Ignore virtual operands.
(check_loop_closed_ssa_stmt): Likewise.
(verify_loop_closed_ssa): Do nothing if CURRENT_LOOPS is
NULL.
(rename_variables, set_phi_def_stmts): Remove.
(tree_duplicate_loop_to_header_edge): Reformat comment.
Remove variables BB, I and DEFINITIONS.
Call need_ssa_update_p.
Call update_ssa.
(lv_adjust_loop_header_phi): Reformat comment.
* tree-ssanames.c (ssa_names_to_rewrite): Remove.
(marked_for_rewrite_p, any_marked_for_rewrite_p,
mark_for_rewrite, unmark_all_for_rewrite,
marked_ssa_names): Remove. Update all users.
(release_ssa_name): If VAR has been registered for SSA
updating, do nothing.
* tree-vrp.c (new_ssa_names, old_ssa_names): Remove.
(build_assert_expr_for): Call register_new_name_mapping.
(insert_range_assertions): Update call to update_ssa.
* tree.h (mark_for_rewrite, unmark_all_for_rewrite,
marked_for_rewrite_p, any_marked_for_rewrite_p,
marked_ssa_names): Remove.
From-SVN: r98599
2005-04-23 02:59:54 +02:00
|
|
|
/* Incremental SSA updates for virtual operands may be very slow if
|
|
|
|
there is a large number of mappings to process. In those cases, it
|
|
|
|
is faster to rewrite the virtual symbols from scratch as if they
|
|
|
|
had been recently introduced. This heuristic cannot be applied to
|
|
|
|
SSA mappings for real SSA names, only symbols kept in FUD chains.
|
|
|
|
|
|
|
|
PARAM_MIN_VIRTUAL_MAPPINGS specifies the minimum number of virtual
|
|
|
|
mappings that should be registered to trigger the heuristic.
|
|
|
|
|
|
|
|
PARAM_VIRTUAL_MAPPINGS_TO_SYMS_RATIO specifies the ratio between
|
|
|
|
mappings and symbols. If the number of virtual mappings is
|
|
|
|
PARAM_VIRTUAL_MAPPINGS_TO_SYMS_RATIO bigger than the number of
|
|
|
|
virtual symbols to be updated, then the updater switches to a full
|
|
|
|
update for those symbols. */
|
|
|
|
DEFPARAM (PARAM_MIN_VIRTUAL_MAPPINGS,
|
|
|
|
"min-virtual-mappings",
|
|
|
|
"Minimum number of virtual mappings to consider switching to full virtual renames",
|
|
|
|
100, 0, 0)
|
|
|
|
|
|
|
|
DEFPARAM (PARAM_VIRTUAL_MAPPINGS_TO_SYMS_RATIO,
|
|
|
|
"virtual-mappings-ratio",
|
|
|
|
"Ratio between virtual mappings and virtual symbols to do full virtual renames",
|
|
|
|
3, 0, 0)
|
|
|
|
|
c-cppbuiltin.c (c_cpp_builtins): Add __SSP_ALL__ and __SSP__.
* c-cppbuiltin.c (c_cpp_builtins): Add __SSP_ALL__ and __SSP__.
* cfgexpand.c: Include params.h.
(has_protected_decls, has_short_buffer): New.
(expand_stack_vars): Take a predicate to determine what to expand.
(defer_stack_allocation): True when flag_stack_protect on.
(SPCT_HAS_LARGE_CHAR_ARRAY, SPCT_HAS_SMALL_CHAR_ARRAY): New.
(SPCT_HAS_ARRAY, SPCT_HAS_AGGREGATE): New.
(stack_protect_classify_type, stack_protect_decl_phase): New.
(stack_protect_decl_phase_1, stack_protect_decl_phase_2): New.
(add_stack_protection_conflicts, create_stack_guard): New.
(expand_used_vars): Add stack protection logic.
(tree_expand_cfg): Likewise.
* common.opt (Wstack-protector): New.
(fstack-protector, fstack-protector-all): New.
* function.c: Include predict.h.
(assign_parm_adjust_stack_rtl): Zap stack_parm when stack protect
wants to copy the parameter into the stack frame.
(stack_protect_prologue, stack_protect_epilogue): New.
(expand_function_end): Call stack_protect_epilogue. Do
sjlj_emit_function_exit_after after naked_return_label.
* function.h (struct function): Add stack_protect_guard.
* params.def (PARAM_SSP_BUFFER_SIZE): New.
* toplev.c (process_options): Disable flag_stack_protect and/or
warn_stack_protect based on FRAME_GROWS_DOWNWARD.
* tree.h (stack_protect_prologue): Declare.
* target-def.h (TARGET_STACK_PROTECT_GUARD): New.
(TARGET_STACK_PROTECT_FAIL): New.
(TARGET_INITIALIZER): Add them.
* target.h (struct gcc_target): Add stack_protect_guard and
stack_protect_fail.
* targhooks.c: Include ggc.h, gty header.
(stack_chk_guard_decl, default_stack_protect_guard): New.
(stack_chk_fail_decl, default_external_stack_protect_fail): New.
(default_hidden_stack_protect_fail): New.
* targhooks.h (default_stack_protect_guard): Declare.
(default_external_stack_protect_fail): Declare.
(default_hidden_stack_protect_fail): Declare.
* config/i386/i386.c (TARGET_STACK_PROTECT_FAIL): New.
* config/i386/i386.md (UNSPEC_SP_SET, UNSPEC_SP_TEST): New.
(trap): Use ud2.
(conditional_trap, conditional_trap_1): Remove.
(stack_protect_set, stack_protect_set_si, stack_protect_set_di): New.
(stack_protect_test, stack_protect_test_si, stack_protect_test_di): New.
* doc/md.texi (stack_protect_set, stack_protect_test): New.
* doc/tm.texi (TARGET_STACK_PROTECT_GUARD): New.
(TARGET_STACK_PROTECT_FAIL): New.
* libgcc-std.ver (GCC_4.1.0): New.
* libgcc.h (__stack_chk_guard): Declare.
(__stack_chk_fail, __stack_chk_fail_local): Declare.
* libgcc2.c (L_stack_chk, L_stack_chk_local): New.
* mklibgcc.in (lib2funcs): Add them.
From-SVN: r101348
2005-06-27 09:41:16 +02:00
|
|
|
DEFPARAM (PARAM_SSP_BUFFER_SIZE,
|
|
|
|
"ssp-buffer-size",
|
|
|
|
"The lower bound for a buffer to be considered for stack smashing protection",
|
|
|
|
8, 1, 0)
|
|
|
|
|
2005-11-04 21:09:25 +01:00
|
|
|
/* When we thread through a block we have to make copies of the
|
|
|
|
statements within the block. Clearly for large blocks the code
|
|
|
|
duplication is bad.
|
|
|
|
|
|
|
|
PARAM_MAX_JUMP_THREAD_DUPLICATION_STMTS specifies the maximum number
|
|
|
|
of statements and PHI nodes allowed in a block which is going to
|
|
|
|
be duplicated for thread jumping purposes.
|
|
|
|
|
|
|
|
Some simple analysis showed that more than 99% of the jump
|
|
|
|
threading opportunities are for blocks with less than 15
|
|
|
|
statements. So we can get the benefits of jump threading
|
|
|
|
without excessive code bloat for pathological cases with the
|
|
|
|
throttle set at 15 statements. */
|
|
|
|
DEFPARAM (PARAM_MAX_JUMP_THREAD_DUPLICATION_STMTS,
|
|
|
|
"max-jump-thread-duplication-stmts",
|
|
|
|
"Maximum number of statements allowed in a block that needs to be duplicated when threading jumps",
|
|
|
|
15, 0, 0)
|
2006-02-14 15:49:13 +01:00
|
|
|
|
|
|
|
/* This is the maximum number of fields a variable may have before the pointer analysis machinery
|
|
|
|
will stop trying to treat it in a field-sensitive manner.
|
|
|
|
There are programs out there with thousands of fields per structure, and handling them
|
|
|
|
field-sensitively is not worth the cost. */
|
|
|
|
DEFPARAM (PARAM_MAX_FIELDS_FOR_FIELD_SENSITIVE,
|
|
|
|
"max-fields-for-field-sensitive",
|
|
|
|
"Maximum number of fields in a structure before pointer analysis treats the structure as a single variable",
|
|
|
|
100, 0, 0)
|
2001-02-14 17:24:45 +01:00
|
|
|
/*
|
|
|
|
Local variables:
|
|
|
|
mode:c
|
|
|
|
End: */
|