The email thread is follow up of a demo that I made here: https://gcc.gnu.org/ml/gcc-patches/2019-10/msg02220.html
The patchset converts current param infrastructure to the option machinery. The parts 3 and 4 are quite mechanical. I would appreciate a feedback about what parameters should be per function (Optimization keyword) and global. The patch survives bootstrap and regtests on x86_64-linux-gnu and ppc64-linux-gnu and I made cross build of all target compilers. Thoughts? Martin Martin Liska (7): Param to options conversion. Include new generated gcc/params.opt file. Apply mechanical replacement (generated patch). Remove gcc/params.* files. Remove last leftover usage of params* files. Remove set_default_param_value from documentation. Fix test-suite fallout. gcc/Makefile.in | 20 +- gcc/asan.c | 19 +- gcc/auto-profile.c | 3 +- gcc/bb-reorder.c | 5 +- gcc/builtins.c | 3 +- gcc/c/gimple-parser.c | 3 +- gcc/cfgcleanup.c | 5 +- gcc/cfgexpand.c | 9 +- gcc/cfgloopanal.c | 9 +- gcc/cgraph.c | 3 +- gcc/combine.c | 5 +- gcc/common.opt | 10 - gcc/common/common-target.def | 6 +- gcc/common/config/aarch64/aarch64-common.c | 16 +- gcc/common/config/gcn/gcn-common.c | 1 - gcc/common/config/ia64/ia64-common.c | 9 +- .../config/powerpcspe/powerpcspe-common.c | 3 +- gcc/common/config/rs6000/rs6000-common.c | 3 +- gcc/common/config/sh/sh-common.c | 3 +- gcc/config/aarch64/aarch64.c | 80 +- gcc/config/alpha/alpha.c | 17 +- gcc/config/arm/arm.c | 44 +- gcc/config/avr/avr.c | 1 - gcc/config/csky/csky.c | 1 - gcc/config/i386/i386-builtins.c | 1 - gcc/config/i386/i386-expand.c | 1 - gcc/config/i386/i386-features.c | 1 - gcc/config/i386/i386-options.c | 35 +- gcc/config/i386/i386.c | 27 +- gcc/config/ia64/ia64.c | 3 +- gcc/config/rs6000/rs6000-logue.c | 5 +- gcc/config/rs6000/rs6000.c | 56 +- gcc/config/s390/s390.c | 80 +- gcc/config/sparc/sparc.c | 84 +- gcc/config/visium/visium.c | 7 +- gcc/coverage.c | 9 +- gcc/cp/name-lookup.c | 3 +- gcc/cp/typeck.c | 5 +- gcc/cprop.c | 1 - gcc/cse.c | 7 +- gcc/cselib.c | 3 +- gcc/doc/options.texi | 3 + gcc/doc/tm.texi | 4 +- gcc/dse.c | 3 +- gcc/emit-rtl.c | 19 +- gcc/explow.c | 3 +- gcc/final.c | 5 +- gcc/flag-types.h | 11 + gcc/fold-const.c | 13 +- gcc/gcc.c | 9 - gcc/gcse.c | 17 +- gcc/ggc-common.c | 5 +- gcc/ggc-page.c | 5 +- gcc/gimple-loop-interchange.cc | 7 +- gcc/gimple-loop-jam.c | 9 +- gcc/gimple-loop-versioning.cc | 5 +- gcc/gimple-ssa-split-paths.c | 3 +- gcc/gimple-ssa-sprintf.c | 1 - gcc/gimple-ssa-store-merging.c | 9 +- gcc/gimple-ssa-strength-reduction.c | 3 +- gcc/gimple-ssa-warn-alloca.c | 1 - gcc/gimple-ssa-warn-restrict.c | 1 - gcc/graphite-isl-ast-to-gimple.c | 5 +- gcc/graphite-optimize-isl.c | 5 +- gcc/graphite-scop-detection.c | 5 +- gcc/graphite-sese-to-poly.c | 1 - gcc/graphite.c | 1 - gcc/haifa-sched.c | 39 +- gcc/hsa-gen.c | 3 +- gcc/ifcvt.c | 5 +- gcc/ipa-cp.c | 31 +- gcc/ipa-fnsummary.c | 21 +- gcc/ipa-inline-analysis.c | 3 +- gcc/ipa-inline.c | 78 +- gcc/ipa-polymorphic-call.c | 3 +- gcc/ipa-profile.c | 3 +- gcc/ipa-prop.c | 7 +- gcc/ipa-split.c | 11 +- gcc/ipa-sra.c | 10 +- gcc/ira-build.c | 5 +- gcc/ira-conflicts.c | 5 +- gcc/loop-doloop.c | 3 +- gcc/loop-invariant.c | 5 +- gcc/loop-unroll.c | 27 +- gcc/lra-assigns.c | 3 +- gcc/lra-constraints.c | 3 +- gcc/lto/lto-common.c | 1 - gcc/lto/lto-partition.c | 11 +- gcc/lto/lto.c | 11 +- gcc/modulo-sched.c | 7 +- gcc/opt-functions.awk | 3 +- gcc/opt-suggestions.c | 59 +- gcc/opt-suggestions.h | 5 - gcc/opts-common.c | 20 + gcc/opts.c | 158 +- gcc/opts.h | 11 +- gcc/params-enum.h | 39 - gcc/params-list.h | 26 - gcc/params-options.h | 27 - gcc/params.c | 302 ---- gcc/params.def | 1495 ----------------- gcc/params.h | 254 --- gcc/params.opt | 967 +++++++++++ gcc/postreload-gcse.c | 7 +- gcc/predict.c | 21 +- gcc/reload.c | 3 +- gcc/reorg.c | 5 +- gcc/resource.c | 5 +- gcc/sanopt.c | 5 +- gcc/sched-deps.c | 11 +- gcc/sched-ebb.c | 5 +- gcc/sched-rgn.c | 19 +- gcc/sel-sched-ir.c | 5 +- gcc/sel-sched-ir.h | 2 +- gcc/sel-sched.c | 5 +- gcc/shrink-wrap.c | 3 +- gcc/stmt.c | 1 - gcc/targhooks.c | 22 +- gcc/testsuite/gcc.dg/completion-3.c | 16 +- gcc/testsuite/gcc.dg/pr83620.c | 2 +- gcc/testsuite/gcc.dg/spellcheck-params-2.c | 2 +- gcc/testsuite/gcc.dg/spellcheck-params.c | 2 +- gcc/testsuite/gcc.misc-tests/help.exp | 4 +- gcc/toplev.c | 13 +- gcc/tracer.c | 13 +- gcc/trans-mem.c | 3 +- gcc/tree-chrec.c | 5 +- gcc/tree-data-ref.c | 5 +- gcc/tree-if-conv.c | 3 +- gcc/tree-inline.c | 3 +- gcc/tree-loop-distribution.c | 3 +- gcc/tree-parloops.c | 20 +- gcc/tree-predcom.c | 3 +- gcc/tree-profile.c | 1 - gcc/tree-scalar-evolution.c | 5 +- gcc/tree-sra.c | 20 +- gcc/tree-ssa-ccp.c | 3 +- gcc/tree-ssa-dom.c | 1 - gcc/tree-ssa-dse.c | 9 +- gcc/tree-ssa-ifcombine.c | 5 +- gcc/tree-ssa-loop-ch.c | 3 +- gcc/tree-ssa-loop-im.c | 3 +- gcc/tree-ssa-loop-ivcanon.c | 19 +- gcc/tree-ssa-loop-ivopts.c | 11 +- gcc/tree-ssa-loop-manip.c | 3 +- gcc/tree-ssa-loop-niter.c | 3 +- gcc/tree-ssa-loop-prefetch.c | 47 +- gcc/tree-ssa-loop-unswitch.c | 7 +- gcc/tree-ssa-math-opts.c | 7 +- gcc/tree-ssa-phiopt.c | 9 +- gcc/tree-ssa-pre.c | 5 +- gcc/tree-ssa-reassoc.c | 3 +- gcc/tree-ssa-sccvn.c | 7 +- gcc/tree-ssa-scopedtables.c | 3 +- gcc/tree-ssa-sink.c | 3 +- gcc/tree-ssa-strlen.c | 9 +- gcc/tree-ssa-structalias.c | 9 +- gcc/tree-ssa-tail-merge.c | 5 +- gcc/tree-ssa-threadbackward.c | 17 +- gcc/tree-ssa-threadedge.c | 5 +- gcc/tree-ssa-uninit.c | 3 +- gcc/tree-switch-conversion.c | 7 +- gcc/tree-switch-conversion.h | 4 +- gcc/tree-vect-data-refs.c | 12 +- gcc/tree-vect-loop.c | 7 +- gcc/tree-vect-slp.c | 3 +- gcc/tree-vectorizer.h | 2 +- gcc/tree-vrp.c | 5 +- gcc/tree.c | 23 +- gcc/value-prof.c | 1 - gcc/var-tracking.c | 7 +- 171 files changed, 1689 insertions(+), 3243 deletions(-) delete mode 100644 gcc/params-enum.h delete mode 100644 gcc/params-list.h delete mode 100644 gcc/params-options.h delete mode 100644 gcc/params.c delete mode 100644 gcc/params.def delete mode 100644 gcc/params.h create mode 100644 gcc/params.opt -- 2.23.0