Commit 32ef15bd by Jakub Jelinek Committed by Jakub Jelinek

re PR tree-optimization/51074 (No constant folding performed for VEC_PERM_EXPR,…

re PR tree-optimization/51074 (No constant folding performed for VEC_PERM_EXPR, VEC_INTERLEAVE*EXPR, VEC_EXTRACT*EXPR)

	PR tree-optimization/51074
	* fold-const.c (fold_binary_loc): Fix up VEC_INTERLEAVE_*_EXPR
	handling for BYTES_BIG_ENDIAN.
	* optabs.c (can_vec_perm_for_code_p): Likewise.

	* gcc.dg/vect/pr51074.c: New test.

From-SVN: r181627
parent 3945f48c
2011-11-22 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/51074
* fold-const.c (fold_binary_loc): Fix up VEC_INTERLEAVE_*_EXPR
handling for BYTES_BIG_ENDIAN.
* optabs.c (can_vec_perm_for_code_p): Likewise.
2011-11-22 Michael Matz <matz@suse.de>
PR other/51125
......@@ -13483,10 +13483,12 @@ fold_binary_loc (location_t loc,
sel[i] = i * 2 + 1;
break;
case VEC_INTERLEAVE_HIGH_EXPR:
sel[i] = (i + nelts) / 2 + ((i & 1) ? nelts : 0);
sel[i] = (i + (BYTES_BIG_ENDIAN ? 0 : nelts)) / 2
+ ((i & 1) ? nelts : 0);
break;
case VEC_INTERLEAVE_LOW_EXPR:
sel[i] = i / 2 + ((i & 1) ? nelts : 0);
sel[i] = (i + (BYTES_BIG_ENDIAN ? nelts : 0)) / 2
+ ((i & 1) ? nelts : 0);
break;
default:
gcc_unreachable ();
......
......@@ -6932,9 +6932,9 @@ can_vec_perm_for_code_p (enum tree_code code, enum machine_mode mode,
break;
case VEC_INTERLEAVE_HIGH_EXPR:
alt = nelt / 2;
/* FALLTHRU */
case VEC_INTERLEAVE_LOW_EXPR:
if ((BYTES_BIG_ENDIAN != 0) ^ (code == VEC_INTERLEAVE_HIGH_EXPR))
alt = nelt / 2;
for (i = 0; i < nelt / 2; ++i)
{
data[i * 2] = i + alt;
......
2011-11-22 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/51074
* gcc.dg/vect/pr51074.c: New test.
2011-11-22 Dodji Seketeli <dodji@redhat.com>
PR c++/51143
......
/* PR tree-optimization/51074 */
#include "tree-vect.h"
struct S { int a, b; } s[8];
int
main ()
{
int i;
check_vect ();
for (i = 0; i < 8; i++)
{
s[i].b = 0;
s[i].a = i;
}
asm volatile ("" : : : "memory");
for (i = 0; i < 8; i++)
if (s[i].b != 0 || s[i].a != i)
abort ();
return 0;
}
/* { dg-final { cleanup-tree-dump "vect" } } */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment