This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Fix PR69771, bogus CONST_INT during shift expansion
- From: James Greenhalgh <james dot greenhalgh at arm dot com>
- To: Jakub Jelinek <jakub at redhat dot com>
- Cc: Bernd Schmidt <bschmidt at redhat dot com>, Richard Biener <rguenther at suse dot de>, gcc-patches at gcc dot gnu dot org
- Date: Sat, 13 Feb 2016 07:50:25 +0000
- Subject: Re: [PATCH] Fix PR69771, bogus CONST_INT during shift expansion
- Authentication-results: sourceware.org; auth=none
- References: <20160212103203 dot GM3017 at tucnak dot redhat dot com> <alpine dot LSU dot 2 dot 11 dot 1602121145370 dot 31122 at t29 dot fhfr dot qr> <56BDCCCF dot 2030601 at redhat dot com> <20160212122438 dot GP3017 at tucnak dot redhat dot com> <alpine dot LSU dot 2 dot 11 dot 1602121346100 dot 31122 at t29 dot fhfr dot qr> <alpine dot LSU dot 2 dot 11 dot 1602121349340 dot 31122 at t29 dot fhfr dot qr> <20160212132813 dot GR3017 at tucnak dot redhat dot com> <alpine dot LSU dot 2 dot 11 dot 1602121446430 dot 31122 at t29 dot fhfr dot qr> <56BDEA17 dot 7090808 at redhat dot com> <20160212163421 dot GT3017 at tucnak dot redhat dot com>
On Fri, Feb 12, 2016 at 05:34:21PM +0100, Jakub Jelinek wrote:
> On Fri, Feb 12, 2016 at 03:20:07PM +0100, Bernd Schmidt wrote:
> > >>- mode1 = GET_MODE (xop1) != VOIDmode ? GET_MODE (xop1) : mode;
> > >>+ mode1 = GET_MODE (xop1) != VOIDmode ? GET_MODE (xop1) : mode1;
> > >> if (xmode1 != VOIDmode && xmode1 != mode1)
> > >> {
> >
> > Here, things aren't so clear, and the fact that the mode1 calculation now
> > differs from the mode0 one may be overlooked by someone in the future.
> >
> > Rather than use codes like "mode variable is VOIDmode", I'd prefer to use
> > booleans with descriptive names, like "op1_may_need_conversion".
>
> So do you prefer e.g. following? Bootstrapped/regtested on x86_64-linux and
> i686-linux.
>
> 2016-02-12 Jakub Jelinek <jakub@redhat.com>
>
> PR rtl-optimization/69764
> PR rtl-optimization/69771
> * optabs.c (expand_binop_directly): For shift_optab_p, force
> convert_modes with VOIDmode if xop1 has VOIDmode.
>
> * c-c++-common/pr69764.c: New test.
> * gcc.dg/torture/pr69771.c: New testcase.
>
These two new tests are failing for me on AArch64 as so:
.../gcc/testsuite/c-c++-common/pr69764.c:7:12: internal compiler error: in decompose, at rtl.h:2107
0x7d30be wi::int_traits<std::pair<rtx_def*, machine_mode> >::decompose(long*, unsigned int, std::pair<rtx_def*, machine_mode> const&)
.../gcc/rtl.h:2105
0x7d30be wide_int_ref_storage<false>::wide_int_ref_storage<std::pair<rtx_def*, machine_mode> >(std::pair<rtx_def*, machine_mode> const&)
.../gcc/wide-int.h:936
0x7d30be generic_wide_int<wide_int_ref_storage<false> >::generic_wide_int<std::pair<rtx_def*, machine_mode> >(std::pair<rtx_def*, machine_mode> const&)
.../gcc/wide-int.h:714
0x7d30be convert_modes(machine_mode, machine_mode, rtx_def*, int)
.../gcc/expr.c:697
0x9ec7c6 widen_operand
.../gcc/optabs.c:208
0x9f1e79 expand_binop(machine_mode, optab_tag, rtx_def*, rtx_def*, rtx_def*, int, optab_methods)
.../gcc/optabs.c:1280
0x7b7a95 expand_shift_1
.../gcc/expmed.c:2458
0x7bca49 expand_variable_shift(tree_code, machine_mode, rtx_def*, tree_node*, rtx_def*, int)
.../gcc/expmed.c:2517
0x7e1d43 expand_expr_real_2(separate_ops*, rtx_def*, machine_mode, expand_modifier)
.../gcc/expr.c:9029
0x6d9ed9 expand_gimple_stmt_1
.../gcc/cfgexpand.c:3642
0x6d9ed9 expand_gimple_stmt
.../gcc/cfgexpand.c:3702
0x6dc369 expand_gimple_basic_block
.../gcc/cfgexpand.c:5708
0x6dfcdc execute
.../gcc/cfgexpand.c:6323
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <http://gcc.gnu.org/bugs.html> for instructions.
I can't dig deeper today, but I will look closer on Monday if the fix is
not obvious.
Thanks,
James
- References:
- Re: [PATCH] Fix PR69771, bogus CONST_INT during shift expansion
- Re: [PATCH] Fix PR69771, bogus CONST_INT during shift expansion
- Re: [PATCH] Fix PR69771, bogus CONST_INT during shift expansion
- Re: [PATCH] Fix PR69771, bogus CONST_INT during shift expansion
- Re: [PATCH] Fix PR69771, bogus CONST_INT during shift expansion
- Re: [PATCH] Fix PR69771, bogus CONST_INT during shift expansion
- Re: [PATCH] Fix PR69771, bogus CONST_INT during shift expansion
- Re: [PATCH] Fix PR69771, bogus CONST_INT during shift expansion
- Re: [PATCH] Fix PR69771, bogus CONST_INT during shift expansion
- Re: [PATCH] Fix PR69771, bogus CONST_INT during shift expansion