aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/config/cpu/microblaze/cpu_defines.h
diff options
context:
space:
mode:
authorAndre Vieira <andre.simoesdiasvieira@arm.com>2024-10-02 15:14:40 +0100
committerAndre Vieira <andre.simoesdiasvieira@arm.com>2024-10-02 15:15:47 +0100
commit4e11ad7c345b6084ffe45ac569352dd316ee5cc6 (patch)
treee0be8894fe1d7326a54be88c6c74f2768b11e38e /libstdc++-v3/config/cpu/microblaze/cpu_defines.h
parent3a528386571fffbb41703a238aee950043af3f3c (diff)
downloadgcc-master.zip
gcc-master.tar.gz
gcc-master.tar.bz2
arm: Prevent ICE when doloop dec_set is not PLUS exprHEADtrunkmaster
This patch refactors and fixes an issue where arm_mve_dlstp_check_dec_counter was making an assumption about the form of what a candidate for a dec_insn should be, which caused an ICE. This dec_insn is the instruction that decreases the loop counter inside a decrementing loop and we expect it to have the following form: (set (reg CONDCOUNT) (plus (reg CONDCOUNT) (const_int))) Where CONDCOUNT is the loop counter, and const int is the negative constant used to decrement it. This patch also improves our search for a valid dec_insn. Before this patch we'd only look for a dec_insn inside the loop header if the loop latch was empty. We now also search the loop header if the loop latch is not empty but the last instruction is not a valid dec_insn. This could potentially be improved to search all instructions inside the loop latch. gcc/ChangeLog: * config/arm/arm.cc (check_dec_insn): New helper function containing code hoisted from... (arm_mve_dlstp_check_dec_counter): ... here. Use check_dec_insn to check the validity of the candidate dec_insn. gcc/testsuite/ChangeLog: * gcc.target/arm/mve/dlstp-loop-form.c: New test.
Diffstat (limited to 'libstdc++-v3/config/cpu/microblaze/cpu_defines.h')
0 files changed, 0 insertions, 0 deletions