This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug middle-end/79794] unnecessary copy from target to target results in poor code for aarch64


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

--- Comment #2 from Jim Wilson <wilson at gcc dot gnu.org> ---
Author: wilson
Date: Sat May 13 01:32:40 2017
New Revision: 248004

URL: https://gcc.gnu.org/viewcvs?rev=248004&root=gcc&view=rev
Log:
Patch for RTL expand bug affecting aarch64 vector code.

        gcc/
        PR middle-end/79794
        * expmed.c (extract_bit_field_1): Add alt_rtl argument.  Before
        maybe_expand_insn call, set ops[0].target.  If still set after call,
        set alt_rtl.  Add extra arg to recursive calls.
        (extract_bit_field): Add alt_rtl argument.  Pass to
        extract_bit_field.
        * expmed.h (extract_bit_field): Fix prototype.
        * expr.c (emit_group_load_1, copy_blkmode_from_reg)
        (copy_blkmode_to_reg, read_complex_part, store_field): Pass extra NULL
        to extract_bit_field_calls.
        (expand_expr_real_1): Pass alt_rtl to expand_expr_real instead of 0.
        Pass alt_rtl to extract_bit_field calls.
        * calls.c (store_unaligned_arguments_into_psuedos)
        load_register_parameters): Pass extra NULL to extract_bit_field calls.
        * optabs.c (maybe_legitimize_operand): Clear op->target when call
        gen_reg_rtx.
        * optabs.h (struct expand_operand): Add target bitfield.


Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/calls.c
    trunk/gcc/expmed.c
    trunk/gcc/expmed.h
    trunk/gcc/expr.c
    trunk/gcc/optabs.c
    trunk/gcc/optabs.h

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]