diff mbox series

[committed] aarch64: Don't fold svundef* at the gimple level

Message ID mptft4map5a.fsf@arm.com
State New
Headers show
Series [committed] aarch64: Don't fold svundef* at the gimple level | expand

Commit Message

Richard Sandiford Dec. 3, 2020, 3:24 p.m. UTC
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.

Tested on aarch64-linux-gnu and aarch64_be-elf, pushed.

Thanks,
Richard


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.
---
 gcc/config/aarch64/aarch64-sve-builtins-base.cc      | 11 -----------
 .../gcc.target/aarch64/sve/acle/general/undef_1.c    | 12 ++++++++++++
 2 files changed, 12 insertions(+), 11 deletions(-)
 create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/acle/general/undef_1.c
diff mbox series

Patch

diff --git a/gcc/config/aarch64/aarch64-sve-builtins-base.cc b/gcc/config/aarch64/aarch64-sve-builtins-base.cc
index 9b63ea76ecd..4223125cd5e 100644
--- a/gcc/config/aarch64/aarch64-sve-builtins-base.cc
+++ b/gcc/config/aarch64/aarch64-sve-builtins-base.cc
@@ -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
   {
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general/undef_1.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general/undef_1.c
new file mode 100644
index 00000000000..793593b662c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/general/undef_1.c
@@ -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;
+}