On Tue, 7 Jan 2014, Kugan wrote: > ping ? > > I have reorganised the last patch and now handling only > VIEW_CONVERT_EXPR, CONVERT_EXPR and NOP_EXPR. Once it is reviewed and > necessary changes are made, I will address the other cases as a separate > patch (when it reaches that stage).
Note that VIEW_CONVERT_EXPR is wrong here. I think you are handling this wrong still. From a quick look you want to avoid the actual promotion for reg_1 = .... when reg_1 is promoted and thus the target is (subreg:XX N). The RHS has been expanded in XXmode. Dependent on the value-range of reg_1 you want to set N to a paradoxical subreg of the expanded result. You can always do that if the reg is zero-extended and else if the MSB is not set for any of the values of reg_1. I don't see how is_assigned_exp_fit_type reflects this in any way. Anyway, the patch should not introduce another if (promoted) case but only short-cut the final convert_move call of the existing one. Richard. > Thanks, > Kugan > > gcc/ > > +2014-01-07 Kugan Vivekanandarajah <kug...@linaro.org> > + > + * dojump.c (do_compare_and_jump): Generate rtl without > + zero/sign extension if redundant. > + * cfgexpand.c (expand_gimple_stmt_1): Likewise. > + (is_assigned_exp_fit_type) : New function. > + * cfgexpand.h (is_assigned_exp_fit_type) : Declare. > + > -- Richard Biener <rguent...@suse.de> SUSE / SUSE Labs SUSE LINUX Products GmbH - Nuernberg - AG Nuernberg - HRB 16746 GF: Jeff Hawn, Jennifer Guild, Felix Imend"orffer