This is the mail archive of the
gcc-prs@gcc.gnu.org
mailing list for the GCC project.
c/5680: Trouble extracting SSE values from a union
- From: tom at womack dot net
- To: gcc-gnats at gcc dot gnu dot org
- Date: 13 Feb 2002 10:41:09 -0000
- Subject: c/5680: Trouble extracting SSE values from a union
- Reply-to: tom at womack dot net
>Number: 5680
>Category: c
>Synopsis: Trouble extracting SSE values from a union
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Wed Feb 13 02:46:01 PST 2002
>Closed-Date:
>Last-Modified:
>Originator: Thomas Womack
>Release: gcc-3.1-20020211
>Organization:
>Environment:
SuSE Linux
>Description:
The short program below
#include <stdio.h>
typedef int m128 __attribute__ ((mode(V4SI)));
typedef union {m128 ti; unsigned int si[4];} m128x;
int main(void)
{
m128x a;
m128 w;
a.si[2] = 1;
w = a.ti;
}
gives an ICE in expr.c line 2748 -- this is the abort() command when the two sides of an emit_move_insn have incompatible modes.
>How-To-Repeat:
Compile with -march=pentium4
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted: