+2019-12-10 Richard Sandiford <richard.sandiford@arm.com>
+
+ * dwarf2out.c (loc_descriptor): Punt for MODE_VECTOR_BOOL.
+ (add_const_value_attribute): Likewise.
+
2019-12-10 Richard Sandiford <richard.sandiford@arm.com>
* tree-vect-loop.c (vect_create_epilog_for_reduction): When
if (mode == VOIDmode)
mode = GET_MODE (rtl);
- if (mode != VOIDmode && (dwarf_version >= 4 || !dwarf_strict))
+ if (mode != VOIDmode
+ /* The combination of a length and byte elt_size doesn't extend
+ naturally to boolean vectors, where several elements are packed
+ into the same byte. */
+ && GET_MODE_CLASS (mode) != MODE_VECTOR_BOOL
+ && (dwarf_version >= 4 || !dwarf_strict))
{
unsigned int length;
if (!CONST_VECTOR_NUNITS (rtl).is_constant (&length))
return false;
machine_mode mode = GET_MODE (rtl);
+ /* The combination of a length and byte elt_size doesn't extend
+ naturally to boolean vectors, where several elements are packed
+ into the same byte. */
+ if (GET_MODE_CLASS (mode) == MODE_VECTOR_BOOL)
+ return false;
+
unsigned int elt_size = GET_MODE_UNIT_SIZE (mode);
unsigned char *array
= ggc_vec_alloc<unsigned char> (length * elt_size);
+2019-12-10 Richard Sandiford <richard.sandiford@arm.com>
+
+ * gcc.target/aarch64/sve/acle/general/debug_4.c: New test.
+
2019-12-10 Richard Sandiford <richard.sandiford@arm.com>
* gcc.target/aarch64/sve/clastb_9.c: New test.
--- /dev/null
+/* { dg-options "-O -g -msve-vector-bits=512" } */
+
+#include <arm_sve.h>
+
+void __attribute__((noipa))
+g (volatile int *x, svbool_t pg)
+{
+ *x = 1;
+}
+
+void
+f (volatile int *x)
+{
+ svbool_t pg = svorr_z (svpfalse (), svpfalse (), svpfalse ());
+ g (x, pg);
+}