middle-end/104467 - fix vector extract simplification
This fixes a bogus vector type used for a CTOR build as part of vector extract simplification. The code failed to consider a CTOR of vector elements. 2022-02-10 Richard Biener <rguenther@suse.de> PR middle-end/104467 * match.pd (vector extract simplification): Multiply the number of CTOR elements with the number of element elements. * gcc.dg/torture/pr104467.c: New testcase.
This commit is contained in:
parent
1b72d456b2
commit
4a8083285c
|
@ -6943,7 +6943,7 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
|
|||
TREE_TYPE (TREE_TYPE (ctor)))
|
||||
? type
|
||||
: build_vector_type (TREE_TYPE (TREE_TYPE (ctor)),
|
||||
count));
|
||||
count * k));
|
||||
res = (constant_p ? build_vector_from_ctor (evtype, vals)
|
||||
: build_constructor (evtype, vals));
|
||||
}
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-additional-options "-mavx" { target x86_64-*-* i?86-*-* } } */
|
||||
|
||||
unsigned long __attribute__((__vector_size__ (8 * sizeof (long)))) u;
|
||||
signed long __attribute__((__vector_size__ (8 * sizeof (long)))) s;
|
||||
|
||||
void
|
||||
foo (void)
|
||||
{
|
||||
s &= u + (0, 0);
|
||||
}
|
Loading…
Reference in New Issue