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

> 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