Hello, the new gcc.c-torture/compile/pr48767.c test cases were all crashing the compiler on SPU, for a similar reason as on the SH where this problem was originally found.
Fixed by calling the common code pass_by_reference routine instead of calling spu_pass_by_reference directly. The common code routine has additional checks that catch the case causing the crash. Tested on spu-elf, commited to mainline. Bye, Ulrich ChangeLog: * config/spu/spu.c (spu_gimplify_va_arg_expr): Call pass_by_reference instead of spu_pass_by_reference. Index: gcc/config/spu/spu.c =================================================================== *** gcc/config/spu/spu.c (revision 173251) --- gcc/config/spu/spu.c (working copy) *************** spu_gimplify_va_arg_expr (tree valist, t *** 4245,4252 **** /* if an object is dynamically sized, a pointer to it is passed instead of the object itself. */ ! pass_by_reference_p = spu_pass_by_reference (NULL, TYPE_MODE (type), type, ! false); if (pass_by_reference_p) type = build_pointer_type (type); size = int_size_in_bytes (type); --- 4245,4252 ---- /* if an object is dynamically sized, a pointer to it is passed instead of the object itself. */ ! pass_by_reference_p = pass_by_reference (NULL, TYPE_MODE (type), type, ! false); if (pass_by_reference_p) type = build_pointer_type (type); size = int_size_in_bytes (type); -- Dr. Ulrich Weigand GNU Toolchain for Linux on System z and Cell BE ulrich.weig...@de.ibm.com