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

Reply via email to