From: Soumya AR <soum...@nvidia.com> Hi,
This RFC is a continuation of previous patches sent here: https://gcc.gnu.org/pipermail/gcc-patches/2025-May/682702.html As suggested in the earlier thread, I've now added a python script to generete the printing and parsing routines for the JSON tuning parameters from the schema. With this, if changes are made to tune_params, the user can simply regenerate the routines by running the script (albeit after updating the schema). Additionally, instead of removing 'const' from all predfined tune_params structures, I've reworked the patch to only clear 'const' from the individual tuning fields and instead update the structures using temporaries. Best, Soumya Soumya AR (6): aarch64 + arm: Remove const keyword from tune_params members and nested members aarch64: Enable dumping of AArch64 CPU tuning parameters to JSON json: Add get_map() method to JSON object class aarch64: Enable parsing of user-provided AArch64 CPU tuning parameters aarch64: Regression tests for parsing of user-provided AArch64 CPU tuning parameters aarch64: Script to auto generate JSON tuning routines gcc/config.gcc | 2 +- .../aarch64-generate-json-tuning-routines.py | 370 ++++++++++++ gcc/config/aarch64/aarch64-json-schema.h | 261 ++++++++ .../aarch64-json-tunings-parser-generated.inc | 337 +++++++++++ .../aarch64/aarch64-json-tunings-parser.cc | 559 ++++++++++++++++++ .../aarch64/aarch64-json-tunings-parser.h | 29 + ...aarch64-json-tunings-printer-generated.inc | 421 +++++++++++++ .../aarch64/aarch64-json-tunings-printer.cc | 148 +++++ .../aarch64/aarch64-json-tunings-printer.h | 28 + gcc/config/aarch64/aarch64-protos.h | 164 ++--- gcc/config/aarch64/aarch64.cc | 20 + gcc/config/aarch64/aarch64.opt | 8 + gcc/config/aarch64/t-aarch64 | 21 + gcc/config/arm/aarch-common-protos.h | 128 ++-- gcc/json.h | 40 +- gcc/selftest-run-tests.cc | 1 + gcc/selftest.h | 1 + .../aarch64-json-tunings.exp | 35 ++ .../aarch64/aarch64-json-tunings/boolean-1.c | 6 + .../aarch64-json-tunings/boolean-1.json | 9 + .../aarch64/aarch64-json-tunings/boolean-2.c | 7 + .../aarch64-json-tunings/boolean-2.json | 9 + .../aarch64-json-tunings/empty-brackets.c | 6 + .../aarch64-json-tunings/empty-brackets.json | 1 + .../aarch64/aarch64-json-tunings/empty.c | 6 + .../aarch64/aarch64-json-tunings/empty.json | 0 .../aarch64/aarch64-json-tunings/enum-1.c | 8 + .../aarch64/aarch64-json-tunings/enum-1.json | 7 + .../aarch64/aarch64-json-tunings/enum-2.c | 7 + .../aarch64/aarch64-json-tunings/enum-2.json | 7 + .../aarch64/aarch64-json-tunings/integer-1.c | 7 + .../aarch64-json-tunings/integer-1.json | 6 + .../aarch64/aarch64-json-tunings/integer-2.c | 7 + .../aarch64-json-tunings/integer-2.json | 6 + .../aarch64/aarch64-json-tunings/integer-3.c | 7 + .../aarch64-json-tunings/integer-3.json | 5 + .../aarch64/aarch64-json-tunings/integer-4.c | 6 + .../aarch64-json-tunings/integer-4.json | 5 + .../aarch64/aarch64-json-tunings/string-1.c | 8 + .../aarch64-json-tunings/string-1.json | 7 + .../aarch64/aarch64-json-tunings/string-2.c | 7 + .../aarch64-json-tunings/string-2.json | 5 + .../aarch64/aarch64-json-tunings/test-all.c | 58 ++ .../aarch64-json-tunings/test-all.json | 39 ++ .../aarch64-json-tunings/unidentified-key.c | 6 + .../unidentified-key.json | 5 + 46 files changed, 2674 insertions(+), 156 deletions(-) create mode 100644 gcc/config/aarch64/aarch64-generate-json-tuning-routines.py create mode 100644 gcc/config/aarch64/aarch64-json-schema.h create mode 100644 gcc/config/aarch64/aarch64-json-tunings-parser-generated.inc create mode 100644 gcc/config/aarch64/aarch64-json-tunings-parser.cc create mode 100644 gcc/config/aarch64/aarch64-json-tunings-parser.h create mode 100644 gcc/config/aarch64/aarch64-json-tunings-printer-generated.inc create mode 100644 gcc/config/aarch64/aarch64-json-tunings-printer.cc create mode 100644 gcc/config/aarch64/aarch64-json-tunings-printer.h create mode 100644 gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/aarch64-json-tunings.exp create mode 100644 gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/boolean-1.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/boolean-1.json create mode 100644 gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/boolean-2.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/boolean-2.json create mode 100644 gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/empty-brackets.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/empty-brackets.json create mode 100644 gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/empty.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/empty.json create mode 100644 gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/enum-1.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/enum-1.json create mode 100644 gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/enum-2.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/enum-2.json create mode 100644 gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/integer-1.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/integer-1.json create mode 100644 gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/integer-2.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/integer-2.json create mode 100644 gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/integer-3.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/integer-3.json create mode 100644 gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/integer-4.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/integer-4.json create mode 100644 gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/string-1.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/string-1.json create mode 100644 gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/string-2.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/string-2.json create mode 100644 gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/test-all.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/test-all.json create mode 100644 gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/unidentified-key.c create mode 100644 gcc/testsuite/gcc.target/aarch64/aarch64-json-tunings/unidentified-key.json -- 2.44.0