On Mon, Sep 1, 2014 at 10:47 AM, Jakub Jelinek <ja...@redhat.com> wrote: > On Wed, Aug 27, 2014 at 12:25:14PM +0200, Uros Bizjak wrote: >> Something like following (untested) patch that also fixes the testcase >> perhaps? >> >> -- cut here-- >> Index: cfgexpand.c >> =================================================================== >> --- cfgexpand.c (revision 214445) >> +++ cfgexpand.c (working copy) >> @@ -3322,6 +3322,7 @@ expand_gimple_stmt_1 (gimple stmt) >> >> if ((SUBREG_PROMOTED_GET (target) == SRP_SIGNED_AND_UNSIGNED) >> && (GET_CODE (temp) == SUBREG) >> + && SUBREG_PROMOTED_VAR_P (temp) >> && (GET_MODE (target) == GET_MODE (temp)) >> && (GET_MODE (SUBREG_REG (target)) == GET_MODE >> (SUBREG_REG (temp)))) > > Looks like a wrong order of the predicates in any case, first you should > check if it is a SUBREG, then SUBREG_PROMOTED_VAR_P and only then > SUBREG_PROMOTED_GET. Also, the extra ()s around single line conditions > are unnecessary.
This comment applies to the original code, not the patched line, I guess. Uros.