summaryrefslogtreecommitdiff
path: root/gcc/expmed.c
diff options
context:
space:
mode:
authorpinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4>2008-08-31 02:40:13 +0000
committerpinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4>2008-08-31 02:40:13 +0000
commit0f510c9a06acc854f80a606f34c8f2b6bc8ef237 (patch)
treec26fb67132b81ba83d6eaed246bea9658b7cfd2a /gcc/expmed.c
parent7f9dd8e2feacc52268e8b4bb828aed307adbc68b (diff)
downloadgcc-0f510c9a06acc854f80a606f34c8f2b6bc8ef237.tar.gz
#define vector __attribute__((vector_size(16) ))
struct struct1 { union { float a[3]; } vmx; struct struct2 { struct2(const struct2& r) {} } w; } __attribute__((aligned(16))); struct struct3 { vector float vmx; operator const struct1& () const{ return *reinterpret_cast<const struct1*>(this); } }; struct3 func3( struct3 V1); struct3 func2( void ); void func1( ) { struct1 vVec = func2() ; func3 ( (struct3&)vVec ); } git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@139820 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/expmed.c')
-rw-r--r--gcc/expmed.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/expmed.c b/gcc/expmed.c
index 399139b97b5..83a8760b131 100644
--- a/gcc/expmed.c
+++ b/gcc/expmed.c
@@ -1204,7 +1204,7 @@ extract_bit_field_1 (rtx str_rtx, unsigned HOST_WIDE_INT bitsize,
for (; new_mode != VOIDmode ; new_mode = GET_MODE_WIDER_MODE (new_mode))
if (GET_MODE_NUNITS (new_mode) == nunits
- && GET_MODE_INNER (new_mode) == tmode
+ && GET_MODE_SIZE (new_mode) == GET_MODE_SIZE (GET_MODE (op0))
&& targetm.vector_mode_supported_p (new_mode))
break;
if (new_mode != VOIDmode)