2001-02-14 17:24:45 +01:00
|
|
|
/* params.def - Run-time parameters.
|
loop.texi: Document the Omega linear constraints solver.
* doc/loop.texi: Document the Omega linear constraints solver.
* doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
omega-max-geqs, omega-max-eqs, omega-max-wild-cards,
omega-hash-table-size, omega-max-keys, and
omega-eliminate-redundant-constraints.
* tree-pass.h (pass_check_data_deps): Declared.
* omega.c: New.
* omega.h: New.
* timevar.def (TV_CHECK_DATA_DEPS): Declared.
* tree-ssa-loop.c (check_data_deps, gate_check_data_deps,
pass_check_data_deps): New.
* tree-data-ref.c (init_data_ref): Remove declaration.
(dump_data_dependence_relation): Dump DDR_INNER_LOOP.
(analyze_array): Renamed init_array_ref, move up initializations.
(init_data_ref): Renamed init_pointer_ref. Moved before its call.
Removed arguments that are set to NULL.
(analyze_indirect_ref): Correct indentation, correct call to
init_pointer_ref.
(object_analysis): Call init_array_ref instead of analyze_array.
(initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
(access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
of DR_ACCESS_FNS_ADDR.
(init_omega_eq_with_af, omega_extract_distance_vectors,
omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
ddr_consistent_p): New.
(compute_affine_dependence): Check consistency of ddrs when
flag_check_data_deps is passed.
(analyze_all_data_dependences): Uncomment.
(tree_check_data_deps): New.
* tree-data-ref.h: Include omega.h.
(DR_ACCESS_FNS_ADDR): Removed.
(data_dependence_relation): Add inner_loop.
(DDR_INNER_LOOP): New.
* common.opt (fcheck-data-deps): New.
* tree-flow.h (tree_check_data_deps): Declare.
* Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
(OBJS-common): Depend on omega.o.
(omega.o): Define.
* passes.c (pass_check_data_deps): Scheduled.
* params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS,
PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
PARAM_VECT_MAX_VERSION_CHECKS,
PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
From-SVN: r122749
2007-03-09 13:39:49 +01:00
|
|
|
Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
|
|
|
|
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
|
2007-07-26 10:37:01 +02:00
|
|
|
Software Foundation; either version 3, or (at your option) any later
|
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
|
|
|
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
|
2007-07-26 10:37:01 +02:00
|
|
|
along with GCC; see the file COPYING3. If not see
|
|
|
|
<http://www.gnu.org/licenses/>. */
|
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
|
|
|
|
2008-01-29 16:56:20 +01:00
|
|
|
/* The threshold ratio between current and hottest structure counts.
|
2007-10-24 12:36:30 +02:00
|
|
|
We say that if the ratio of the current structure count,
|
2008-01-29 16:56:20 +01:00
|
|
|
calculated by profiling, to the hottest structure count
|
2007-10-24 12:36:30 +02:00
|
|
|
in the program is less than this parameter, then structure
|
|
|
|
reorganization is not applied. The default is 10%. */
|
|
|
|
DEFPARAM (PARAM_STRUCT_REORG_COLD_STRUCT_RATIO,
|
|
|
|
"struct-reorg-cold-struct-ratio",
|
2008-01-29 16:56:20 +01:00
|
|
|
"The threshold ratio between current and hottest structure counts",
|
2007-10-24 12:36:30 +02:00
|
|
|
10, 0, 100)
|
|
|
|
|
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
|
|
|
|
2007-01-14 13:42:40 +01:00
|
|
|
/* Limit loop autovectorization to loops with large enough iteration count. */
|
|
|
|
DEFPARAM (PARAM_MIN_VECT_LOOP_BOUND,
|
|
|
|
"min-vect-loop-bound",
|
|
|
|
"If -ftree-vectorize is used, the minimal loop bound of a loop to be considered for vectorization",
|
2007-09-12 07:05:04 +02:00
|
|
|
1, 1, 0)
|
2007-01-14 13:42:40 +01: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)",
|
2007-02-09 23:51:44 +01:00
|
|
|
30, 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",
|
2007-09-23 17:42:06 +02:00
|
|
|
12, 0, 0)
|
2006-11-28 11:53:16 +01:00
|
|
|
DEFPARAM(PARAM_LARGE_STACK_FRAME,
|
|
|
|
"large-stack-frame",
|
|
|
|
"The size of stack frame to be considered large",
|
|
|
|
256, 0, 0)
|
|
|
|
DEFPARAM(PARAM_STACK_FRAME_GROWTH,
|
|
|
|
"large-stack-frame-growth",
|
|
|
|
"Maximal stack frame growth due to inlining (in percent)",
|
|
|
|
1000, 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)
|
2006-09-15 13:17:18 +02:00
|
|
|
/* A cutoff to avoid costly computations of the number of iterations in
|
|
|
|
the doloop transformation. */
|
|
|
|
DEFPARAM(PARAM_MAX_ITERATIONS_COMPUTATION_COST,
|
|
|
|
"max-iterations-computation-cost",
|
|
|
|
"Bound on the cost of an expression to compute the number of iterations",
|
|
|
|
10, 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
|
|
|
/* 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
|
|
|
|
2007-10-09 09:07:15 +02:00
|
|
|
DEFPARAM (PARAM_ALIGN_THRESHOLD,
|
|
|
|
"align-threshold",
|
|
|
|
"Select fraction of the maximal frequency of executions of basic block in function given basic block get alignment",
|
|
|
|
100, 0, 0)
|
|
|
|
|
|
|
|
DEFPARAM (PARAM_ALIGN_LOOP_ITERATIONS,
|
|
|
|
"align-loop-iterations",
|
|
|
|
"Loops iterating at least selected number of iterations will get loop alignement.",
|
|
|
|
4, 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,
|
2006-04-27 16:25:49 +02:00
|
|
|
"max-cse-insns",
|
2005-11-05 01:55:23 +01:00
|
|
|
"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)
|
|
|
|
|
loop.texi: Document the Omega linear constraints solver.
* doc/loop.texi: Document the Omega linear constraints solver.
* doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
omega-max-geqs, omega-max-eqs, omega-max-wild-cards,
omega-hash-table-size, omega-max-keys, and
omega-eliminate-redundant-constraints.
* tree-pass.h (pass_check_data_deps): Declared.
* omega.c: New.
* omega.h: New.
* timevar.def (TV_CHECK_DATA_DEPS): Declared.
* tree-ssa-loop.c (check_data_deps, gate_check_data_deps,
pass_check_data_deps): New.
* tree-data-ref.c (init_data_ref): Remove declaration.
(dump_data_dependence_relation): Dump DDR_INNER_LOOP.
(analyze_array): Renamed init_array_ref, move up initializations.
(init_data_ref): Renamed init_pointer_ref. Moved before its call.
Removed arguments that are set to NULL.
(analyze_indirect_ref): Correct indentation, correct call to
init_pointer_ref.
(object_analysis): Call init_array_ref instead of analyze_array.
(initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
(access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
of DR_ACCESS_FNS_ADDR.
(init_omega_eq_with_af, omega_extract_distance_vectors,
omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
ddr_consistent_p): New.
(compute_affine_dependence): Check consistency of ddrs when
flag_check_data_deps is passed.
(analyze_all_data_dependences): Uncomment.
(tree_check_data_deps): New.
* tree-data-ref.h: Include omega.h.
(DR_ACCESS_FNS_ADDR): Removed.
(data_dependence_relation): Add inner_loop.
(DDR_INNER_LOOP): New.
* common.opt (fcheck-data-deps): New.
* tree-flow.h (tree_check_data_deps): Declare.
* Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
(OBJS-common): Depend on omega.o.
(omega.o): Define.
* passes.c (pass_check_data_deps): Scheduled.
* params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS,
PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
PARAM_VECT_MAX_VERSION_CHECKS,
PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
From-SVN: r122749
2007-03-09 13:39:49 +01:00
|
|
|
DEFPARAM(PARAM_OMEGA_MAX_VARS,
|
|
|
|
"omega-max-vars",
|
|
|
|
"Bound on the number of variables in Omega constraint systems",
|
|
|
|
128, 0, 0)
|
|
|
|
|
|
|
|
DEFPARAM(PARAM_OMEGA_MAX_GEQS,
|
|
|
|
"omega-max-geqs",
|
|
|
|
"Bound on the number of inequalities in Omega constraint systems",
|
|
|
|
256, 0, 0)
|
|
|
|
|
|
|
|
DEFPARAM(PARAM_OMEGA_MAX_EQS,
|
|
|
|
"omega-max-eqs",
|
|
|
|
"Bound on the number of equalities in Omega constraint systems",
|
|
|
|
128, 0, 0)
|
|
|
|
|
|
|
|
DEFPARAM(PARAM_OMEGA_MAX_WILD_CARDS,
|
|
|
|
"omega-max-wild-cards",
|
|
|
|
"Bound on the number of wild cards in Omega constraint systems",
|
|
|
|
18, 0, 0)
|
|
|
|
|
|
|
|
DEFPARAM(PARAM_OMEGA_HASH_TABLE_SIZE,
|
|
|
|
"omega-hash-table-size",
|
|
|
|
"Bound on the size of the hash table in Omega constraint systems",
|
|
|
|
550, 0, 0)
|
|
|
|
|
|
|
|
DEFPARAM(PARAM_OMEGA_MAX_KEYS,
|
|
|
|
"omega-max-keys",
|
|
|
|
"Bound on the number of keys in Omega constraint systems",
|
|
|
|
500, 0, 0)
|
|
|
|
|
|
|
|
DEFPARAM(PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS,
|
|
|
|
"omega-eliminate-redundant-constraints",
|
|
|
|
"When set to 1, use expensive methods to eliminate all redundant constraints",
|
|
|
|
0, 0, 1)
|
|
|
|
|
tree-vectorizer.c (new_loop_vec_info): Initialize new field.
gcc/ChangeLog
* tree-vectorizer.c (new_loop_vec_info): Initialize new
field.
(destroy_loop_vec_info): Add call to VEC_free.
* tree-vectorizer.h (may_alias_ddrs): Define.
(LOOP_VINFO_MAY_ALIAS_DDRS): Define.
* tree-vect-analyze.c (vect_analyze_data_ref_dependence):
Change reporting to dump.
(vect_is_duplicate_ddr): New.
(vect_mark_for_runtime_alias_test): New.
(vect_analyze_data_ref_dependences) Add call to
vect_mark_for_runtime_alias_test.
(vect_enhance_data_refs_alignment): Define local variable
vect_versioning_for_alias_required, don't perform
peeling for alignment if versioning for alias is
required.
(vect_enhance_data_refs_alignment): Use
PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS instead of
PARAM_VECT_MAX_VERSION_CHECKS.
* tree-vect-transform.c
(vect_create_cond_for_alias_checks): New.
(vect_transform_loop): Add call to
vect_create_cond_for_alias_checks.
(vect_vfa_segment_size): New.
* params.def (PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS):
Rename.
(PARAM_VECT_MAX_VERSION_FOR_ALIAS_CHECKS): Define.
* gcc/doc/invoke.texi
(vect-max-version-for-alignment-checks): Document.
(vect-max-version-for-alias-checks): Document.
(vect-max-version-checks): Remove.
gcc/testsuite/ChangeLog
* gcc.dg/vect/vect-vfa-01.c: New.
* gcc.dg/vect/vect-vfa-02.c: New.
* gcc.dg/vect/vect-vfa-03.c: New.
* gcc.dg/vect/vect-vfa-04.c: New.
* gcc.dg/vect/vect-102a.c, gcc.dg/vect/vect-51.c,
gcc.dg/vect/pr29145.c, gcc.dg/vect/vect-43.c,
gcc.dg/vect/vect-61.c, gcc.dg/vect/vect-53.c,
gcc.dg/vect/vect-45.c, gcc.dg/vect/vect-101.c,
gcc.dg/vect/vect-37.c, gcc.dg/vect/vect-79.c,
gcc.dg/vect/vect-102.c, gcc.dg/vect/vect-dv-2.c,
gcc.dg/vect/vect-57.c, gcc.dg/vect/vect-49.c,
gfortran.dg/vect/pr19049.f90: Rename to start with
prefix no-vfa-.
* gcc.dg/vect/vect.exp: Disable versioning for alias
when test starts with no-vfa-.
* gfortran.dg/vect/vect.exp: Likewise.
From-SVN: r127559
2007-08-16 16:20:39 +02:00
|
|
|
DEFPARAM(PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS,
|
|
|
|
"vect-max-version-for-alignment-checks",
|
|
|
|
"Bound on number of runtime checks inserted by the vectorizer's loop versioning for alignment check",
|
2005-09-06 12:59:58 +02:00
|
|
|
6, 0, 0)
|
|
|
|
|
tree-vectorizer.c (new_loop_vec_info): Initialize new field.
gcc/ChangeLog
* tree-vectorizer.c (new_loop_vec_info): Initialize new
field.
(destroy_loop_vec_info): Add call to VEC_free.
* tree-vectorizer.h (may_alias_ddrs): Define.
(LOOP_VINFO_MAY_ALIAS_DDRS): Define.
* tree-vect-analyze.c (vect_analyze_data_ref_dependence):
Change reporting to dump.
(vect_is_duplicate_ddr): New.
(vect_mark_for_runtime_alias_test): New.
(vect_analyze_data_ref_dependences) Add call to
vect_mark_for_runtime_alias_test.
(vect_enhance_data_refs_alignment): Define local variable
vect_versioning_for_alias_required, don't perform
peeling for alignment if versioning for alias is
required.
(vect_enhance_data_refs_alignment): Use
PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS instead of
PARAM_VECT_MAX_VERSION_CHECKS.
* tree-vect-transform.c
(vect_create_cond_for_alias_checks): New.
(vect_transform_loop): Add call to
vect_create_cond_for_alias_checks.
(vect_vfa_segment_size): New.
* params.def (PARAM_VECT_MAX_VERSION_FOR_ALIGNMENT_CHECKS):
Rename.
(PARAM_VECT_MAX_VERSION_FOR_ALIAS_CHECKS): Define.
* gcc/doc/invoke.texi
(vect-max-version-for-alignment-checks): Document.
(vect-max-version-for-alias-checks): Document.
(vect-max-version-checks): Remove.
gcc/testsuite/ChangeLog
* gcc.dg/vect/vect-vfa-01.c: New.
* gcc.dg/vect/vect-vfa-02.c: New.
* gcc.dg/vect/vect-vfa-03.c: New.
* gcc.dg/vect/vect-vfa-04.c: New.
* gcc.dg/vect/vect-102a.c, gcc.dg/vect/vect-51.c,
gcc.dg/vect/pr29145.c, gcc.dg/vect/vect-43.c,
gcc.dg/vect/vect-61.c, gcc.dg/vect/vect-53.c,
gcc.dg/vect/vect-45.c, gcc.dg/vect/vect-101.c,
gcc.dg/vect/vect-37.c, gcc.dg/vect/vect-79.c,
gcc.dg/vect/vect-102.c, gcc.dg/vect/vect-dv-2.c,
gcc.dg/vect/vect-57.c, gcc.dg/vect/vect-49.c,
gfortran.dg/vect/pr19049.f90: Rename to start with
prefix no-vfa-.
* gcc.dg/vect/vect.exp: Disable versioning for alias
when test starts with no-vfa-.
* gfortran.dg/vect/vect.exp: Likewise.
From-SVN: r127559
2007-08-16 16:20:39 +02:00
|
|
|
DEFPARAM(PARAM_VECT_MAX_VERSION_FOR_ALIAS_CHECKS,
|
|
|
|
"vect-max-version-for-alias-checks",
|
|
|
|
"Bound on number of runtime checks inserted by the vectorizer's loop versioning for alias check",
|
|
|
|
10, 0, 0)
|
|
|
|
|
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",
|
re PR tree-optimization/30735 (50% slow down due to mem-ssa merge)
PR 30735
PR 31090
* doc/invoke.texi: Document --params max-aliased-vops and
avg-aliased-vops.
* tree-ssa-operands.h (get_mpt_for, dump_memory_partitions,
debug_memory_partitions): Move to tree-flow.h
* params.h (AVG_ALIASED_VOPS): Define.
* tree-ssa-alias.c (struct mp_info_def): Remove. Update all
users.
(mp_info_t): Likewise.
(get_mem_sym_stats_for): New.
(set_memory_partition): Move from tree-flow-inline.h.
(mark_non_addressable): Only clear the set of symbols for the
partition if it exists.
(dump_memory_partitions): Move from tree-ssa-operands.c
(debug_memory_partitions): Likewise.
(need_to_partition_p): New.
(dump_mem_ref_stats): New.
(debug_mem_ref_stats): New.
(dump_mem_sym_stats): New.
(debug_mem_sym_stats): New.
(update_mem_sym_stats_from_stmt): New.
(compare_mp_info_entries): New.
(mp_info_cmp): Call it.
(sort_mp_info): Change argument to a list of mem_sym_stats_t
objects.
(get_mpt_for): Move from tree-ssa-operands.c.
(find_partition_for): New.
(create_partition_for): Remove.
(estimate_vop_reduction): New.
(update_reference_counts): New.
(build_mp_info): New.
(compute_memory_partitions): Refactor.
Document new heuristic.
Call build_mp_info, update_reference_counts,
find_partition_for and estimate_vop_reduction.
(compute_may_aliases): Populate virtual operands before
calling debugging dumps.
(delete_mem_sym_stats): New.
(delete_mem_ref_stats): New.
(init_mem_ref_stats): New.
(init_alias_info): Call it.
(maybe_create_global_var): Remove alias_info argument.
Get number of call sites and number of pure/const call sites
from gimple_mem_ref_stats().
(dump_alias_info): Call dump_memory_partitions first.
(dump_points_to_info_for): Show how many times a pointer has
been dereferenced.
* opts.c (decode_options): For -O2 set --param
max-aliased-vops to 500.
For -O3 set --param max-aliased-vops to 1000 and --param
avg-aliased-vops to 3.
* fortran/options.c (gfc_init_options): Remove assignment to
MAX_ALIASED_VOPS.
* tree-flow-inline.h (gimple_mem_ref_stats): New.
* tree-dfa.c (dump_variable): Dump memory reference
statistics.
Dump NO_ALIAS* settings.
(referenced_var_lookup): Tidy.
(mem_sym_stats): New.
* tree-ssa-copy.c (may_propagate_copy): Return true if DEST
and ORIG are different SSA names for a memory partition.
* tree-ssa.c (delete_tree_ssa): Call delete_mem_ref_stats.
* tree-flow.h (struct mem_sym_stats_d): Define.
(mem_sym_stats_t): Define.
(struct mem_ref_stats_d): Define.
(struct gimple_df): Add field mem_ref_stats.
(enum noalias_state): Define.
(struct var_ann_d): Add bitfield noalias_state.
(mem_sym_stats, delete_mem_ref_stats, dump_mem_ref_stats,
debug_mem_ref_stats, debug_memory_partitions,
debug_mem_sym_stats): Declare.
* tree-ssa-structalias.c (update_alias_info): Update call
sites, pure/const call sites and asm sites in structure
returned by gimple_mem_ref_stats.
Remove local variable IS_POTENTIAL_DEREF.
Increase NUM_DEREFS if the memory expression is a potential
dereference.
Call update_mem_sym_stats_from_stmt.
If the memory references memory, call
update_mem_sym_stats_from_stmt for all the direct memory
symbol references found.
(intra_create_variable_infos): Set noalias_state field for
pointer arguments according to the value of
flag_argument_noalias.
* tree-ssa-structalias.h (struct alias_info): Remove fields
num_calls_found and num_pure_const_calls_found.
(update_mem_sym_stats_from_stmt): Declare.
* params.def (PARAM_MAX_ALIASED_VOPS): Change description.
Set default value to 100.
(PARAM_AVG_ALIASED_VOPS): Define.
From-SVN: r123719
2007-04-11 18:14:06 +02:00
|
|
|
"The maximum number of virtual operators that a function is allowed to have before triggering memory partitioning heuristics",
|
|
|
|
100, 0, 0)
|
|
|
|
|
|
|
|
DEFPARAM(PARAM_AVG_ALIASED_VOPS,
|
|
|
|
"avg-aliased-vops",
|
|
|
|
"The average number of virtual operators that memory statements are allowed to have before triggering memory partitioning heuristics",
|
|
|
|
1, 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",
|
2006-06-06 11:44:17 +02:00
|
|
|
0, 0, 0)
|
2006-03-16 06:20:39 +01:00
|
|
|
|
target.h (struct spec_info_def): New opaque declaration.
2006-03-16 Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
* target.h (struct spec_info_def): New opaque declaration.
(struct gcc_target.sched): New fields: adjust_cost_2, h_i_d_extended,
speculate_insn, needs_block_p, gen_check,
first_cycle_multipass_dfa_lookahead_guard_spec, set_sched_flags.
* target-def.h (TARGET_SCHED_ADJUST_COST_2,
TARGET_SCHED_H_I_D_EXTENDED, TARGET_SCHED_SPECULATE_INSN,
TARGET_SCHED_NEEDS_BLOCK_P, TARGET_SCHED_GEN_CHECK,
TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD_SPEC,
TARGET_SCHED_SET_SCHED_FLAGS): New macros to initialize fields in
gcc_target.sched.
(TARGET_SCHED): Use new macros.
* rtl.h (copy_DEPS_LIST_list): New prototype.
* sched-int.h (struct sched_info): Change signature of new_ready field,
adjust all initializations. New fields: add_remove_insn,
begin_schedule_ready, add_block, advance_target_bb, fix_recovery_cfg,
region_head_or_leaf_p.
(struct spec_info_def): New structure declaration.
(spec_info_t): New typedef.
(struct haifa_insn_data): New fields: todo_spec, done_spec, check_spec,
recovery_block, orig_pat.
(glat_start, glat_end): New variables declaraions.
(TODO_SPEC, DONE_SPEC, CHECK_SPEC, RECOVERY_BLOCK, ORIG_PAT):
New access macros.
(enum SCHED_FLAGS): New constants: SCHED_RGN, SCHED_EBB,
DETACH_LIFE_INFO, USE_GLAT.
(enum SPEC_SCHED_FLAGS): New enumeration.
(NOTE_NOTE_BB_P): New macro.
(extend_dependency_caches, xrecalloc, unlink_bb_notes, add_block,
attach_life_info, debug_spec_status, check_reg_live): New functions.
(get_block_head_tail): Change signature to get_ebb_head_tail, adjust
all uses in ddg.c, modulo-sched.c, haifa-sched.c, sched-rgn.c,
sched-ebb.c
(get_dep_weak, ds_merge): Prototype functions from sched-deps.c .
* ddg.c (get_block_head_tail): Adjust all uses.
* modulo-sched.c (get_block_head_tail): Adjust all uses.
(sms_sched_info): Initialize new fields.
(contributes_to_priority): Removed.
* haifa-sched.c (params.h): New include.
(get_block_head_tail): Adjust all uses.
(ISSUE_POINTS): New macro.
(glat_start, glat_end): New global variables.
(spec_info_var, spec_info, added_recovery_block_p, nr_begin_data,
nr_be_in_data, nr_begin_control, nr_be_in_control, bb_header,
old_last_basic_block, before_recovery, current_sched_info_var,
rgn_n_insns, luid): New static variables.
(insn_cost1): New function. Move logic from insn_cost to here.
(find_insn_reg_weight1): New function. Move logic from
find_insn_reg_weight to here.
(reemit_notes, move_insn, max_issue): Change signature.
(move_insn1): Removed.
(extend_h_i_d, extend_ready, extend_global, extend_all, init_h_i_d,
extend_bb): New static functions to support extension of scheduler's
data structures.
(generate_recovery_code, process_insn_depend_be_in_spec,
begin_speculative_block, add_to_speculative_block,
init_before_recovery, create_recovery_block, create_check_block_twin,
fix_recovery_deps): New static functions to support
generation of recovery code.
(fix_jump_move, find_fallthru_edge, dump_new_block_header,
restore_bb_notes, move_block_after_check, move_succs): New static
functions to support ebb scheduling.
(init_glat, init_glat1, attach_life_info1, free_glat): New static
functions to support handling of register live information.
(associate_line_notes_with_blocks, change_pattern, speculate_insn,
sched_remove_insn, clear_priorities, calc_priorities, bb_note,
add_jump_dependencies): New static functions.
(check_cfg, has_edge_p, check_sched_flags): New static functions for
consistancy checking.
(debug_spec_status): New function to call from debugger.
(priority): Added code to handle speculation checks.
(rank_for_schedule): Added code to distinguish speculative instructions.
(schedule_insn): Added code to handle speculation checks.
(unlink_other_notes, rm_line_notes, restore_line_notes, rm_other_notes):
Fixed to handle ebbs.
(move_insn): Added code to handle ebb scheduling.
(max_issue): Added code to use ISSUE_POINTS of instructions.
(choose_ready): Added code to choose between speculative and
non-speculative instructions.
(schedule_block): Added code to handle ebb scheduling and scheduling of
speculative instructions.
(sched_init): Initialize new variables.
(sched_finish): Free new variables. Print statistics.
(try_ready): Added code to handle speculative instructions.
* lists.c (copy_DEPS_LIST_list): New function.
* sched-deps.c (extend_dependency_caches): New function. Move logic
from create_dependency_caches to here.
(get_dep_weak, ds_merge): Make global.
* genattr.c (main): Code to output prototype for
dfa_clear_single_insn_cache.
* genautomata.c (DFA_CLEAR_SINGLE_INSN_CACHE_FUNC_NAME): New macros.
(output_dfa_clean_insn_cache_func): Code to output
dfa_clear_single_insn_cache function.
* sched-ebb.c (target_n_insns): Remove. Adjust all users to use
n_insns.
(can_schedule_ready_p, fix_basic_block_boundaries, add_missing_bbs):
Removed.
(n_insns, dont_calc_deps, ebb_head, ebb_tail, last_bb):
New static variables.
(begin_schedule_ready, add_remove_insn, add_block1, advance_target_bb,
fix_recovery_cfg, ebb_head_or_leaf_p): Implement hooks from
struct sched_info.
(ebb_sched_info): Initialize new fields.
(get_block_head_tail): Adjust all uses.
(compute_jump_reg_dependencies): Fixed to use glat_start.
(schedule_ebb): Code to remove unreachable last block.
(schedule_ebbs): Added code to update register live information.
* sched-rgn.c (region_sched_info): Initialize new fields.
(get_block_head_tail): Adjust all uses.
(last_was_jump): Removed. Adjust users.
(begin_schedule_ready, add_remove_insn, insn_points, extend_regions,
add_block1, fix_recovery_cfg, advance_target_bb, region_head_or_leaf_p):
Implement new hooks.
(check_dead_notes1): New static function.
(struct region): New fields: dont_calc_deps, has_real_ebb.
(RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB): New access macros.
(BB_TO_BLOCK): Fixed to handle EBBs.
(EBB_FIRST_BB, EBB_LAST_BB): New macros.
(ebb_head): New static variable.
(debug_regions, contributes_to_priority): Fixed to handle EBBs.
(find_single_block_regions, find_rgns, find_more_rgns): Initialize
new fields.
(compute_dom_prob_ps): New assertion.
(check_live_1, update_live_1): Fixed to work with glat_start instead of
global_live_at_start.
(init_ready_list): New assertions.
(can_schedule_ready_p): Split update code to begin_schedule_ready.
(new_ready): Add support for BEGIN_CONTROL speculation.
(schedule_insns): Fixed code that updates register live information
to handle EBBs.
(schedule_region): Fixed to handle EBBs.
(init_regions): Use extend_regions and check_dead_notes1.
* params.def (PARAM_MAX_SCHED_INSN_CONFLICT_DELAY,
PARAM_SCHED_SPEC_PROB_CUTOFF): New parameters.
* doc/tm.texi (TARGET_SCHED_ADJUST_COST_2, TARGET_SCHED_H_I_D_EXTENDED,
TARGET_SCHED_SPECULATE_INSN, TARGET_SCHED_NEEDS_BLOCK_P,
TARGET_SCHED_GEN_CHECK,
TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD_SPEC,
TARGET_SCHED_SET_SCHED_FLAGS): Document.
* doc/invoke.texi (max-sched-insn-conflict-delay,
sched-spec-prob-cutoff): Document.
From-SVN: r112128
2006-03-16 06:27:03 +01:00
|
|
|
DEFPARAM(PARAM_MAX_SCHED_INSN_CONFLICT_DELAY,
|
|
|
|
"max-sched-insn-conflict-delay",
|
|
|
|
"The maximum conflict delay for an insn to be considered for speculative motion",
|
|
|
|
3, 1, 10)
|
|
|
|
|
|
|
|
DEFPARAM(PARAM_SCHED_SPEC_PROB_CUTOFF,
|
|
|
|
"sched-spec-prob-cutoff",
|
|
|
|
"The minimal probability of speculation success (in percents), so that speculative insn will be scheduled.",
|
|
|
|
40, 0, 100)
|
|
|
|
|
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)
|
2006-04-14 02:07:48 +02:00
|
|
|
|
|
|
|
DEFPARAM(PARAM_MAX_SCHED_READY_INSNS,
|
|
|
|
"max-sched-ready-insns",
|
|
|
|
"The maximum number of instructions ready to be issued to be considered by the scheduler during the first scheduling pass",
|
|
|
|
100, 0, 0)
|
|
|
|
|
params.c (set_param_value): Initialize the "set" field.
* params.c (set_param_value): Initialize the "set" field.
* params.h (struct param_info): Add "set" field.
(PARAM_SET_P): New macro.
(PREFETCH_LATENCY, SIMULTANEOUS_PREFETCHES, L1_CACHE_SIZE,
L1_CACHE_LINE_SIZE): New macros.
* toplev.c (DEFPARAM): Initialize the "set" field.
* tree-ssa-loop-prefetch.c (PREFETCH_LATENCY,
SIMULTANEOUS_PREFETCHES): Removed.
(PREFETCH_BLOCK): Use L1_CACHE_LINE_SIZE.
(tree_ssa_prefetch_arrays): Dump the values of the parameters.
* config/sparc/sparc.c: Include params.h.
(sparc_override_options): Set SIMULTANEOUS_PREFETCHES and
L1_CACHE_LINE_SIZE parameters.
* config/sparc/sparc.h (PREFETCH_BLOCK, SIMULTANEOUS_PREFETCHES):
Removed.
* config/i386/i386.h (PREFETCH_BLOCK, SIMULTANEOUS_PREFETCHES):
Removed.
* config/i386/i386.c: Include params.h.
(k8_cost): Change default value for SIMULTANEOUS_PREFETCHES.
(override_options): Set SIMULTANEOUS_PREFETCHES and
L1_CACHE_LINE_SIZE parameters.
* config/sh/sh.h (SIMULTANEOUS_PREFETCHES): Removed.
(OPTIMIZATION_OPTIONS): Set SIMULTANEOUS_PREFETCHES and
L1_CACHE_LINE_SIZE parameters.
* config/ia64/ia64.c (ia64_optimization_options): Set
SIMULTANEOUS_PREFETCHES and L1_CACHE_LINE_SIZE parameters.
* config/ia64/ia64.h (SIMULTANEOUS_PREFETCHES, PREFETCH_BLOCK):
Removed.
* params.def (PARAM_PREFETCH_LATENCY, PARAM_SIMULTANEOUS_PREFETCHES,
PARAM_L1_CACHE_SIZE, PARAM_L1_CACHE_LINE_SIZE): New params.
* doc/invoke.texi: Document new params.
From-SVN: r118728
2006-11-12 20:17:02 +01:00
|
|
|
/* Prefetching and cache-optimizations related parameters. Default values are
|
|
|
|
usually set by machine description. */
|
|
|
|
|
|
|
|
/* The number of insns executed before prefetch is completed. */
|
|
|
|
|
|
|
|
DEFPARAM (PARAM_PREFETCH_LATENCY,
|
|
|
|
"prefetch-latency",
|
|
|
|
"The number of insns executed before prefetch is completed",
|
|
|
|
200, 0, 0)
|
|
|
|
|
|
|
|
/* The number of prefetches that can run at the same time. */
|
|
|
|
|
|
|
|
DEFPARAM (PARAM_SIMULTANEOUS_PREFETCHES,
|
|
|
|
"simultaneous-prefetches",
|
|
|
|
"The number of prefetches that can run at the same time",
|
|
|
|
3, 0, 0)
|
|
|
|
|
invoke.texi (l1-cache-size): Update documentation.
* doc/invoke.texi (l1-cache-size): Update documentation.
(l2-cache-size): Document.
* params.h (L2_CACHE_SIZE): New macro.
* tree-ssa-loop-prefetch.c (L1_CACHE_SIZE_BYTES): Reflect
that L1_CACHE_SIZE is in kB now.
(L2_CACHE_SIZE_BYTES): New macro.
(tree_ssa_prefetch_arrays): Show size in kB.
* config/i386/i386.h (struct processor_costs): Add l1_cache_size
and l2_cache_size fields.
* config/i386/driver-i386.c (describe_cache): Detect cache size
in kB.
* config/i386/i386.c (size_cost, i386_cost, i486_cost,pentium_cost,
pentiumpro_cost, geode_cost, k6_cost, athlon_cost, k8_cost,
amdfam10_cost, pentium4_cost, nocona_cost, core2_cost,
generic64_cost, generic32_cost): Add l1_cache_size and l2_cache_size.
(override_options): Set l1-cache-size and l2-cache-size to default
values if not specified otherwise.
* params.def (PARAM_L1_CACHE_SIZE): Change to set in kB.
(PARAM_L2_CACHE_SIZE): New.
From-SVN: r127117
2007-08-01 12:57:03 +02:00
|
|
|
/* The size of L1 cache in kB. */
|
params.c (set_param_value): Initialize the "set" field.
* params.c (set_param_value): Initialize the "set" field.
* params.h (struct param_info): Add "set" field.
(PARAM_SET_P): New macro.
(PREFETCH_LATENCY, SIMULTANEOUS_PREFETCHES, L1_CACHE_SIZE,
L1_CACHE_LINE_SIZE): New macros.
* toplev.c (DEFPARAM): Initialize the "set" field.
* tree-ssa-loop-prefetch.c (PREFETCH_LATENCY,
SIMULTANEOUS_PREFETCHES): Removed.
(PREFETCH_BLOCK): Use L1_CACHE_LINE_SIZE.
(tree_ssa_prefetch_arrays): Dump the values of the parameters.
* config/sparc/sparc.c: Include params.h.
(sparc_override_options): Set SIMULTANEOUS_PREFETCHES and
L1_CACHE_LINE_SIZE parameters.
* config/sparc/sparc.h (PREFETCH_BLOCK, SIMULTANEOUS_PREFETCHES):
Removed.
* config/i386/i386.h (PREFETCH_BLOCK, SIMULTANEOUS_PREFETCHES):
Removed.
* config/i386/i386.c: Include params.h.
(k8_cost): Change default value for SIMULTANEOUS_PREFETCHES.
(override_options): Set SIMULTANEOUS_PREFETCHES and
L1_CACHE_LINE_SIZE parameters.
* config/sh/sh.h (SIMULTANEOUS_PREFETCHES): Removed.
(OPTIMIZATION_OPTIONS): Set SIMULTANEOUS_PREFETCHES and
L1_CACHE_LINE_SIZE parameters.
* config/ia64/ia64.c (ia64_optimization_options): Set
SIMULTANEOUS_PREFETCHES and L1_CACHE_LINE_SIZE parameters.
* config/ia64/ia64.h (SIMULTANEOUS_PREFETCHES, PREFETCH_BLOCK):
Removed.
* params.def (PARAM_PREFETCH_LATENCY, PARAM_SIMULTANEOUS_PREFETCHES,
PARAM_L1_CACHE_SIZE, PARAM_L1_CACHE_LINE_SIZE): New params.
* doc/invoke.texi: Document new params.
From-SVN: r118728
2006-11-12 20:17:02 +01:00
|
|
|
|
|
|
|
DEFPARAM (PARAM_L1_CACHE_SIZE,
|
|
|
|
"l1-cache-size",
|
|
|
|
"The size of L1 cache",
|
invoke.texi (l1-cache-size): Update documentation.
* doc/invoke.texi (l1-cache-size): Update documentation.
(l2-cache-size): Document.
* params.h (L2_CACHE_SIZE): New macro.
* tree-ssa-loop-prefetch.c (L1_CACHE_SIZE_BYTES): Reflect
that L1_CACHE_SIZE is in kB now.
(L2_CACHE_SIZE_BYTES): New macro.
(tree_ssa_prefetch_arrays): Show size in kB.
* config/i386/i386.h (struct processor_costs): Add l1_cache_size
and l2_cache_size fields.
* config/i386/driver-i386.c (describe_cache): Detect cache size
in kB.
* config/i386/i386.c (size_cost, i386_cost, i486_cost,pentium_cost,
pentiumpro_cost, geode_cost, k6_cost, athlon_cost, k8_cost,
amdfam10_cost, pentium4_cost, nocona_cost, core2_cost,
generic64_cost, generic32_cost): Add l1_cache_size and l2_cache_size.
(override_options): Set l1-cache-size and l2-cache-size to default
values if not specified otherwise.
* params.def (PARAM_L1_CACHE_SIZE): Change to set in kB.
(PARAM_L2_CACHE_SIZE): New.
From-SVN: r127117
2007-08-01 12:57:03 +02:00
|
|
|
64, 0, 0)
|
params.c (set_param_value): Initialize the "set" field.
* params.c (set_param_value): Initialize the "set" field.
* params.h (struct param_info): Add "set" field.
(PARAM_SET_P): New macro.
(PREFETCH_LATENCY, SIMULTANEOUS_PREFETCHES, L1_CACHE_SIZE,
L1_CACHE_LINE_SIZE): New macros.
* toplev.c (DEFPARAM): Initialize the "set" field.
* tree-ssa-loop-prefetch.c (PREFETCH_LATENCY,
SIMULTANEOUS_PREFETCHES): Removed.
(PREFETCH_BLOCK): Use L1_CACHE_LINE_SIZE.
(tree_ssa_prefetch_arrays): Dump the values of the parameters.
* config/sparc/sparc.c: Include params.h.
(sparc_override_options): Set SIMULTANEOUS_PREFETCHES and
L1_CACHE_LINE_SIZE parameters.
* config/sparc/sparc.h (PREFETCH_BLOCK, SIMULTANEOUS_PREFETCHES):
Removed.
* config/i386/i386.h (PREFETCH_BLOCK, SIMULTANEOUS_PREFETCHES):
Removed.
* config/i386/i386.c: Include params.h.
(k8_cost): Change default value for SIMULTANEOUS_PREFETCHES.
(override_options): Set SIMULTANEOUS_PREFETCHES and
L1_CACHE_LINE_SIZE parameters.
* config/sh/sh.h (SIMULTANEOUS_PREFETCHES): Removed.
(OPTIMIZATION_OPTIONS): Set SIMULTANEOUS_PREFETCHES and
L1_CACHE_LINE_SIZE parameters.
* config/ia64/ia64.c (ia64_optimization_options): Set
SIMULTANEOUS_PREFETCHES and L1_CACHE_LINE_SIZE parameters.
* config/ia64/ia64.h (SIMULTANEOUS_PREFETCHES, PREFETCH_BLOCK):
Removed.
* params.def (PARAM_PREFETCH_LATENCY, PARAM_SIMULTANEOUS_PREFETCHES,
PARAM_L1_CACHE_SIZE, PARAM_L1_CACHE_LINE_SIZE): New params.
* doc/invoke.texi: Document new params.
From-SVN: r118728
2006-11-12 20:17:02 +01:00
|
|
|
|
|
|
|
/* The size of L1 cache line in bytes. */
|
|
|
|
|
|
|
|
DEFPARAM (PARAM_L1_CACHE_LINE_SIZE,
|
|
|
|
"l1-cache-line-size",
|
|
|
|
"The size of L1 cache line",
|
|
|
|
32, 0, 0)
|
|
|
|
|
invoke.texi (l1-cache-size): Update documentation.
* doc/invoke.texi (l1-cache-size): Update documentation.
(l2-cache-size): Document.
* params.h (L2_CACHE_SIZE): New macro.
* tree-ssa-loop-prefetch.c (L1_CACHE_SIZE_BYTES): Reflect
that L1_CACHE_SIZE is in kB now.
(L2_CACHE_SIZE_BYTES): New macro.
(tree_ssa_prefetch_arrays): Show size in kB.
* config/i386/i386.h (struct processor_costs): Add l1_cache_size
and l2_cache_size fields.
* config/i386/driver-i386.c (describe_cache): Detect cache size
in kB.
* config/i386/i386.c (size_cost, i386_cost, i486_cost,pentium_cost,
pentiumpro_cost, geode_cost, k6_cost, athlon_cost, k8_cost,
amdfam10_cost, pentium4_cost, nocona_cost, core2_cost,
generic64_cost, generic32_cost): Add l1_cache_size and l2_cache_size.
(override_options): Set l1-cache-size and l2-cache-size to default
values if not specified otherwise.
* params.def (PARAM_L1_CACHE_SIZE): Change to set in kB.
(PARAM_L2_CACHE_SIZE): New.
From-SVN: r127117
2007-08-01 12:57:03 +02:00
|
|
|
/* The size of L2 cache in kB. */
|
|
|
|
|
|
|
|
DEFPARAM (PARAM_L2_CACHE_SIZE,
|
|
|
|
"l2-cache-size",
|
|
|
|
"The size of L2 cache",
|
|
|
|
512, 0, 0)
|
|
|
|
|
2007-07-11 15:50:13 +02:00
|
|
|
/* Whether we should use canonical types rather than deep "structural"
|
|
|
|
type checking. Setting this value to 1 (the default) improves
|
|
|
|
compilation performance in the C++ and Objective-C++ front end;
|
|
|
|
this value should only be set to zero to work around bugs in the
|
|
|
|
canonical type system by disabling it. */
|
|
|
|
|
|
|
|
DEFPARAM (PARAM_USE_CANONICAL_TYPES,
|
|
|
|
"use-canonical-types",
|
|
|
|
"Whether to use canonical types",
|
|
|
|
1, 0, 1)
|
2007-11-05 16:42:30 +01:00
|
|
|
|
|
|
|
DEFPARAM (PARAM_MAX_PARTIAL_ANTIC_LENGTH,
|
|
|
|
"max-partial-antic-length",
|
|
|
|
"Maximum length of partial antic set when performing tree pre optimization",
|
|
|
|
100, 0, 0)
|
|
|
|
|
2007-12-13 15:22:23 +01:00
|
|
|
/* The following is used as a stop-gap limit for cases where really huge
|
|
|
|
SCCs blow up memory and compile-time use too much. If we hit this limit,
|
|
|
|
SCCVN and such FRE and PRE will be not done at all for the current
|
|
|
|
function. */
|
|
|
|
|
|
|
|
DEFPARAM (PARAM_SCCVN_MAX_SCC_SIZE,
|
|
|
|
"sccvn-max-scc-size",
|
|
|
|
"Maximum size of a SCC before SCCVN stops processing a function",
|
|
|
|
10000, 10, 0)
|
|
|
|
|
|
|
|
|
2008-01-17 21:02:56 +01:00
|
|
|
DEFPARAM (PARAM_DF_DOUBLE_QUEUE_THRESHOLD_FACTOR,
|
|
|
|
"df-double-queue-threshold-factor",
|
|
|
|
"Multiplier used for determining the double-queueing threshold",
|
|
|
|
2, 0, 0)
|
|
|
|
|
2001-02-14 17:24:45 +01:00
|
|
|
/*
|
|
|
|
Local variables:
|
|
|
|
mode:c
|
2007-04-23 18:20:38 +02:00
|
|
|
End:
|
|
|
|
*/
|