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] | |
Hi,
With some invalid arguments to some of the SPU intrinsics would cause us
to ICE.
This was because we did not compare argument types if the paramater type
of the
function was not a vector type which is incorrect. This would cause
spu_cmpgt to
ICE with two different vector types passed to it.
This patch fixes the problem by instead of checking for vector types,
check for not scalar
types for both the argument of the function call and the function decl.
Also if a pointer type was passed where we expected an scalar integer we
would accept
this case as we would implictly convert it to the type. This case is also
invalid and we should
at least reject it for the -pedantic-errors case. I fixed that case by
using the front-end's
build_function_call instead of creating using our own function to create
the function
call expression.
This patch also adds a gcc.target/spu directory which can be used for SPU
specific tests, it
is an exact copy of gcc.target/powerpc/powerpc.exp except for the change
of names and comments.
Committed after a build/test for spu-elf.
Thanks,
Andrew Pinski
ChangeLog:
* config/spu/spu-c.c (spu_build_overload_builtin): Delete.
(spu_resolve_overloaded_builtin): Check for non scalar instead
of vector type and check the function call argument type also for
non scalar.
Call build_function_call instead of spu_build_overload_builtin.
* gcc.target/spu: New directory.
* gcc.target/spu/spu.exp: New file.
* gcc.target/spu/intrinsics-1.c: New test.
Attachment:
fixintrinsics.diff.txt
Description: Text document
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |