Commit 01791153 by Richard Kenner

(CLIPPER_ARG_SIZE): Return size in bytes.

(FUNCTION_ARG_ADVANCE): Fix argument alignment processing.

From-SVN: r7941
parent 7e1d482b
...@@ -466,9 +466,10 @@ struct _clipper_cum_args { int num; int size; }; ...@@ -466,9 +466,10 @@ struct _clipper_cum_args { int num; int size; };
/* internal helper : size of an argument */ /* internal helper : size of an argument */
#define CLIPPER_ARG_SIZE(MODE, TYPE) \ #define CLIPPER_ARG_SIZE(MODE, TYPE) \
((MODE) != BLKmode \ (((MODE) != BLKmode \
? (GET_MODE_SIZE (MODE) + (UNITS_PER_WORD - 1)) / UNITS_PER_WORD \ ? (GET_MODE_SIZE (MODE) + (UNITS_PER_WORD - 1)) / UNITS_PER_WORD \
: (int_size_in_bytes (TYPE) + (UNITS_PER_WORD - 1)) / UNITS_PER_WORD) : (int_size_in_bytes (TYPE) + (UNITS_PER_WORD - 1)) / UNITS_PER_WORD) \
* UNITS_PER_WORD)
/* Update the data in CUM to advance over an argument /* Update the data in CUM to advance over an argument
of mode MODE and data type TYPE. of mode MODE and data type TYPE.
...@@ -495,7 +496,7 @@ do \ ...@@ -495,7 +496,7 @@ do \
{ \ { \
int align = FUNCTION_ARG_BOUNDARY (MODE, TYPE) / BITS_PER_UNIT; \ int align = FUNCTION_ARG_BOUNDARY (MODE, TYPE) / BITS_PER_UNIT; \
(CUM).size += align - 1; \ (CUM).size += align - 1; \
(CUM).size &= align - 1; \ (CUM).size &= ~(align - 1); \
(CUM).size += CLIPPER_ARG_SIZE (MODE, TYPE); \ (CUM).size += CLIPPER_ARG_SIZE (MODE, TYPE); \
} \ } \
} while (0) } while (0)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment