Hi Andre,
On 7/26/24 16:05, Andre Vieira (lists) wrote:
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.
I think this lacks some verb? (eg .... what a candidate for a dec_insn
"is" or "should look like" or .... ?)
> - if (!NONDEBUG_INSN_P (dec_insn))
> + if (!check_dec_insn(dec_insn, condcount))
missing space before '('
> - return NULL;
> + if (!check_dec_insn(dec_insn, condcount))
same
It also makes sure that if it does not initially encounter a 'set' in
such a
form it tries to find another set that could be the right one.
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.targer/arm/mve/dlstp-loop-form.c: New test.
Regression tested mve.exp for arm-none-eabi with -mcpu=cortex-m85.
I manually tried to exercise the testcase with a cross-compiler, and
found the same issue as the Linaro CI should have reported (there was a
temporary breakage).
You can find detailed logs from Linaro in gcc.log.1.xz under
https://ci.linaro.org/job/tcwg_gcc_check--master-arm-precommit/8357/artifact/artifacts/artifacts.precommit/00-sumfiles/
Basically the testcase fails to compile with loads of
dlstp-loop-form.c:6:9: warning: 'pure' attribute on function returning
'void' [-Wattributes]
then
dlstp-loop-form.c:7:37: error: unknown type name 'float16x8_t'; did you
mean 'int16x8_t'?
dlstp-loop-form.c: In function 'n':
dlstp-loop-form.c:18:8: error: subscripted value is neither array nor
pointer nor vector
dlstp-loop-form.c:21:13: error: passing 'e' {aka 'int'} to argument 2 of
'vfmsq_m', which expects an MVE vector type
Why would the test pass for you?
Thanks,
Christophe
OK for trunk?
Kind regards,
Andre Vieira