From d2348bd59174b5f3c5c492da6190f80c3f6d745b Mon Sep 17 00:00:00 2001 From: DJ Delorie Date: Tue, 31 May 2005 20:20:13 -0400 Subject: expr.c (convert_move): When a partial_int requires multiple conversion steps... * expr.c (convert_move): When a partial_int requires multiple conversion steps, make sure successive steps convert the intermediate value, not the original value. * expmed.c (expand_mult): Convert partial_int multiplies to shift/add combinations too. * genmodes.c (mode_data): Add wider_2x. (calc_wider_mode): Calculate twice-wider mode too. (emit_mode_wider): Emit twice-wider mode too. * machmode.h (mode_2xwider, GET_MODE_2XWIDER_MODE): New. * expr.c (expand_expr_real_1): Use it for expanding multiplies. From-SVN: r100414 --- gcc/machmode.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'gcc/machmode.h') diff --git a/gcc/machmode.h b/gcc/machmode.h index c978c0a9b52..10016f86ac7 100644 --- a/gcc/machmode.h +++ b/gcc/machmode.h @@ -115,6 +115,9 @@ extern const unsigned char mode_nunits[NUM_MACHINE_MODES]; extern const unsigned char mode_wider[NUM_MACHINE_MODES]; #define GET_MODE_WIDER_MODE(MODE) mode_wider[MODE] +extern const unsigned char mode_2xwider[NUM_MACHINE_MODES]; +#define GET_MODE_2XWIDER_MODE(MODE) mode_2xwider[MODE] + /* Return the mode for data of a given size SIZE and mode class CLASS. If LIMIT is nonzero, then don't use modes bigger than MAX_FIXED_MODE_SIZE. The value is BLKmode if no other mode is found. */ -- cgit v1.2.1