&& TYPE_LENGTH (valtype) < DEPRECATED_REGISTER_RAW_SIZE (3)) offset = DEPRECATED_REGISTER_RAW_SIZE (3) - TYPE_LENGTH (valtype);
&& TYPE_LENGTH (valtype) < register_size (current_gdbarch, 3)) offset = register_size (current_gdbarch, 3) - TYPE_LENGTH (valtype);
rs6000_extract_return_value (struct type *valtype, char *regbuf, char *valbuf){  int offset = 0;  struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);  if (TYPE_CODE (valtype) == TYPE_CODE_FLT)    {      double dd;      float ff;      /* floats and doubles are returned in fpr1. fpr's have a size of 8 bytes.         We need to truncate the return value into float size (4 byte) if         necessary.  */      if (TYPE_LENGTH (valtype) > 4)	/* this is a double */	memcpy (valbuf,		&regbuf[DEPRECATED_REGISTER_BYTE (FP0_REGNUM + 1)],		TYPE_LENGTH (valtype));      else	{			/* float */	  memcpy (&dd, &regbuf[DEPRECATED_REGISTER_BYTE (FP0_REGNUM + 1)], 8);	  ff = (float) dd;	  memcpy (valbuf, &ff, sizeof (float));	}    }  else if (TYPE_CODE (valtype) == TYPE_CODE_ARRAY           && TYPE_LENGTH (valtype) == 16           && TYPE_VECTOR (valtype))    {      memcpy (valbuf, regbuf + DEPRECATED_REGISTER_BYTE (tdep->ppc_vr0_regnum + 2),	      TYPE_LENGTH (valtype));    }  else    {      /* return value is copied starting from r3. */      if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG	  && TYPE_LENGTH (valtype) < DEPRECATED_REGISTER_RAW_SIZE (3))	offset = DEPRECATED_REGISTER_RAW_SIZE (3) - TYPE_LENGTH (valtype);      memcpy (valbuf,	      regbuf + DEPRECATED_REGISTER_BYTE (3) + offset,	      TYPE_LENGTH (valtype));    }}