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 target/71676] [avr] casesi won't handle switch values larger than 16 bits


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

--- Comment #2 from Georg-Johann Lay <gjl at gcc dot gnu.org> ---
Author: gjl
Date: Tue Oct 25 08:35:17 2016
New Revision: 241504

URL: https://gcc.gnu.org/viewcvs?rev=241504&root=gcc&view=rev
Log:
gcc/
        New avt target pass to work around performance loss by PR fix.
        PR target/71676
        PR target/71678
        * config/avr/avr.md (casesi_<mode>_sequence) [qi,hi]: New insn.
        (*cmp<mode>) [qi,qq,uqq,hi,hq,uhq,ha,uha]: Rename to cmp<mode>3.
        * config/avr/predicates.md (extend_operator): New.
        * config/avr/avr-passes.def (avr_pass_casesi): Register new pass.
        * config/avr/avr-protos.h (avr_casei_sequence_check_operands)
        (make_avr_pass_casesi): New prototypes.
        * config/avr/avr.c (print-rtl.h): Include it.
        (pass_data avr_pass_data_casesi): Data for new pass.
        (avr_pass_casesi): New class implementing rtl_opt_pass .avr-casesi.
        (make_avr_pass_casesi, avr_parallel_insn_from_insns)
        (avr_is_casesi_sequence, avr_casei_sequence_check_operands)
        (avr_optimize_casesi): New functions.
gcc/testsuite/
        PR target/71676
        PR target/71678
        * gcc.target/avr/pr71676-2.c: New test.


Added:
    trunk/gcc/testsuite/gcc.target/avr/pr71676-2.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/avr/avr-passes.def
    trunk/gcc/config/avr/avr-protos.h
    trunk/gcc/config/avr/avr.c
    trunk/gcc/config/avr/avr.md
    trunk/gcc/config/avr/predicates.md
    trunk/gcc/testsuite/ChangeLog

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