aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1994-08-17 18:31:36 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1994-08-17 18:31:36 -0400
commit0179115349c9520a592a9981716ccbf5062169e6 (patch)
treea87003f1ca81ba8ab7c6f28794697fbbaf1bef4a /gcc
parent7e1d482b8ca91238217fd6192907f6c9ba90ca51 (diff)
downloadgcc-0179115349c9520a592a9981716ccbf5062169e6.zip
gcc-0179115349c9520a592a9981716ccbf5062169e6.tar.gz
gcc-0179115349c9520a592a9981716ccbf5062169e6.tar.bz2
(CLIPPER_ARG_SIZE): Return size in bytes.
(FUNCTION_ARG_ADVANCE): Fix argument alignment processing. From-SVN: r7941
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/clipper/clipper.h9
1 files changed, 5 insertions, 4 deletions
diff --git a/gcc/config/clipper/clipper.h b/gcc/config/clipper/clipper.h
index c0294b3..385bfb0 100644
--- a/gcc/config/clipper/clipper.h
+++ b/gcc/config/clipper/clipper.h
@@ -466,9 +466,10 @@ struct _clipper_cum_args { int num; int size; };
/* internal helper : size of an argument */
#define CLIPPER_ARG_SIZE(MODE, TYPE) \
-((MODE) != BLKmode \
- ? (GET_MODE_SIZE (MODE) + (UNITS_PER_WORD - 1)) / UNITS_PER_WORD \
- : (int_size_in_bytes (TYPE) + (UNITS_PER_WORD - 1)) / UNITS_PER_WORD)
+(((MODE) != BLKmode \
+ ? (GET_MODE_SIZE (MODE) + (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
of mode MODE and data type TYPE.
@@ -495,7 +496,7 @@ do \
{ \
int align = FUNCTION_ARG_BOUNDARY (MODE, TYPE) / BITS_PER_UNIT; \
(CUM).size += align - 1; \
- (CUM).size &= align - 1; \
+ (CUM).size &= ~(align - 1); \
(CUM).size += CLIPPER_ARG_SIZE (MODE, TYPE); \
} \
} while (0)