* expr.c (convert_move): When a partial_int requires multiple
commit0663398065295b8b03266c3f4a1df130d6bdf712
authordj <dj@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 1 Jun 2005 00:20:13 +0000 (1 00:20 +0000)
committerdj <dj@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 1 Jun 2005 00:20:13 +0000 (1 00:20 +0000)
treead8920def875a4093b66cd5ff53f14ecb758f32a
parent58f70b5c59a190feb5fb0b1beb8ee9b6dad292ef
* 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@100414 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/expmed.c
gcc/expr.c
gcc/genmodes.c
gcc/machmode.h