On August 14, 2015 4:31:23 PM GMT+02:00, Aditya K <hiradi...@msn.com> wrote:
>
>
>----------------------------------------
>> Date: Fri, 14 Aug 2015 11:47:05 +0200
>> Subject: Re: [PATCH] [graphite] Constrain only on INTEGER_TYPE
>> From: richard.guent...@gmail.com
>> To: hiradi...@msn.com
>> CC: tob...@grosser.es; gcc-patches@gcc.gnu.org; s....@samsung.com;
>seb...@gmail.com
>>
>> On Fri, Aug 14, 2015 at 11:25 AM, Aditya K <hiradi...@msn.com> wrote:
>>>
>>>
>>> ----------------------------------------
>>>> Date: Fri, 14 Aug 2015 09:31:32 +0200
>>>> Subject: Re: [PATCH] [graphite] Constrain only on INTEGER_TYPE
>>>> From: richard.guent...@gmail.com
>>>> To: hiradi...@msn.com
>>>> CC: tob...@grosser.es; gcc-patches@gcc.gnu.org; s....@samsung.com;
>seb...@gmail.com
>>>>
>>>> On Thu, Aug 13, 2015 at 7:56 PM, Aditya K <hiradi...@msn.com>
>wrote:
>>>>>
>>>>>
>>>>>> Date: Thu, 13 Aug 2015 12:02:43 +0200
>>>>>> Subject: Re: [PATCH] [graphite] Constrain only on INTEGER_TYPE
>>>>>> From: richard.guent...@gmail.com
>>>>>> To: tob...@grosser.es
>>>>>> CC: hiradi...@msn.com; gcc-patches@gcc.gnu.org;
>s....@samsung.com;
>>>>>> seb...@gmail.com
>>>>>>
>>>>>> On Wed, Aug 12, 2015 at 10:41 PM, Tobias Grosser
><tob...@grosser.es>
>>>>>> wrote:
>>>>>>> On 08/12/2015 10:33 PM, Aditya Kumar wrote:
>>>>>>>>
>>>>>>>> Passes bootstrap, no regressions.
>>>>>>>>
>>>>>>>> With this patch gcc bootstraps with graphite.
>>>>>>>> make BOOT_CFLAGS="-g -O2 -fgraphite-identity -floop-interchange
>>>>>>>> -floop-block"
>>>>>>>
>>>>>>>
>>>>>>> LGTM, but please use a longer sentence to explain what you do.
>>>>>>
>>>>>> As the middle-end generally freely exchanges INTEGER_TYPE
>>>>>> ENUMERAL_TYPE and BOOLEAN_TYPE
>>>>>> you want to use INTEGRAL_TYPE_P here.
>>>>>>
>>>>>
>>>>> Thanks.
>>>>> I tried INTEGRAL_TYPE_P, and that fails bootstrap. After a little
>bit of
>>>>> debugging I figured out that it is
>>>>> ENUMERAL_TYPE that causes the failure (miscompile) in
>tree-vect-data-refs.c.
>>>>> I can add INTEGER_TYPE and BOOLEAN_TYPE (bootstrap passes with
>these). But
>>>>> that would be inconsistent with the type-checks at other places in
>>>>> graphite-*.c.
>>>>> Currently, we are only checking for INTEGER_TYPE at other places.
>>>>
>>>> This is weird - the code you replace did allow both ENUMERAL_TYPE
>and
>>>> BOOLEAN_TYPE.
>>>>
>>>> my suggestion was
>>>>
>>>> /* We can not handle REAL_TYPE. Failed for pr39260. */
>>>> - || TREE_CODE (TREE_TYPE (op)) == REAL_TYPE)
>>>> + || ! INTEGRAL_TYPE_P (TREE_TYPE (op))
>>>>
>>>> you also need to adjust the comment btw.
>>>
>>> This is exactly what I did and that resulted in miscompile. Then out
>of curiosity I tried to debug by putting
>>> /* We can not handle REAL_TYPE. Failed for pr39260. */
>>> - || TREE_CODE (TREE_TYPE (op)) == REAL_TYPE)
>>> + || TREE_CODE (TREE_TYPE (op)) != INTEGER_TYPE)
>>> + || TREE_CODE (TREE_TYPE (op)) != BOOLEAN_TYPE))
>>>
>>
>> well, each op is either != INTEGER or != BOOLEAN ... this is equal to
>> doing || true
>
>
>My bad, thanks for correction.
>I tried this way (using BOOLEAN_TYPE) and this also failed bootstrap.

As previously said the REAL_TYPE condition also allowed BOOLEAN_TYPE and thus 
also should have failed to bootstrap then(?)

Richard.

>@@ -410,7 +410,8 @@ stmt_simple_for_scop_p (basic_block scop_entry,
>loop_p outermost_loop,
>            tree op = gimple_op (stmt, i);
>            if (!graphite_can_represent_expr (scop_entry, loop, op)
>                /* We can not handle REAL_TYPE. Failed for pr39260.  */
>-               || TREE_CODE (TREE_TYPE (op)) == REAL_TYPE)
>+               || ((TREE_CODE (TREE_TYPE (op)) != INTEGER_TYPE)
>+               && (TREE_CODE (TREE_TYPE (op)) != BOOLEAN_TYPE)))
>              {
>                if (dump_file && (dump_flags & TDF_DETAILS))
>
>
>While, using ENUMERAL_TYPE passed bootstrap.
>@@ -410,7 +410,8 @@ stmt_simple_for_scop_p (basic_block scop_entry,
>loop_p outermost_loop,
>            tree op = gimple_op (stmt, i);
>            if (!graphite_can_represent_expr (scop_entry, loop, op)
>                /* We can not handle REAL_TYPE. Failed for pr39260.  */
>-               || TREE_CODE (TREE_TYPE (op)) == REAL_TYPE)
>+               || ((TREE_CODE (TREE_TYPE (op)) != INTEGER_TYPE)
>+               && (TREE_CODE (TREE_TYPE (op)) != ENUMERAL_TYPE)))
>              {
>                if (dump_file && (dump_flags & TDF_DETAILS))
>
>Where,
>BOOT_CFLAGS="-g -O2 -fgraphite-identity  -floop-block
>-floop-interchange"
>
>-Aditya
>
>
>
>
>
>
>
>
>
>
>>
>>> And that passed bootstrap.
>>>
>>> Update patch:
>>>
>>> Passes bootstrap, no regressions.
>>>
>>> With this patch gcc bootstraps with graphite.
>>> make BOOT_CFLAGS="-g -O2 -fgraphite-identity -floop-interchange
>-floop-block"
>>>
>>> gcc/ChangeLog:
>>>
>>> 2015-08-12 Aditya Kumar <hiradi...@msn.com>
>>>
>>> * graphite-scop-detection.c (stmt_simple_for_scop_p):
>>> Constrain only on INTEGER_TYPE
>>> ---
>>> gcc/graphite-scop-detection.c | 4 ++--
>>> 1 file changed, 2 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/gcc/graphite-scop-detection.c
>b/gcc/graphite-scop-detection.c
>>> index fb7247e..0f02a71 100644
>>> --- a/gcc/graphite-scop-detection.c
>>> +++ b/gcc/graphite-scop-detection.c
>>> @@ -409,8 +409,8 @@ stmt_simple_for_scop_p (basic_block scop_entry,
>loop_p outermost_loop,
>>> {
>>> tree op = gimple_op (stmt, i);
>>> if (!graphite_can_represent_expr (scop_entry, loop, op)
>>> - /* We can not handle REAL_TYPE. Failed for pr39260. */
>>> - || TREE_CODE (TREE_TYPE (op)) == REAL_TYPE)
>>> + /* We can only constrain on integer type. */
>>> + || (TREE_CODE (TREE_TYPE (op)) != INTEGER_TYPE))
>>> {
>>> if (dump_file && (dump_flags & TDF_DETAILS))
>>> {
>>> --
>>> 2.1.4
>>>
>>>
>>>
>>>>
>>>> Richard.
>>>>
>>>>> -Aditya
>>>>>
>>>>>
>>>>>> RIchard.
>>>>>>
>>>>>>> Tobias
>>>
>                                         


Reply via email to