X-Git-Url: https://gcc.gnu.org/git/?a=blobdiff_plain;f=gcc%2Fconfig%2Fmips%2Fmips.h;h=9cceff20de57dbb188a86e6a888452c2b7eb8775;hb=e14fa9c45a5fd9b4be62dedd78daa5559f4c83fc;hp=adc3634073cc765d4121e16fcf2c4ace5547307f;hpb=ac07e0665d5044978a404837c22bfbf4adbe7ffa;p=gcc.git diff --git a/gcc/config/mips/mips.h b/gcc/config/mips/mips.h index adc3634073c..9cceff20de5 100644 --- a/gcc/config/mips/mips.h +++ b/gcc/config/mips/mips.h @@ -1759,11 +1759,12 @@ extern struct mips_frame_info current_frame_info; always returned. Here TYPE will be a C expression of type `tree', representing the data type of the value. - Note that values of mode `BLKmode' are returned in memory - regardless of this macro. Also, the option `-fpcc-struct-return' + Note that values of mode `BLKmode' must be explicitly + handled by this macro. Also, the option `-fpcc-struct-return' takes effect regardless of this macro. On most systems, it is possible to leave the macro undefined; this causes a default - definition to be used, whose value is the constant 0. + definition to be used, whose value is the constant 1 for BLKmode + values, and 0 otherwise. GCC normally converts 1 byte structures into chars, 2 byte structs into shorts, and 4 byte structs into ints, and returns @@ -1771,7 +1772,8 @@ extern struct mips_frame_info current_frame_info; to give us MIPS cc compatibility. */ #define RETURN_IN_MEMORY(TYPE) \ - ((TREE_CODE (TYPE) == RECORD_TYPE) || (TREE_CODE (TYPE) == UNION_TYPE)) + ((TYPE_MODE (TYPE) == BLKmode) \ + || (TREE_CODE (TYPE) == RECORD_TYPE) || (TREE_CODE (TYPE) == UNION_TYPE)) /* A code distinguishing the floating point format of the target