aarch64: Don't fold svundef* at the gimple level
As the testcase shows, folding svundef*() at the gimple level has the unfortunate side-effect of introducing -Wuninitialized or -Wmaybe-uninitialized warnings. We don't have a testcase that relies on the fold, so the easiest fix seems to be to remove it. gcc/ * config/aarch64/aarch64-sve-builtins-base.cc (svundef_impl::fold): Delete. gcc/testsuite/ * gcc.target/aarch64/sve/acle/general/undef_1.c: New test.
This commit is contained in:
parent
277ff3406d
commit
9c68134376
2 changed files with 12 additions and 11 deletions
|
@ -2295,17 +2295,6 @@ public:
|
|||
CONSTEXPR svundef_impl (unsigned int vectors_per_tuple)
|
||||
: quiet<multi_vector_function> (vectors_per_tuple) {}
|
||||
|
||||
gimple *
|
||||
fold (gimple_folder &f) const OVERRIDE
|
||||
{
|
||||
/* Don't fold svundef at the gimple level. There's no exact
|
||||
correspondence for SSA_NAMEs, and we explicitly don't want
|
||||
to generate a specific value (like an all-zeros vector). */
|
||||
if (vectors_per_tuple () == 1)
|
||||
return NULL;
|
||||
return gimple_build_assign (f.lhs, build_clobber (TREE_TYPE (f.lhs)));
|
||||
}
|
||||
|
||||
rtx
|
||||
expand (function_expander &e) const OVERRIDE
|
||||
{
|
||||
|
|
12
gcc/testsuite/gcc.target/aarch64/sve/acle/general/undef_1.c
Normal file
12
gcc/testsuite/gcc.target/aarch64/sve/acle/general/undef_1.c
Normal file
|
@ -0,0 +1,12 @@
|
|||
/* { dg-options "-O2 -W -Wall -Werror" } */
|
||||
|
||||
#include <arm_sve.h>
|
||||
|
||||
svfloat32x2_t
|
||||
foo (svfloat32_t x, svfloat32_t y)
|
||||
{
|
||||
svfloat32x2_t res = svundef2_f32 ();
|
||||
res = svset2 (res, 0, x);
|
||||
res = svset2 (res, 1, y);
|
||||
return res;
|
||||
}
|
Loading…
Add table
Reference in a new issue