[gnu.gcc.bug] Null pointer dereference in GCC 1.28

cudcv@warwick.ac.uk (Rob McMahon) (09/25/88)

GCC 1.28 expr.c (expand_call) somewhere around line 3679:

  /* If the address for a structure value should be in memory,
     and it would go in memory if treated as an extra parameter,
     treat it that way.  */
  if (structure_value_addr && GET_CODE (struct_value_rtx) == MEM)
    {
      rtx tem;

      INIT_CUMULATIVE_ARGS (args_so_far, funtype);
      tem = FUNCTION_ARG (args_so_far, Pmode,
			  build_pointer_type (TREE_TYPE (funtype)), 1);
=>    if (GET_CODE (tem) == MEM)
	{

If FUNCTION_ARG returns 0, this causes an almost-null pointer dereference
(actually the gould assembler gives up on this, but that's another story ...)
Make that

      if (tem != 0 && GET_CODE (tem) == MEM)

?

Rob
-- 
UUCP:   ...!mcvax!ukc!warwick!cudcv	PHONE:  +44 203 523037
JANET:  cudcv@uk.ac.warwick             ARPA:   cudcv@warwick.ac.uk
Rob McMahon, Computing Services, Warwick University, Coventry CV4 7AL, England