https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84100

--- Comment #13 from Martin Liška <marxin at gcc dot gnu.org> ---
Author: marxin
Date: Wed Jul  4 07:51:08 2018
New Revision: 262375

URL: https://gcc.gnu.org/viewcvs?rev=262375&root=gcc&view=rev
Log:


2018-07-04  Denys Vlasenko  <dvlas...@redhat.com>
            Martin Liska  <mli...@suse.cz>

        PR middle-end/66240
        PR target/45996
        PR c/84100
        * common.opt: Rename align options with 'str_' prefix.
        * common/config/i386/i386-common.c (set_malign_value): New
        function.
        (ix86_handle_option): Use it to set -falign-* options/
        * config/aarch64/aarch64-protos.h (struct tune_params): Change
        type from int to string.
        * config/aarch64/aarch64.c: Update default values from int
        to string.
        * config/alpha/alpha.c (alpha_override_options_after_change):
        Likewise.
        * config/arm/arm.c (arm_override_options_after_change_1): Likewise.
        * config/i386/dragonfly.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Print
        max skip conditionally.
        * config/i386/freebsd.h (SUBALIGN_LOG): New.
        (ASM_OUTPUT_MAX_SKIP_ALIGN): Print
        max skip conditionally.
        * config/i386/gas.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Print
        max skip conditionally.
        * config/i386/gnu-user.h (SUBALIGN_LOG): New.
        (ASM_OUTPUT_MAX_SKIP_ALIGN): Print
        max skip conditionally.
        * config/i386/i386.c (struct ptt): Change type from int to
        string.
        (ix86_default_align): Set default values.
        * config/i386/i386.h (ASM_OUTPUT_MAX_SKIP_PAD): Print
        max skip conditionally.
        * config/i386/iamcu.h (SUBALIGN_LOG): New.
        (ASM_OUTPUT_MAX_SKIP_ALIGN):
        * config/i386/lynx.h (ASM_OUTPUT_MAX_SKIP_ALIGN):
        * config/i386/netbsd-elf.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Print
        max skip conditionally.
        * config/i386/openbsdelf.h (SUBALIGN_LOG): New.
        (ASM_OUTPUT_MAX_SKIP_ALIGN) Print max skip conditionally.:
        * config/i386/x86-64.h (SUBALIGN_LOG): New.
        (ASM_OUTPUT_MAX_SKIP_ALIGN): Print
        max skip conditionally.
        (ASM_OUTPUT_MAX_SKIP_PAD): Likewise.
        * config/ia64/ia64.c (ia64_option_override): Set default values
        for alignment options.
        * config/m68k/m68k.c: Handle new str_align_* options.
        * config/mips/mips.c (mips_set_compression_mode): Change
        type of constants.
        (mips_option_override): Set default values for options.
        * config/powerpcspe/powerpcspe.c (rs6000_option_override_internal):
        Likewise.
        * config/rs6000/rs6000.c (rs6000_option_override_internal):
        Likewise.
        * config/rx/rx.c (rx_option_override): Likewise.
        * config/rx/rx.h (JUMP_ALIGN): Use align_jumps_log.
        (LABEL_ALIGN): Use align_labels_log.
        (LOOP_ALIGN): Use align_loops_align.
        * config/s390/s390.c (s390_asm_output_function_label): Use new
        macros.
        * config/sh/sh.c (sh_override_options_after_change):
        Change type of constants.
        * config/spu/spu.c (spu_sched_init): Likewise.
        * config/sparc/sparc.c (sparc_option_override): Set default
        values for options.
        * config/visium/visium.c (visium_option_override): Likewise.
        * config/visium/visium.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Do not
        emit p2align format with last argument if it's not needed.
        * doc/invoke.texi: Document extended format of -falign-*.
        * final.c: Use align_labels alignment.
        * flags.h (struct target_flag_state): Change type to use
        align_flags.
        (struct align_flags_tuple): New.
        (struct align_flags): Likewise.
        (align_loops_log): Redefine macro to use new types.
        (align_loops_max_skip): Redefine macro to use new types.
        (align_jumps_log): Redefine macro to use new types.
        (align_jumps_max_skip): Redefine macro to use new types.
        (align_labels_log): Redefine macro to use new types.
        (align_labels_max_skip): Redefine macro to use new types.
        (align_functions_log): Redefine macro to use new types.
        (align_loops): Redefine macro to use new types.
        (align_jumps): Redefine macro to use new types.
        (align_labels): Redefine macro to use new types.
        (align_functions): Redefine macro to use new types.
        (align_functions_max_skip): Redefine macro to use new types.
        (align_loops_value): New macro.
        (align_jumps_value): New macro.
        (align_labels_value): New macro.
        (align_functions_value): New macro.
        * function.c (invoke_set_current_function_hook): Propagate
        alignment values from flags to global variables default in
        topleev.h.
        * ipa-icf.c (sem_function::equals_wpa): Use
        cl_optimization_option_eq instead of memcmp.
        * lto-streamer.h (cl_optimization_stream_out): Support streaming
        of string types.
        (cl_optimization_stream_in): Likewise.
        * optc-save-gen.awk: Support strings in cl_optimization.
        * opth-gen.awk: Likewise.
        * opts.c (finish_options): Remove error checking of invalid
        value ranges.
        (MAX_CODE_ALIGN): Remove.
        (MAX_CODE_ALIGN_VALUE): Likewise.
        (parse_and_check_align_values): New function.
        (check_alignment_argument): Likewise.
        (common_handle_option): Use check_alignment_argument.
        * opts.h (parse_and_check_align_values): Declare.
        * toplev.c (init_alignments): Remove.
        (read_log_maxskip): New.
        (parse_N_M): Likewise.
        (parse_alignment_opts): Likewise.
        (backend_init_target): Remove usage of init_alignments.
        * toplev.h (parse_alignment_opts): Declare.
        * tree-streamer-in.c (streamer_read_tree_bitfields): Add new
        argument.
        * tree-streamer-out.c (streamer_write_tree_bitfields): Likewise.
        * tree.c (cl_option_hasher::equal): New.
        * varasm.c: Use new global macros.
2018-07-04  Martin Liska  <mli...@suse.cz>

        PR middle-end/66240
        PR target/45996
        PR c/84100
        * lto.c (compare_tree_sccs_1): Use cl_optimization_option_eq
        instead of memcmp.
2018-07-04  Martin Liska  <mli...@suse.cz>

        PR middle-end/66240
        PR target/45996
        PR c/84100
        * gcc.dg/pr84100.c (foo):
        * gcc.target/i386/falign-functions-2.c: New test.
        * gcc.target/i386/falign-functions.c: New test.

Added:
    trunk/gcc/testsuite/gcc.target/i386/falign-functions-2.c
    trunk/gcc/testsuite/gcc.target/i386/falign-functions.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/common.opt
    trunk/gcc/common/config/i386/i386-common.c
    trunk/gcc/config/aarch64/aarch64-protos.h
    trunk/gcc/config/aarch64/aarch64.c
    trunk/gcc/config/alpha/alpha.c
    trunk/gcc/config/arm/arm.c
    trunk/gcc/config/i386/i386.c
    trunk/gcc/config/ia64/ia64.c
    trunk/gcc/config/m68k/m68k.c
    trunk/gcc/config/mips/mips.c
    trunk/gcc/config/powerpcspe/powerpcspe.c
    trunk/gcc/config/rs6000/rs6000.c
    trunk/gcc/config/rx/rx.c
    trunk/gcc/config/rx/rx.h
    trunk/gcc/config/s390/s390.c
    trunk/gcc/config/sh/sh.c
    trunk/gcc/config/sparc/sparc.c
    trunk/gcc/config/spu/spu.c
    trunk/gcc/config/spu/spu.h
    trunk/gcc/config/visium/visium.c
    trunk/gcc/config/visium/visium.h
    trunk/gcc/doc/invoke.texi
    trunk/gcc/final.c
    trunk/gcc/flags.h
    trunk/gcc/function.c
    trunk/gcc/ipa-icf.c
    trunk/gcc/lto-streamer.h
    trunk/gcc/lto/ChangeLog
    trunk/gcc/lto/lto.c
    trunk/gcc/optc-save-gen.awk
    trunk/gcc/opth-gen.awk
    trunk/gcc/opts.c
    trunk/gcc/opts.h
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/gcc.dg/pr84100.c
    trunk/gcc/toplev.c
    trunk/gcc/toplev.h
    trunk/gcc/tree-streamer-in.c
    trunk/gcc/tree-streamer-out.c
    trunk/gcc/tree.c
    trunk/gcc/varasm.c

Reply via email to