Commit e034c5c8 by Jakub Jelinek Committed by Jakub Jelinek

re PR target/78643 (ICE in convert_move, at expr.c:230)

	PR target/78643
	PR target/80583
	* expr.c (get_inner_reference): If DECL_MODE of a non-bitfield
	is BLKmode for vector field with vector raw mode, use TYPE_MODE
	instead of DECL_MODE.

	* gcc.target/i386/pr80583.c: New test.

From-SVN: r255353
parent 3b5e1089
2017-12-02 Jakub Jelinek <jakub@redhat.com>
PR target/78643
PR target/80583
* expr.c (get_inner_reference): If DECL_MODE of a non-bitfield
is BLKmode for vector field with vector raw mode, use TYPE_MODE
instead of DECL_MODE.
* config/i386/i386-protos.h (standard_sse_constant_opcode): Change
last argument to rtx pointer.
* config/i386/i386.c (standard_sse_constant_opcode): Replace X argument
......@@ -7032,7 +7032,16 @@ get_inner_reference (tree exp, HOST_WIDE_INT *pbitsize,
size. */
mode = TYPE_MODE (DECL_BIT_FIELD_TYPE (field));
else if (!DECL_BIT_FIELD (field))
mode = DECL_MODE (field);
{
mode = DECL_MODE (field);
/* For vector fields re-check the target flags, as DECL_MODE
could have been set with different target flags than
the current function has. */
if (mode == BLKmode
&& VECTOR_TYPE_P (TREE_TYPE (field))
&& VECTOR_MODE_P (TYPE_MODE_RAW (TREE_TYPE (field))))
mode = TYPE_MODE (TREE_TYPE (field));
}
else if (DECL_MODE (field) == BLKmode)
blkmode_bitfield = true;
......
2017-12-02 Jakub Jelinek <jakub@redhat.com>
PR target/78643
PR target/80583
* gcc.target/i386/pr80583.c: New test.
2017-12-01 Segher Boessenkool <segher@kernel.crashing.org>
* gcc.target/powerpc/fusion.c: Add -dp to options. Adjust the expected
......
/* PR target/80583 */
/* { dg-do compile } */
/* { dg-options "-O0 -mno-avx" } */
typedef int V __attribute__((__vector_size__(32)));
struct S { V a; };
V __attribute__((target ("avx")))
foo (struct S *b)
{
V x = b->a;
return x;
}
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