Commit 0d3ce69b by Jakub Jelinek Committed by Jakub Jelinek

re PR tree-optimization/78675 (ICE: verify_gimple failed (error: integral result…

re PR tree-optimization/78675 (ICE: verify_gimple failed (error: integral result type precision does not match field size of BIT_FIELD_REF))

2016-12-06  Jakub Jelinek  <jakub@redhat.com>

	PR tree-optimization/78675
	* tree-vect-loop.c (vectorizable_live_operation): For
	VECTOR_BOOLEAN_TYPE_P vectype use integral type with bitsize precision
	instead of TREE_TYPE (vectype) for the BIT_FIELD_REF.

	* gcc.c-torture/execute/pr78675.c: New test.
	* gcc.target/i386/pr78675-1.c: New test.
	* gcc.target/i386/pr78675-2.c: New test.

From-SVN: r243283
parent d7ae3739
2016-12-06 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/78675
* tree-vect-loop.c (vectorizable_live_operation): For
VECTOR_BOOLEAN_TYPE_P vectype use integral type with bitsize precision
instead of TREE_TYPE (vectype) for the BIT_FIELD_REF.
2016-12-06 Eric Botcazou <ebotcazou@adacore.com> 2016-12-06 Eric Botcazou <ebotcazou@adacore.com>
PR middle-end/78642 PR middle-end/78642
2016-12-06 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/78675
* gcc.c-torture/execute/pr78675.c: New test.
* gcc.target/i386/pr78675-1.c: New test.
* gcc.target/i386/pr78675-2.c: New test.
2016-12-05 Andrew Senkevich <andrew.senkevich@intel.com> 2016-12-05 Andrew Senkevich <andrew.senkevich@intel.com>
* gcc.target/i386/avx512bw-kandd-1.c: New. * gcc.target/i386/avx512bw-kandd-1.c: New.
......
/* PR tree-optimization/78675 */
long int a;
__attribute__((noinline, noclone)) long int
foo (long int x)
{
long int b;
while (a < 1)
{
b = a && x;
++a;
}
return b;
}
int
main ()
{
if (foo (0) != 0)
__builtin_abort ();
a = 0;
if (foo (1) != 0)
__builtin_abort ();
a = 0;
if (foo (25) != 0)
__builtin_abort ();
a = -64;
if (foo (0) != 0)
__builtin_abort ();
a = -64;
if (foo (1) != 0)
__builtin_abort ();
a = -64;
if (foo (25) != 0)
__builtin_abort ();
return 0;
}
/* PR tree-optimization/78675 */
/* { dg-do compile } */
/* { dg-options "-O3 -mavx512f" } */
#include "../../gcc.c-torture/execute/pr78675.c"
/* { dg-do run } */
/* { dg-options "-O3 -mavx512f" } */
/* { dg-require-effective-target avx512f } */
#include "avx512f-check.h"
#define main do_main
#include "../../gcc.c-torture/execute/pr78675.c"
static void
avx512f_test (void)
{
do_main ();
}
...@@ -6601,8 +6601,10 @@ vectorizable_live_operation (gimple *stmt, ...@@ -6601,8 +6601,10 @@ vectorizable_live_operation (gimple *stmt,
/* Create a new vectorized stmt for the uses of STMT and insert outside the /* Create a new vectorized stmt for the uses of STMT and insert outside the
loop. */ loop. */
gimple_seq stmts = NULL; gimple_seq stmts = NULL;
tree new_tree = build3 (BIT_FIELD_REF, TREE_TYPE (vectype), vec_lhs, bitsize, tree bftype = TREE_TYPE (vectype);
bitstart); if (VECTOR_BOOLEAN_TYPE_P (vectype))
bftype = build_nonstandard_integer_type (tree_to_uhwi (bitsize), 1);
tree new_tree = build3 (BIT_FIELD_REF, bftype, vec_lhs, bitsize, bitstart);
new_tree = force_gimple_operand (fold_convert (lhs_type, new_tree), &stmts, new_tree = force_gimple_operand (fold_convert (lhs_type, new_tree), &stmts,
true, NULL_TREE); true, NULL_TREE);
if (stmts) if (stmts)
......
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