Jakub Jelinek <ja...@redhat.com> wrote: >On Mon, Dec 16, 2013 at 11:12:40PM +0100, Jakub Jelinek wrote: >> When testing the patch the overflow-2.c testcase didn't exist yet, >> nor was ubsan on -m32 actually ever reporting overflows on the DImode >> multiplication (it simply expanded it as normal DImode multiplication >with >> no overflow checking). >> >> To me this looks like very old bug (r2174 added it), will >bootstrap/regtest >> this: >> >> 2013-12-16 Jakub Jelinek <ja...@redhat.com> >> >> * expr.c (convert_modes): For SUBREG_PROMOTED_VAR_P use SUBREG_REG >(x) >> instead of x as last gen_lowpart argument. >> >> --- gcc/expr.c.jj 2013-12-12 09:39:45.000000000 +0100 >> +++ gcc/expr.c 2013-12-16 23:05:07.519747459 +0100 >> @@ -719,7 +719,7 @@ convert_modes (enum machine_mode mode, e >> if (GET_CODE (x) == SUBREG && SUBREG_PROMOTED_VAR_P (x) >> && GET_MODE_SIZE (GET_MODE (SUBREG_REG (x))) >= GET_MODE_SIZE >(mode) >> && SUBREG_PROMOTED_UNSIGNED_P (x) == unsignedp) >> - x = gen_lowpart (mode, x); >> + x = gen_lowpart (mode, SUBREG_REG (x)); >> >> if (GET_MODE (x) != VOIDmode) >> oldmode = GET_MODE (x); >> > >Successfully bootstrapped/regtested on x86_64-linux and i686-linux, ok >for >trunk?
Ok. Thanks, Richard. > Jakub