This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [patch] fix PR c++/18073


Volker Reichelt <reichelt@igpm.rwth-aachen.de> writes:

[...]

| Now to the error message:
| With i686-pc-linux-gnu the signature of __builtin_ia32_movntd is:
|   void __builtin_ia32_movntdq(long long int __vector__*, long long int __vector__)
| This explains why I didn't see the failure there.
| 
| In i386/i386.c we have:
| def_builtin (MASK_SSE2, "__builtin_ia32_movntdq", void_ftype_pv2di_v2di, IX86_BUILTIN_MOVNTDQ);
| 
| To me this looks like an incompatibility between the header, which tells us
| that __v2di is a long long int and the implementation on x86_64 that seems to
| make it a long int.
| 
| Since Mark's patch the C++ frontend just rejects such conversions.
| 
| The question is what to do now?
| * Fix the incompatibility somehow.
| * Loosen the C++ conversion rules for pointers to vectors.

I vote for either fixing the headers or fixing the intrinsic type used
by the compiler for the built-ins.

-- Gaby


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]