This is the mail archive of the gcc-patches@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]

RFA: patch to fix a bad code generation for PR64110 -- new constraints addition


  The problem of unexpected code generation is discussed on

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

The following patch introduces 2 new constraints '^' and '$' which are analogous to '?' and '!' but disfavor given alternative when *the operand with the new constraint* needs a reload ('?' and '!' disfavor the alternative if *any* operand needs a reload). I hope the new constraints will be useful for other insns and targets.

  The patch was successfully bootstrapped and tested on x86-64.

  I just need an approval for changes in sse.md, stmt.c, and genoutput.c

Thanks.

2015-01-14  Vladimir Makarov  <vmakarov@redhat.com>

        PR rtl-optimization/64110
        * stmt.c (parse_output_constraint): Process '^' and '$'.
        (parse_input_constraint): Ditto.
        * lra-constraints.c (process_alt_operands): Process the new
        constraints.
        * ira-costs.c (record_reg_classes): Process the new constraint
        '^'.
        * genoutput.c (indep_constraints): Add '^' and '$'.
        * config/i386/sse.md (*vec_dup<mode>): Use '$' instead of '!'.
        * doc/md.texi: Add description of the new constraints.

2015-01-14  Vladimir Makarov  <vmakarov@redhat.com>

        PR rtl-optimization/64110
        * gcc.target/i386/pr64110.c: Add scan-assembler.

Attachment: pr64110-3.patch
Description: Text document


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