This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/18967] New: [4.0 regression] type conflict for __v2di in xmmintrin.h
- From: "reichelt at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 13 Dec 2004 21:22:57 -0000
- Subject: [Bug target/18967] New: [4.0 regression] type conflict for __v2di in xmmintrin.h
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
On x86_64 the include file xmmintrin.h cannot be compiled with the C++
frontend. Consequently the test g++.dg/other/mmintrin.C fails, see e.g.
http://gcc.gnu.org/ml/gcc-testresults/2004-12/msg00595.html
The error message (as reported by Andreas Jaeger) is:
/builds/gcc/misc/gcc/testsuite/../include/emmintrin.h: In function 'void
_mm_stream_si128(long long int __vector__*, long long int __vector__)':
/builds/gcc/misc/gcc/testsuite/../include/emmintrin.h:1426: error: invalid
conversion from 'long long int __vector__*' to 'long int __vector__*'
/builds/gcc/misc/gcc/testsuite/../include/emmintrin.h:1426: error:
initializing argument 1 of 'void __builtin_ia32_movntdq(long int __vector__*,
long int __vector__)'
The code in question is as follows:
__builtin_ia32_movntdq ((__v2di *)__A, (__v2di)__B);
with __v2di being defined as
typedef long long __v2di __attribute__ ((vector_size (16)));
In i386/i386.c we have:
def_builtin (MASK_SSE2, "__builtin_ia32_movntdq", void_ftype_pv2di_v2di,
IX86_BUILTIN_MOVNTDQ);
>From the signature of __builtin_ia32_movntdq it looks like __v2di is not a
long long int vector, but a long int vector instead. This incompatibility
should be fixed, see http://gcc.gnu.org/ml/gcc-patches/2004-12/msg00944.html
--
Summary: [4.0 regression] type conflict for __v2di in xmmintrin.h
Product: gcc
Version: 4.0.0
Status: UNCONFIRMED
Keywords: rejects-valid
Severity: critical
Priority: P2
Component: target
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: reichelt at gcc dot gnu dot org
CC: gcc-bugs at gcc dot gnu dot org
GCC build triplet: x86_64-unknown-linux-gnu
GCC host triplet: x86_64-unknown-linux-gnu
GCC target triplet: x86_64-unknown-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18967