This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH GCC8][01/33]Handle TRUNCATE between tieable modes in rtx_cost
- From: "Bin.Cheng" <amker dot cheng at gmail dot com>
- To: Kyrill Tkachov <kyrylo dot tkachov at foss dot arm dot com>
- Cc: Eric Botcazou <ebotcazou at adacore dot com>, gcc-patches List <gcc-patches at gcc dot gnu dot org>
- Date: Wed, 3 May 2017 11:12:07 +0100
- Subject: Re: [PATCH GCC8][01/33]Handle TRUNCATE between tieable modes in rtx_cost
- Authentication-results: sourceware.org; auth=none
- References: <VI1PR0802MB21763B21D53FFD66F71885F3E7190@VI1PR0802MB2176.eurprd08.prod.outlook.com> <4598428.28LrkgqxJG@polaris> <CAHFci2_9qJH+fCHRrHS9iBUHukVs2khzKVb2zpKDqCwkZzz=Ow@mail.gmail.com> <CAHFci2_yaMrJ1fDKXk+U7T2uc5jzL4u0rtdwpfw9XAp9==T=xA@mail.gmail.com> <5909AC50.1090207@foss.arm.com>
On Wed, May 3, 2017 at 11:09 AM, Kyrill Tkachov
<kyrylo.tkachov@foss.arm.com> wrote:
> Hi Bin,
>
>
> On 03/05/17 11:02, Bin.Cheng wrote:
>>
>> On Wed, May 3, 2017 at 9:38 AM, Bin.Cheng <amker.cheng@gmail.com> wrote:
>>>
>>> On Wed, May 3, 2017 at 7:17 AM, Eric Botcazou <ebotcazou@adacore.com>
>>> wrote:
>>>>>
>>>>> 2017-04-11 Bin Cheng <bin.cheng@arm.com>
>>>>>
>>>>> * rtlanal.c (rtx_cost): Handle TRUNCATE between tieable modes.
>>>>
>>>> This breaks bootstrap with RTL checking:
>>>>
>>>> /home/eric/build/gcc/native/./gcc/xgcc
>>>> -B/home/eric/build/gcc/native/./gcc/ -
>>>> nostdinc -x c /dev/null -S -o /dev/null -fself-
>>>> test=/home/eric/svn/gcc/gcc/testsuite/selftests
>>>> cc1: internal compiler error: RTL check: expected code 'subreg', have
>>>> 'truncate' in rtx_cost, at rtlanal.c:4169
>>>> 0xbae338 rtl_check_failed_code1(rtx_def const*, rtx_code, char const*,
>>>> int,
>>>> char const*)
>>>> /home/eric/svn/gcc/gcc/rtl.c:829
>>>> 0xbbc9b4 rtx_cost(rtx_def*, machine_mode, rtx_code, int, bool)
>>>> /home/eric/svn/gcc/gcc/rtlanal.c:4169
>>>> 0x8517e6 set_src_cost
>>>> /home/eric/svn/gcc/gcc/rtl.h:2685
>>>> 0x8517e6 init_expmed_one_conv
>>>> /home/eric/svn/gcc/gcc/expmed.c:142
>>>> 0x8517e6 init_expmed_one_mode
>>>> /home/eric/svn/gcc/gcc/expmed.c:209
>>>> 0x853fb2 init_expmed()
>>>> /home/eric/svn/gcc/gcc/expmed.c:270
>>>> 0xc45974 backend_init_target
>>>> /home/eric/svn/gcc/gcc/toplev.c:1665
>>>> 0xc45974 initialize_rtl()
>>>>
>>> Sorry for disturbing, I will revert this if can't fix today.
>>
>> It looks bogus and I couldn't find the motivating case for it, so
>> revert with attached patch. Build on x86 and commit as obvious.
>>
>> Thanks,
>> bin
>> 2017-05-03 Bin Cheng <bin.cheng@arm.com>
>>
>> Revert
>> 2017-05-02 Bin Cheng <bin.cheng@arm.com>
>> * rtlanal.c (rtx_cost): Handle TRUNCATE between tieable modes.
>
>
> Looking at the code in the patch...
>
> + case TRUNCATE:
> + /* If we can tie these modes, make this cheap. */
> + if (MODES_TIEABLE_P (mode, GET_MODE (SUBREG_REG (x))))
>
> 'code' here is GET_CODE (x) and in this case it is TRUNCATE.
> SUBREG_REG asserts (in RTL checking mode) that its argument is a SUBREG, so
> passing it a TRUNCATE rtx would cause
> the checking failure Eric reported. I think you meant to use XEXP (x, 0)
> instead of SUBREG_REG (x) ?
Yes, I guess so. Reverted since I couldn't find the original test.
Thanks,
bin
>
> Thanks,
> Kyrill
>