Hello. This is new version of Denis's patch series: https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00792.html
There are quite some changes from last iteration that I would like to mention: - -malign-* flags are not removed, it was not welcomed and can be eventually done independently - in the meantime -falign-* became Optimization flags: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84100#c4 Due to that we need to stream the flags for LTO, we need to preperly compare it (strcmp) in cl_optimization_eq function. - I changed separator from ',' to ':'. It's needed because #pragma GCC optimize uses comma as option separator - I simplified default values for processor_target_table from "16:16:8" -> "16". Because secondary alignment will never happen. - Per function support is working, one can see an example in added test-case: gcc/testsuite/gcc.target/i386/falign-functions-2.c The patchset is so far tested just on x86_64-linux-gnu with default values. I'll do more testing, but I want to show the to get a feedback. Thanks, Martin marxin (3): Add vec::reverse. Temporary remove "at least 8 byte alignment" code from x86 Extend -falign-FOO=N to N[:M[:N2[:M2]]] gcc/common.opt | 16 +-- gcc/common/config/i386/i386-common.c | 16 ++- gcc/config/aarch64/aarch64-protos.h | 6 +- gcc/config/aarch64/aarch64.c | 60 ++++----- gcc/config/alpha/alpha.c | 12 +- gcc/config/arm/arm.c | 7 +- gcc/config/i386/dragonfly.h | 10 +- gcc/config/i386/freebsd.h | 16 +-- gcc/config/i386/gas.h | 10 +- gcc/config/i386/gnu-user.h | 16 +-- gcc/config/i386/i386.c | 110 ++++++++--------- gcc/config/i386/i386.h | 2 +- gcc/config/i386/iamcu.h | 16 +-- gcc/config/i386/lynx.h | 6 +- gcc/config/i386/netbsd-elf.h | 6 +- gcc/config/i386/openbsdelf.h | 16 +-- gcc/config/i386/x86-64.h | 16 +-- gcc/config/mips/mips.c | 18 +-- gcc/config/rs6000/rs6000.c | 28 ++--- gcc/config/rx/rx.c | 18 ++- gcc/config/rx/rx.h | 6 +- gcc/config/sh/sh.c | 26 ++-- gcc/config/spu/spu.c | 3 +- gcc/config/visium/visium.c | 19 ++- gcc/doc/invoke.texi | 66 +++++++--- gcc/final.c | 6 + gcc/flags.h | 66 ++++++---- gcc/function.c | 3 + gcc/ipa-icf.c | 2 +- gcc/lto-streamer.h | 6 +- gcc/lto/lto.c | 4 +- gcc/optc-save-gen.awk | 95 ++++++++++++++- gcc/opth-gen.awk | 3 + gcc/opts.c | 108 ++++++++++++++--- gcc/opts.h | 7 ++ gcc/testsuite/gcc.dg/pr84100.c | 2 +- gcc/testsuite/gcc.target/i386/falign-functions-2.c | 30 +++++ gcc/testsuite/gcc.target/i386/falign-functions.c | 8 ++ gcc/toplev.c | 135 +++++++++++++++++---- gcc/toplev.h | 7 ++ gcc/tree-streamer-in.c | 2 +- gcc/tree-streamer-out.c | 2 +- gcc/tree.c | 20 +-- gcc/varasm.c | 9 +- gcc/vec.c | 38 ++++++ gcc/vec.h | 14 +++ 46 files changed, 736 insertions(+), 356 deletions(-) create mode 100644 gcc/testsuite/gcc.target/i386/falign-functions-2.c create mode 100644 gcc/testsuite/gcc.target/i386/falign-functions.c -- 2.16.3