public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* Re: [PATCH]Remove duplicate check on BRANCH_COST in fold-const.c
       [not found] <50111a4e.c1d3440a.06c3.ffffd750SMTPIN_ADDED@mx.google.com>
@ 2012-07-26 10:27 ` Andrew Pinski
  2012-07-26 13:19   ` Richard Earnshaw
  0 siblings, 1 reply; 14+ messages in thread
From: Andrew Pinski @ 2012-07-26 10:27 UTC (permalink / raw)
  To: Bin Cheng; +Cc: gcc-patches

On Thu, Jul 26, 2012 at 3:20 AM, Bin Cheng <bin.cheng@arm.com> wrote:
> Hi,
> This patch removes the duplicate check on BRANCH_COST in fold_truth_andor.
> The BRANCH_COST condition removed is a duplicate of the default definition
> of LOGICAL_OP_NON_SHORT_CIRCUIT.
> All current targets (mips and rs6000) that provide non-default definitions
> of LOGICAL_OP_SHORT_CIRCUIT set it to 0, so this patch is therefore just a
> code cleanup and does not change behaviour in the compiler.
>
> I built mipsel-elf cross compiler and compared newlib/libstdc++ compiled by
> the patched/original compilers.
>
> Is it OK?

Just some history here on this.  The BRANCH COST check was there
before LOGICAL_OP_NON_SHORT_CIRCUIT was added.  I will be submitting a
patch which changes the MIPS definition soon but it will not be based
on the branch cost but rather than another option.  So in the end it
might not be redundant as it is currently.

Thanks,
Andrew

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH]Remove duplicate check on BRANCH_COST in fold-const.c
  2012-07-26 10:27 ` [PATCH]Remove duplicate check on BRANCH_COST in fold-const.c Andrew Pinski
@ 2012-07-26 13:19   ` Richard Earnshaw
  2012-08-13 10:03     ` Ping: " Bin Cheng
       [not found]     ` <5045d11d.85d2d80a.7762.ffffe452SMTPIN_ADDED@mx.google.com>
  0 siblings, 2 replies; 14+ messages in thread
From: Richard Earnshaw @ 2012-07-26 13:19 UTC (permalink / raw)
  To: Andrew Pinski; +Cc: Bin Cheng, gcc-patches

On 26/07/12 11:27, Andrew Pinski wrote:
> On Thu, Jul 26, 2012 at 3:20 AM, Bin Cheng <bin.cheng@arm.com> wrote:
>> Hi,
>> This patch removes the duplicate check on BRANCH_COST in fold_truth_andor.
>> The BRANCH_COST condition removed is a duplicate of the default definition
>> of LOGICAL_OP_NON_SHORT_CIRCUIT.
>> All current targets (mips and rs6000) that provide non-default definitions
>> of LOGICAL_OP_SHORT_CIRCUIT set it to 0, so this patch is therefore just a
>> code cleanup and does not change behaviour in the compiler.
>>
>> I built mipsel-elf cross compiler and compared newlib/libstdc++ compiled by
>> the patched/original compilers.
>>
>> Is it OK?
> 
> Just some history here on this.  The BRANCH COST check was there
> before LOGICAL_OP_NON_SHORT_CIRCUIT was added.  I will be submitting a
> patch which changes the MIPS definition soon but it will not be based
> on the branch cost but rather than another option.  So in the end it
> might not be redundant as it is currently.
> 
> Thanks,
> Andrew
> 

You can always factor BRANCH_COST into LOGICAL_OP_NON_SHORT_CIRCUIT (as
the default currently does), so there's no loss of functionality from
removing this currently redundant check.  However, the current
definition is broken in that it makes it impossible to force the
compiler to use this optimization when the branch cost is low.

R.



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Ping: [PATCH]Remove duplicate check on BRANCH_COST in fold-const.c
  2012-07-26 13:19   ` Richard Earnshaw
@ 2012-08-13 10:03     ` Bin Cheng
  2012-09-04 10:00       ` Ping^2: " Bin Cheng
       [not found]     ` <5045d11d.85d2d80a.7762.ffffe452SMTPIN_ADDED@mx.google.com>
  1 sibling, 1 reply; 14+ messages in thread
From: Bin Cheng @ 2012-08-13 10:03 UTC (permalink / raw)
  To: Richard Earnshaw, Andrew Pinski; +Cc: gcc-patches

Ping.

> -----Original Message-----
> From: Richard Earnshaw
> Sent: Thursday, July 26, 2012 9:19 PM
> To: Andrew Pinski
> Cc: Bin Cheng; gcc-patches@gcc.gnu.org
> Subject: Re: [PATCH]Remove duplicate check on BRANCH_COST in fold-const.c
> 
> On 26/07/12 11:27, Andrew Pinski wrote:
> > On Thu, Jul 26, 2012 at 3:20 AM, Bin Cheng <bin.cheng@arm.com> wrote:
> >> Hi,
> >> This patch removes the duplicate check on BRANCH_COST in
fold_truth_andor.
> >> The BRANCH_COST condition removed is a duplicate of the default
> >> definition of LOGICAL_OP_NON_SHORT_CIRCUIT.
> >> All current targets (mips and rs6000) that provide non-default
> >> definitions of LOGICAL_OP_SHORT_CIRCUIT set it to 0, so this patch is
> >> therefore just a code cleanup and does not change behaviour in the
compiler.
> >>
> >> I built mipsel-elf cross compiler and compared newlib/libstdc++
> >> compiled by the patched/original compilers.
> >>
> >> Is it OK?
> >
> > Just some history here on this.  The BRANCH COST check was there
> > before LOGICAL_OP_NON_SHORT_CIRCUIT was added.  I will be submitting a
> > patch which changes the MIPS definition soon but it will not be based
> > on the branch cost but rather than another option.  So in the end it
> > might not be redundant as it is currently.
> >
> > Thanks,
> > Andrew
> >
> 
> You can always factor BRANCH_COST into LOGICAL_OP_NON_SHORT_CIRCUIT (as
the
> default currently does), so there's no loss of functionality from removing
> this currently redundant check.  However, the current definition is broken
in
> that it makes it impossible to force the compiler to use this optimization
> when the branch cost is low.
> 

Is it OK?

Thanks



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Ping^2: [PATCH]Remove duplicate check on BRANCH_COST in fold-const.c
  2012-08-13 10:03     ` Ping: " Bin Cheng
@ 2012-09-04 10:00       ` Bin Cheng
  0 siblings, 0 replies; 14+ messages in thread
From: Bin Cheng @ 2012-09-04 10:00 UTC (permalink / raw)
  To: 'Richard Guenther', Richard Earnshaw, Andrew Pinski; +Cc: gcc-patches

> > -----Original Message-----
> > From: Richard Earnshaw
> > Sent: Thursday, July 26, 2012 9:19 PM
> > To: Andrew Pinski
> > Cc: Bin Cheng; gcc-patches@gcc.gnu.org
> > Subject: Re: [PATCH]Remove duplicate check on BRANCH_COST in
> > fold-const.c
> >
> > On 26/07/12 11:27, Andrew Pinski wrote:
> > > On Thu, Jul 26, 2012 at 3:20 AM, Bin Cheng <bin.cheng@arm.com> wrote:
> > >> Hi,
> > >> This patch removes the duplicate check on BRANCH_COST in
> fold_truth_andor.
> > >> The BRANCH_COST condition removed is a duplicate of the default
> > >> definition of LOGICAL_OP_NON_SHORT_CIRCUIT.
> > >> All current targets (mips and rs6000) that provide non-default
> > >> definitions of LOGICAL_OP_SHORT_CIRCUIT set it to 0, so this patch
> > >> is therefore just a code cleanup and does not change behaviour in
> > >> the
> compiler.
> > >>
> > >> I built mipsel-elf cross compiler and compared newlib/libstdc++
> > >> compiled by the patched/original compilers.
> > >>
> > >> Is it OK?
> > >
> > > Just some history here on this.  The BRANCH COST check was there
> > > before LOGICAL_OP_NON_SHORT_CIRCUIT was added.  I will be submitting
> > > a patch which changes the MIPS definition soon but it will not be
> > > based on the branch cost but rather than another option.  So in the
> > > end it might not be redundant as it is currently.
> > >
> > > Thanks,
> > > Andrew
> > >
> >
> > You can always factor BRANCH_COST into LOGICAL_OP_NON_SHORT_CIRCUIT
> > (as
> the
> > default currently does), so there's no loss of functionality from
> > removing this currently redundant check.  However, the current
> > definition is broken
> in
> > that it makes it impossible to force the compiler to use this
> > optimization when the branch cost is low.
> >
> 

Hi, is this change ok? Or we need more discussion on it?

Thanks very much.



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Ping^2: [PATCH]Remove duplicate check on BRANCH_COST in fold-const.c
       [not found]     ` <5045d11d.85d2d80a.7762.ffffe452SMTPIN_ADDED@mx.google.com>
@ 2012-09-04 10:12       ` Richard Guenther
  2012-09-04 10:53         ` Richard Earnshaw
  0 siblings, 1 reply; 14+ messages in thread
From: Richard Guenther @ 2012-09-04 10:12 UTC (permalink / raw)
  To: Bin Cheng; +Cc: Richard Earnshaw, Andrew Pinski, gcc-patches

On Tue, Sep 4, 2012 at 11:56 AM, Bin Cheng <bin.cheng@arm.com> wrote:
>> > -----Original Message-----
>> > From: Richard Earnshaw
>> > Sent: Thursday, July 26, 2012 9:19 PM
>> > To: Andrew Pinski
>> > Cc: Bin Cheng; gcc-patches@gcc.gnu.org
>> > Subject: Re: [PATCH]Remove duplicate check on BRANCH_COST in
>> > fold-const.c
>> >
>> > On 26/07/12 11:27, Andrew Pinski wrote:
>> > > On Thu, Jul 26, 2012 at 3:20 AM, Bin Cheng <bin.cheng@arm.com> wrote:
>> > >> Hi,
>> > >> This patch removes the duplicate check on BRANCH_COST in
>> fold_truth_andor.
>> > >> The BRANCH_COST condition removed is a duplicate of the default
>> > >> definition of LOGICAL_OP_NON_SHORT_CIRCUIT.
>> > >> All current targets (mips and rs6000) that provide non-default
>> > >> definitions of LOGICAL_OP_SHORT_CIRCUIT set it to 0, so this patch
>> > >> is therefore just a code cleanup and does not change behaviour in
>> > >> the
>> compiler.
>> > >>
>> > >> I built mipsel-elf cross compiler and compared newlib/libstdc++
>> > >> compiled by the patched/original compilers.
>> > >>
>> > >> Is it OK?
>> > >
>> > > Just some history here on this.  The BRANCH COST check was there
>> > > before LOGICAL_OP_NON_SHORT_CIRCUIT was added.  I will be submitting
>> > > a patch which changes the MIPS definition soon but it will not be
>> > > based on the branch cost but rather than another option.  So in the
>> > > end it might not be redundant as it is currently.
>> > >
>> > > Thanks,
>> > > Andrew
>> > >
>> >
>> > You can always factor BRANCH_COST into LOGICAL_OP_NON_SHORT_CIRCUIT
>> > (as
>> the
>> > default currently does), so there's no loss of functionality from
>> > removing this currently redundant check.  However, the current
>> > definition is broken
>> in
>> > that it makes it impossible to force the compiler to use this
>> > optimization when the branch cost is low.
>> >
>>
>
> Hi, is this change ok? Or we need more discussion on it?

It's not ok (I btw fail to see the patch in this thread).  The current
way LOGICAL_OP_NON_SHORT_CIRCUIT is implemented/used should instead
be changed to always match the pattern

      LOGICAL_OP_NON_SHORT_CIRCUIT
      && (BRANCH_COST (optimize_function_for_speed_p (cfun),
                    false) >= 2)

and the default value of LOGICAL_OP_NON_SHORT_CIRCUIT should be 1,
defined in defaults.h (and the docs updated).

Richard.

> Thanks very much.
>
>
>

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Ping^2: [PATCH]Remove duplicate check on BRANCH_COST in fold-const.c
  2012-09-04 10:12       ` Richard Guenther
@ 2012-09-04 10:53         ` Richard Earnshaw
  2012-09-04 14:31           ` Richard Guenther
       [not found]           ` <CAHFci29uvxehoLBeX_ksucMmLMXP30KJn_fPtrOutSjr=exetg@mail.gmail.com>
  0 siblings, 2 replies; 14+ messages in thread
From: Richard Earnshaw @ 2012-09-04 10:53 UTC (permalink / raw)
  To: Richard Guenther; +Cc: Bin Cheng, Andrew Pinski, gcc-patches

On 04/09/12 11:11, Richard Guenther wrote:
> On Tue, Sep 4, 2012 at 11:56 AM, Bin Cheng <bin.cheng@arm.com> wrote:
>>>> -----Original Message-----
>>>> From: Richard Earnshaw
>>>> Sent: Thursday, July 26, 2012 9:19 PM
>>>> To: Andrew Pinski
>>>> Cc: Bin Cheng; gcc-patches@gcc.gnu.org
>>>> Subject: Re: [PATCH]Remove duplicate check on BRANCH_COST in
>>>> fold-const.c
>>>>
>>>> On 26/07/12 11:27, Andrew Pinski wrote:
>>>>> On Thu, Jul 26, 2012 at 3:20 AM, Bin Cheng <bin.cheng@arm.com> wrote:
>>>>>> Hi,
>>>>>> This patch removes the duplicate check on BRANCH_COST in
>>> fold_truth_andor.
>>>>>> The BRANCH_COST condition removed is a duplicate of the default
>>>>>> definition of LOGICAL_OP_NON_SHORT_CIRCUIT.
>>>>>> All current targets (mips and rs6000) that provide non-default
>>>>>> definitions of LOGICAL_OP_SHORT_CIRCUIT set it to 0, so this patch
>>>>>> is therefore just a code cleanup and does not change behaviour in
>>>>>> the
>>> compiler.
>>>>>>
>>>>>> I built mipsel-elf cross compiler and compared newlib/libstdc++
>>>>>> compiled by the patched/original compilers.
>>>>>>
>>>>>> Is it OK?
>>>>>
>>>>> Just some history here on this.  The BRANCH COST check was there
>>>>> before LOGICAL_OP_NON_SHORT_CIRCUIT was added.  I will be submitting
>>>>> a patch which changes the MIPS definition soon but it will not be
>>>>> based on the branch cost but rather than another option.  So in the
>>>>> end it might not be redundant as it is currently.
>>>>>
>>>>> Thanks,
>>>>> Andrew
>>>>>
>>>>
>>>> You can always factor BRANCH_COST into LOGICAL_OP_NON_SHORT_CIRCUIT
>>>> (as
>>> the
>>>> default currently does), so there's no loss of functionality from
>>>> removing this currently redundant check.  However, the current
>>>> definition is broken
>>> in
>>>> that it makes it impossible to force the compiler to use this
>>>> optimization when the branch cost is low.
>>>>
>>>
>>
>> Hi, is this change ok? Or we need more discussion on it?
> 
> It's not ok (I btw fail to see the patch in this thread).  The current
> way LOGICAL_OP_NON_SHORT_CIRCUIT is implemented/used should instead
> be changed to always match the pattern
> 
>       LOGICAL_OP_NON_SHORT_CIRCUIT
>       && (BRANCH_COST (optimize_function_for_speed_p (cfun),
>                     false) >= 2)
> 
> and the default value of LOGICAL_OP_NON_SHORT_CIRCUIT should be 1,
> defined in defaults.h (and the docs updated).
> 

That's not going to work for modern ARM cores.  We want to set
BRANCH_COST to 1 but still have it generate the non-short-circuit code
(because conditional compares are really cheap.

R.

> Richard.
> 
>> Thanks very much.
>>
>>
>>
> 




^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Ping^2: [PATCH]Remove duplicate check on BRANCH_COST in fold-const.c
  2012-09-04 10:53         ` Richard Earnshaw
@ 2012-09-04 14:31           ` Richard Guenther
  2012-09-04 14:34             ` Richard Earnshaw
       [not found]           ` <CAHFci29uvxehoLBeX_ksucMmLMXP30KJn_fPtrOutSjr=exetg@mail.gmail.com>
  1 sibling, 1 reply; 14+ messages in thread
From: Richard Guenther @ 2012-09-04 14:31 UTC (permalink / raw)
  To: Richard Earnshaw; +Cc: Bin Cheng, Andrew Pinski, gcc-patches

On Tue, Sep 4, 2012 at 12:53 PM, Richard Earnshaw <rearnsha@arm.com> wrote:
> On 04/09/12 11:11, Richard Guenther wrote:
>> On Tue, Sep 4, 2012 at 11:56 AM, Bin Cheng <bin.cheng@arm.com> wrote:
>>>>> -----Original Message-----
>>>>> From: Richard Earnshaw
>>>>> Sent: Thursday, July 26, 2012 9:19 PM
>>>>> To: Andrew Pinski
>>>>> Cc: Bin Cheng; gcc-patches@gcc.gnu.org
>>>>> Subject: Re: [PATCH]Remove duplicate check on BRANCH_COST in
>>>>> fold-const.c
>>>>>
>>>>> On 26/07/12 11:27, Andrew Pinski wrote:
>>>>>> On Thu, Jul 26, 2012 at 3:20 AM, Bin Cheng <bin.cheng@arm.com> wrote:
>>>>>>> Hi,
>>>>>>> This patch removes the duplicate check on BRANCH_COST in
>>>> fold_truth_andor.
>>>>>>> The BRANCH_COST condition removed is a duplicate of the default
>>>>>>> definition of LOGICAL_OP_NON_SHORT_CIRCUIT.
>>>>>>> All current targets (mips and rs6000) that provide non-default
>>>>>>> definitions of LOGICAL_OP_SHORT_CIRCUIT set it to 0, so this patch
>>>>>>> is therefore just a code cleanup and does not change behaviour in
>>>>>>> the
>>>> compiler.
>>>>>>>
>>>>>>> I built mipsel-elf cross compiler and compared newlib/libstdc++
>>>>>>> compiled by the patched/original compilers.
>>>>>>>
>>>>>>> Is it OK?
>>>>>>
>>>>>> Just some history here on this.  The BRANCH COST check was there
>>>>>> before LOGICAL_OP_NON_SHORT_CIRCUIT was added.  I will be submitting
>>>>>> a patch which changes the MIPS definition soon but it will not be
>>>>>> based on the branch cost but rather than another option.  So in the
>>>>>> end it might not be redundant as it is currently.
>>>>>>
>>>>>> Thanks,
>>>>>> Andrew
>>>>>>
>>>>>
>>>>> You can always factor BRANCH_COST into LOGICAL_OP_NON_SHORT_CIRCUIT
>>>>> (as
>>>> the
>>>>> default currently does), so there's no loss of functionality from
>>>>> removing this currently redundant check.  However, the current
>>>>> definition is broken
>>>> in
>>>>> that it makes it impossible to force the compiler to use this
>>>>> optimization when the branch cost is low.
>>>>>
>>>>
>>>
>>> Hi, is this change ok? Or we need more discussion on it?
>>
>> It's not ok (I btw fail to see the patch in this thread).  The current
>> way LOGICAL_OP_NON_SHORT_CIRCUIT is implemented/used should instead
>> be changed to always match the pattern
>>
>>       LOGICAL_OP_NON_SHORT_CIRCUIT
>>       && (BRANCH_COST (optimize_function_for_speed_p (cfun),
>>                     false) >= 2)
>>
>> and the default value of LOGICAL_OP_NON_SHORT_CIRCUIT should be 1,
>> defined in defaults.h (and the docs updated).
>>
>
> That's not going to work for modern ARM cores.  We want to set
> BRANCH_COST to 1 but still have it generate the non-short-circuit code
> (because conditional compares are really cheap.

Then you define LOGICAL_OP_NON_SHORT_CIRCUIT to zero.  The above
would be an identity transform for all targets currently, so "it is not working
for modern ARM cores" anyway.

Richard.

> R.
>
>> Richard.
>>
>>> Thanks very much.
>>>
>>>
>>>
>>
>
>
>
>

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Ping^2: [PATCH]Remove duplicate check on BRANCH_COST in fold-const.c
  2012-09-04 14:31           ` Richard Guenther
@ 2012-09-04 14:34             ` Richard Earnshaw
  2012-09-04 14:59               ` Richard Guenther
  0 siblings, 1 reply; 14+ messages in thread
From: Richard Earnshaw @ 2012-09-04 14:34 UTC (permalink / raw)
  To: Richard Guenther; +Cc: Bin Cheng, Andrew Pinski, gcc-patches

On 04/09/12 15:31, Richard Guenther wrote:
> On Tue, Sep 4, 2012 at 12:53 PM, Richard Earnshaw <rearnsha@arm.com> wrote:
>> On 04/09/12 11:11, Richard Guenther wrote:
>>> On Tue, Sep 4, 2012 at 11:56 AM, Bin Cheng <bin.cheng@arm.com> wrote:
>>>>>> -----Original Message-----
>>>>>> From: Richard Earnshaw
>>>>>> Sent: Thursday, July 26, 2012 9:19 PM
>>>>>> To: Andrew Pinski
>>>>>> Cc: Bin Cheng; gcc-patches@gcc.gnu.org
>>>>>> Subject: Re: [PATCH]Remove duplicate check on BRANCH_COST in
>>>>>> fold-const.c
>>>>>>
>>>>>> On 26/07/12 11:27, Andrew Pinski wrote:
>>>>>>> On Thu, Jul 26, 2012 at 3:20 AM, Bin Cheng <bin.cheng@arm.com> wrote:
>>>>>>>> Hi,
>>>>>>>> This patch removes the duplicate check on BRANCH_COST in
>>>>> fold_truth_andor.
>>>>>>>> The BRANCH_COST condition removed is a duplicate of the default
>>>>>>>> definition of LOGICAL_OP_NON_SHORT_CIRCUIT.
>>>>>>>> All current targets (mips and rs6000) that provide non-default
>>>>>>>> definitions of LOGICAL_OP_SHORT_CIRCUIT set it to 0, so this patch
>>>>>>>> is therefore just a code cleanup and does not change behaviour in
>>>>>>>> the
>>>>> compiler.
>>>>>>>>
>>>>>>>> I built mipsel-elf cross compiler and compared newlib/libstdc++
>>>>>>>> compiled by the patched/original compilers.
>>>>>>>>
>>>>>>>> Is it OK?
>>>>>>>
>>>>>>> Just some history here on this.  The BRANCH COST check was there
>>>>>>> before LOGICAL_OP_NON_SHORT_CIRCUIT was added.  I will be submitting
>>>>>>> a patch which changes the MIPS definition soon but it will not be
>>>>>>> based on the branch cost but rather than another option.  So in the
>>>>>>> end it might not be redundant as it is currently.
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Andrew
>>>>>>>
>>>>>>
>>>>>> You can always factor BRANCH_COST into LOGICAL_OP_NON_SHORT_CIRCUIT
>>>>>> (as
>>>>> the
>>>>>> default currently does), so there's no loss of functionality from
>>>>>> removing this currently redundant check.  However, the current
>>>>>> definition is broken
>>>>> in
>>>>>> that it makes it impossible to force the compiler to use this
>>>>>> optimization when the branch cost is low.
>>>>>>
>>>>>
>>>>
>>>> Hi, is this change ok? Or we need more discussion on it?
>>>
>>> It's not ok (I btw fail to see the patch in this thread).  The current
>>> way LOGICAL_OP_NON_SHORT_CIRCUIT is implemented/used should instead
>>> be changed to always match the pattern
>>>
>>>       LOGICAL_OP_NON_SHORT_CIRCUIT
>>>       && (BRANCH_COST (optimize_function_for_speed_p (cfun),
>>>                     false) >= 2)
>>>
>>> and the default value of LOGICAL_OP_NON_SHORT_CIRCUIT should be 1,
>>> defined in defaults.h (and the docs updated).
>>>
>>
>> That's not going to work for modern ARM cores.  We want to set
>> BRANCH_COST to 1 but still have it generate the non-short-circuit code
>> (because conditional compares are really cheap.
> 
> Then you define LOGICAL_OP_NON_SHORT_CIRCUIT to zero.  The above
> would be an identity transform for all targets currently, so "it is not working
> for modern ARM cores" anyway.
> 

No, that's backwards.  That gives us branches around compares, not
formation of or'ed cflag values that we can then transform into
conditional compares.

R.

> Richard.
> 
>> R.
>>
>>> Richard.
>>>
>>>> Thanks very much.
>>>>
>>>>
>>>>
>>>
>>
>>
>>
>>
> 




^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Ping^2: [PATCH]Remove duplicate check on BRANCH_COST in fold-const.c
  2012-09-04 14:34             ` Richard Earnshaw
@ 2012-09-04 14:59               ` Richard Guenther
  0 siblings, 0 replies; 14+ messages in thread
From: Richard Guenther @ 2012-09-04 14:59 UTC (permalink / raw)
  To: Richard Earnshaw; +Cc: Bin Cheng, Andrew Pinski, gcc-patches

On Tue, Sep 4, 2012 at 4:33 PM, Richard Earnshaw <rearnsha@arm.com> wrote:
> On 04/09/12 15:31, Richard Guenther wrote:
>> On Tue, Sep 4, 2012 at 12:53 PM, Richard Earnshaw <rearnsha@arm.com> wrote:
>>> On 04/09/12 11:11, Richard Guenther wrote:
>>>> On Tue, Sep 4, 2012 at 11:56 AM, Bin Cheng <bin.cheng@arm.com> wrote:
>>>>>>> -----Original Message-----
>>>>>>> From: Richard Earnshaw
>>>>>>> Sent: Thursday, July 26, 2012 9:19 PM
>>>>>>> To: Andrew Pinski
>>>>>>> Cc: Bin Cheng; gcc-patches@gcc.gnu.org
>>>>>>> Subject: Re: [PATCH]Remove duplicate check on BRANCH_COST in
>>>>>>> fold-const.c
>>>>>>>
>>>>>>> On 26/07/12 11:27, Andrew Pinski wrote:
>>>>>>>> On Thu, Jul 26, 2012 at 3:20 AM, Bin Cheng <bin.cheng@arm.com> wrote:
>>>>>>>>> Hi,
>>>>>>>>> This patch removes the duplicate check on BRANCH_COST in
>>>>>> fold_truth_andor.
>>>>>>>>> The BRANCH_COST condition removed is a duplicate of the default
>>>>>>>>> definition of LOGICAL_OP_NON_SHORT_CIRCUIT.
>>>>>>>>> All current targets (mips and rs6000) that provide non-default
>>>>>>>>> definitions of LOGICAL_OP_SHORT_CIRCUIT set it to 0, so this patch
>>>>>>>>> is therefore just a code cleanup and does not change behaviour in
>>>>>>>>> the
>>>>>> compiler.
>>>>>>>>>
>>>>>>>>> I built mipsel-elf cross compiler and compared newlib/libstdc++
>>>>>>>>> compiled by the patched/original compilers.
>>>>>>>>>
>>>>>>>>> Is it OK?
>>>>>>>>
>>>>>>>> Just some history here on this.  The BRANCH COST check was there
>>>>>>>> before LOGICAL_OP_NON_SHORT_CIRCUIT was added.  I will be submitting
>>>>>>>> a patch which changes the MIPS definition soon but it will not be
>>>>>>>> based on the branch cost but rather than another option.  So in the
>>>>>>>> end it might not be redundant as it is currently.
>>>>>>>>
>>>>>>>> Thanks,
>>>>>>>> Andrew
>>>>>>>>
>>>>>>>
>>>>>>> You can always factor BRANCH_COST into LOGICAL_OP_NON_SHORT_CIRCUIT
>>>>>>> (as
>>>>>> the
>>>>>>> default currently does), so there's no loss of functionality from
>>>>>>> removing this currently redundant check.  However, the current
>>>>>>> definition is broken
>>>>>> in
>>>>>>> that it makes it impossible to force the compiler to use this
>>>>>>> optimization when the branch cost is low.
>>>>>>>
>>>>>>
>>>>>
>>>>> Hi, is this change ok? Or we need more discussion on it?
>>>>
>>>> It's not ok (I btw fail to see the patch in this thread).  The current
>>>> way LOGICAL_OP_NON_SHORT_CIRCUIT is implemented/used should instead
>>>> be changed to always match the pattern
>>>>
>>>>       LOGICAL_OP_NON_SHORT_CIRCUIT
>>>>       && (BRANCH_COST (optimize_function_for_speed_p (cfun),
>>>>                     false) >= 2)
>>>>
>>>> and the default value of LOGICAL_OP_NON_SHORT_CIRCUIT should be 1,
>>>> defined in defaults.h (and the docs updated).
>>>>
>>>
>>> That's not going to work for modern ARM cores.  We want to set
>>> BRANCH_COST to 1 but still have it generate the non-short-circuit code
>>> (because conditional compares are really cheap.
>>
>> Then you define LOGICAL_OP_NON_SHORT_CIRCUIT to zero.  The above
>> would be an identity transform for all targets currently, so "it is not working
>> for modern ARM cores" anyway.
>>
>
> No, that's backwards.  That gives us branches around compares, not
> formation of or'ed cflag values that we can then transform into
> conditional compares.

I see.  So I suppose for that reason the original patch is ok.

Thanks,
Richard.

> R.
>
>> Richard.
>>
>>> R.
>>>
>>>> Richard.
>>>>
>>>>> Thanks very much.
>>>>>
>>>>>
>>>>>
>>>>
>>>
>>>
>>>
>>>
>>
>
>
>
>

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Ping^2: [PATCH]Remove duplicate check on BRANCH_COST in fold-const.c
       [not found]           ` <CAHFci29uvxehoLBeX_ksucMmLMXP30KJn_fPtrOutSjr=exetg@mail.gmail.com>
@ 2012-09-04 15:19             ` Bin.Cheng
  2012-09-18  9:37               ` Bin Cheng
       [not found]               ` <505840b1.e785d80a.2337.ffffbe5bSMTPIN_ADDED@mx.google.com>
  0 siblings, 2 replies; 14+ messages in thread
From: Bin.Cheng @ 2012-09-04 15:19 UTC (permalink / raw)
  To: Richard Guenther, gcc-patches; +Cc: Richard Earnshaw

Sorry, I mis-sent this offline.

On Tue, Sep 4, 2012 at 11:00 PM, Bin.Cheng <amker.cheng@gmail.com> wrote:
>>>
>>> It's not ok (I btw fail to see the patch in this thread).  The current
>>> way LOGICAL_OP_NON_SHORT_CIRCUIT is implemented/used should instead
>>> be changed to always match the pattern
>>>
>>>       LOGICAL_OP_NON_SHORT_CIRCUIT
>>>       && (BRANCH_COST (optimize_function_for_speed_p (cfun),
>>>                     false) >= 2)
>>>
>>> and the default value of LOGICAL_OP_NON_SHORT_CIRCUIT should be 1,
>>> defined in defaults.h (and the docs updated).
>>>
>>
>> That's not going to work for modern ARM cores.  We want to set
>> BRANCH_COST to 1 but still have it generate the non-short-circuit code
>> (because conditional compares are really cheap.
>>
>
> Hi Richard,
> For now, LOGICAL_OP_NON_SHORT_CIRCUIT macro is defined as below, which
> is duplicate of the BRANCH_COST condition.
>
> #ifndef LOGICAL_OP_NON_SHORT_CIRCUIT
> #define LOGICAL_OP_NON_SHORT_CIRCUIT \
>   (BRANCH_COST (optimize_function_for_speed_p (cfun), \
>                 false) >= 2)
> #endif
>
> Recently we measured performance on some ARM processors and found it
> would be better to have non-short-circuit optimization while setting
> BRANCH_COST to 1, which is impossible with present codes. So here
> comes this patch as below:
>
> Index: gcc/fold-const.c
> ===================================================================
> --- gcc/fold-const.c    (revision 189835)
> +++ gcc/fold-const.c    (working copy)
> @@ -8443,9 +8443,7 @@
>    if ((tem = fold_truth_andor_1 (loc, code, type, arg0, arg1)) != 0)
>      return tem;
>
> -  if ((BRANCH_COST (optimize_function_for_speed_p (cfun),
> -                   false) >= 2)
> -      && LOGICAL_OP_NON_SHORT_CIRCUIT
> +  if (LOGICAL_OP_NON_SHORT_CIRCUIT
>        && (code == TRUTH_AND_EXPR
>            || code == TRUTH_ANDIF_EXPR
>            || code == TRUTH_OR_EXPR
>
> The purpose is to remove the duplicate check on BRANCH_COST.
>
> As Andrew pointed out that the patch may change behavior if some
> back-ends define the macro independent of BRANCH_COST. After looking
> into the code, there are two uses of the macro in fold-const.c, each
> controls one kind code transformation. The first use is:
>
>   else if (LOGICAL_OP_NON_SHORT_CIRCUIT
>            && lhs != 0 && rhs != 0
>            && (code == TRUTH_ANDIF_EXPR
>                || code == TRUTH_ORIF_EXPR)
>            && operand_equal_p (lhs, rhs, 0))
>
> The second one is:
>
>   if ((BRANCH_COST (optimize_function_for_speed_p (cfun),
>                     false) >= 2)
>       && LOGICAL_OP_NON_SHORT_CIRCUIT
>       && (code == TRUTH_AND_EXPR
>           || code == TRUTH_ANDIF_EXPR
>           || code == TRUTH_OR_EXPR
>           || code == TRUTH_ORIF_EXPR))
>
> I am not sure why the 2nd condition is designed in current way and
> haven't found any useful changelog on it.
> But considering back end can factor BRANCH_COST in
> LOGICAL_OP_NON_SHORT_CIRCUIT or not, we can conclude that the behavior
> will only be changed if some back-end want to control the two
> transformations differently. So the problem becomes whether the 2nd
> condition should be changed. Either way there is scenario cannot be
> covered.
>

And for now,
FTR, only two targets redefine L_O_N_S_C: mips and rs6000.  Both set it
to zero so won't be affected by this change.


-- 
Best Regards.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* RE: Ping^2: [PATCH]Remove duplicate check on BRANCH_COST in fold-const.c
  2012-09-04 15:19             ` Bin.Cheng
@ 2012-09-18  9:37               ` Bin Cheng
       [not found]               ` <505840b1.e785d80a.2337.ffffbe5bSMTPIN_ADDED@mx.google.com>
  1 sibling, 0 replies; 14+ messages in thread
From: Bin Cheng @ 2012-09-18  9:37 UTC (permalink / raw)
  To: 'Bin.Cheng', Richard Guenther, gcc-patches; +Cc: Richard Earnshaw

Ping.

> -----Original Message-----
> From: gcc-patches-owner@gcc.gnu.org [mailto:gcc-patches-owner@gcc.gnu.org]
On
> Behalf Of Bin.Cheng
> Sent: Tuesday, September 04, 2012 11:20 PM
> To: Richard Guenther; gcc-patches@gcc.gnu.org
> Cc: Richard Earnshaw
> Subject: Re: Ping^2: [PATCH]Remove duplicate check on BRANCH_COST in fold-
> const.c
> 
> Sorry, I mis-sent this offline.
> 
> On Tue, Sep 4, 2012 at 11:00 PM, Bin.Cheng <amker.cheng@gmail.com> wrote:
> >>>
> >>> It's not ok (I btw fail to see the patch in this thread).  The
> >>> current way LOGICAL_OP_NON_SHORT_CIRCUIT is implemented/used should
> >>> instead be changed to always match the pattern
> >>>
> >>>       LOGICAL_OP_NON_SHORT_CIRCUIT
> >>>       && (BRANCH_COST (optimize_function_for_speed_p (cfun),
> >>>                     false) >= 2)
> >>>
> >>> and the default value of LOGICAL_OP_NON_SHORT_CIRCUIT should be 1,
> >>> defined in defaults.h (and the docs updated).
> >>>
> >>
> >> That's not going to work for modern ARM cores.  We want to set
> >> BRANCH_COST to 1 but still have it generate the non-short-circuit
> >> code (because conditional compares are really cheap.
> >>
> >
> > Hi Richard,
> > For now, LOGICAL_OP_NON_SHORT_CIRCUIT macro is defined as below, which
> > is duplicate of the BRANCH_COST condition.
> >
> > #ifndef LOGICAL_OP_NON_SHORT_CIRCUIT
> > #define LOGICAL_OP_NON_SHORT_CIRCUIT \
> >   (BRANCH_COST (optimize_function_for_speed_p (cfun), \
> >                 false) >= 2)
> > #endif
> >
> > Recently we measured performance on some ARM processors and found it
> > would be better to have non-short-circuit optimization while setting
> > BRANCH_COST to 1, which is impossible with present codes. So here
> > comes this patch as below:
> >
> > Index: gcc/fold-const.c
> > ===================================================================
> > --- gcc/fold-const.c    (revision 189835)
> > +++ gcc/fold-const.c    (working copy)
> > @@ -8443,9 +8443,7 @@
> >    if ((tem = fold_truth_andor_1 (loc, code, type, arg0, arg1)) != 0)
> >      return tem;
> >
> > -  if ((BRANCH_COST (optimize_function_for_speed_p (cfun),
> > -                   false) >= 2)
> > -      && LOGICAL_OP_NON_SHORT_CIRCUIT
> > +  if (LOGICAL_OP_NON_SHORT_CIRCUIT
> >        && (code == TRUTH_AND_EXPR
> >            || code == TRUTH_ANDIF_EXPR
> >            || code == TRUTH_OR_EXPR
> >
> > The purpose is to remove the duplicate check on BRANCH_COST.
> >
> > As Andrew pointed out that the patch may change behavior if some
> > back-ends define the macro independent of BRANCH_COST. After looking
> > into the code, there are two uses of the macro in fold-const.c, each
> > controls one kind code transformation. The first use is:
> >
> >   else if (LOGICAL_OP_NON_SHORT_CIRCUIT
> >            && lhs != 0 && rhs != 0
> >            && (code == TRUTH_ANDIF_EXPR
> >                || code == TRUTH_ORIF_EXPR)
> >            && operand_equal_p (lhs, rhs, 0))
> >
> > The second one is:
> >
> >   if ((BRANCH_COST (optimize_function_for_speed_p (cfun),
> >                     false) >= 2)
> >       && LOGICAL_OP_NON_SHORT_CIRCUIT
> >       && (code == TRUTH_AND_EXPR
> >           || code == TRUTH_ANDIF_EXPR
> >           || code == TRUTH_OR_EXPR
> >           || code == TRUTH_ORIF_EXPR))
> >
> > I am not sure why the 2nd condition is designed in current way and
> > haven't found any useful changelog on it.
> > But considering back end can factor BRANCH_COST in
> > LOGICAL_OP_NON_SHORT_CIRCUIT or not, we can conclude that the behavior
> > will only be changed if some back-end want to control the two
> > transformations differently. So the problem becomes whether the 2nd
> > condition should be changed. Either way there is scenario cannot be
> > covered.
> >
> 
> And for now,
> FTR, only two targets redefine L_O_N_S_C: mips and rs6000.  Both set it to
> zero so won't be affected by this change.
> 

Hi Richard,
I have tried to explain the change, but I am not sure whether it is agreed
or...

Thanks very much.



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Ping^2: [PATCH]Remove duplicate check on BRANCH_COST in fold-const.c
       [not found]               ` <505840b1.e785d80a.2337.ffffbe5bSMTPIN_ADDED@mx.google.com>
@ 2012-09-18  9:50                 ` Richard Guenther
  2012-09-19  3:11                   ` Bin Cheng
  0 siblings, 1 reply; 14+ messages in thread
From: Richard Guenther @ 2012-09-18  9:50 UTC (permalink / raw)
  To: Bin Cheng; +Cc: Bin.Cheng, gcc-patches, Richard Earnshaw

On Tue, Sep 18, 2012 at 11:32 AM, Bin Cheng <bin.cheng@arm.com> wrote:
> Ping.

I already approved your original patch upthread.

Richard.

>> -----Original Message-----
>> From: gcc-patches-owner@gcc.gnu.org [mailto:gcc-patches-owner@gcc.gnu.org]
> On
>> Behalf Of Bin.Cheng
>> Sent: Tuesday, September 04, 2012 11:20 PM
>> To: Richard Guenther; gcc-patches@gcc.gnu.org
>> Cc: Richard Earnshaw
>> Subject: Re: Ping^2: [PATCH]Remove duplicate check on BRANCH_COST in fold-
>> const.c
>>
>> Sorry, I mis-sent this offline.
>>
>> On Tue, Sep 4, 2012 at 11:00 PM, Bin.Cheng <amker.cheng@gmail.com> wrote:
>> >>>
>> >>> It's not ok (I btw fail to see the patch in this thread).  The
>> >>> current way LOGICAL_OP_NON_SHORT_CIRCUIT is implemented/used should
>> >>> instead be changed to always match the pattern
>> >>>
>> >>>       LOGICAL_OP_NON_SHORT_CIRCUIT
>> >>>       && (BRANCH_COST (optimize_function_for_speed_p (cfun),
>> >>>                     false) >= 2)
>> >>>
>> >>> and the default value of LOGICAL_OP_NON_SHORT_CIRCUIT should be 1,
>> >>> defined in defaults.h (and the docs updated).
>> >>>
>> >>
>> >> That's not going to work for modern ARM cores.  We want to set
>> >> BRANCH_COST to 1 but still have it generate the non-short-circuit
>> >> code (because conditional compares are really cheap.
>> >>
>> >
>> > Hi Richard,
>> > For now, LOGICAL_OP_NON_SHORT_CIRCUIT macro is defined as below, which
>> > is duplicate of the BRANCH_COST condition.
>> >
>> > #ifndef LOGICAL_OP_NON_SHORT_CIRCUIT
>> > #define LOGICAL_OP_NON_SHORT_CIRCUIT \
>> >   (BRANCH_COST (optimize_function_for_speed_p (cfun), \
>> >                 false) >= 2)
>> > #endif
>> >
>> > Recently we measured performance on some ARM processors and found it
>> > would be better to have non-short-circuit optimization while setting
>> > BRANCH_COST to 1, which is impossible with present codes. So here
>> > comes this patch as below:
>> >
>> > Index: gcc/fold-const.c
>> > ===================================================================
>> > --- gcc/fold-const.c    (revision 189835)
>> > +++ gcc/fold-const.c    (working copy)
>> > @@ -8443,9 +8443,7 @@
>> >    if ((tem = fold_truth_andor_1 (loc, code, type, arg0, arg1)) != 0)
>> >      return tem;
>> >
>> > -  if ((BRANCH_COST (optimize_function_for_speed_p (cfun),
>> > -                   false) >= 2)
>> > -      && LOGICAL_OP_NON_SHORT_CIRCUIT
>> > +  if (LOGICAL_OP_NON_SHORT_CIRCUIT
>> >        && (code == TRUTH_AND_EXPR
>> >            || code == TRUTH_ANDIF_EXPR
>> >            || code == TRUTH_OR_EXPR
>> >
>> > The purpose is to remove the duplicate check on BRANCH_COST.
>> >
>> > As Andrew pointed out that the patch may change behavior if some
>> > back-ends define the macro independent of BRANCH_COST. After looking
>> > into the code, there are two uses of the macro in fold-const.c, each
>> > controls one kind code transformation. The first use is:
>> >
>> >   else if (LOGICAL_OP_NON_SHORT_CIRCUIT
>> >            && lhs != 0 && rhs != 0
>> >            && (code == TRUTH_ANDIF_EXPR
>> >                || code == TRUTH_ORIF_EXPR)
>> >            && operand_equal_p (lhs, rhs, 0))
>> >
>> > The second one is:
>> >
>> >   if ((BRANCH_COST (optimize_function_for_speed_p (cfun),
>> >                     false) >= 2)
>> >       && LOGICAL_OP_NON_SHORT_CIRCUIT
>> >       && (code == TRUTH_AND_EXPR
>> >           || code == TRUTH_ANDIF_EXPR
>> >           || code == TRUTH_OR_EXPR
>> >           || code == TRUTH_ORIF_EXPR))
>> >
>> > I am not sure why the 2nd condition is designed in current way and
>> > haven't found any useful changelog on it.
>> > But considering back end can factor BRANCH_COST in
>> > LOGICAL_OP_NON_SHORT_CIRCUIT or not, we can conclude that the behavior
>> > will only be changed if some back-end want to control the two
>> > transformations differently. So the problem becomes whether the 2nd
>> > condition should be changed. Either way there is scenario cannot be
>> > covered.
>> >
>>
>> And for now,
>> FTR, only two targets redefine L_O_N_S_C: mips and rs6000.  Both set it to
>> zero so won't be affected by this change.
>>
>
> Hi Richard,
> I have tried to explain the change, but I am not sure whether it is agreed
> or...
>
> Thanks very much.
>
>
>

^ permalink raw reply	[flat|nested] 14+ messages in thread

* RE: Ping^2: [PATCH]Remove duplicate check on BRANCH_COST in fold-const.c
  2012-09-18  9:50                 ` Richard Guenther
@ 2012-09-19  3:11                   ` Bin Cheng
  0 siblings, 0 replies; 14+ messages in thread
From: Bin Cheng @ 2012-09-19  3:11 UTC (permalink / raw)
  To: 'Richard Guenther'; +Cc: gcc-patches, Richard Earnshaw



> -----Original Message-----
> From: Richard Guenther [mailto:richard.guenther@gmail.com]
> Sent: Tuesday, September 18, 2012 5:50 PM
> To: Bin Cheng
> Cc: Bin.Cheng; gcc-patches@gcc.gnu.org; Richard Earnshaw
> Subject: Re: Ping^2: [PATCH]Remove duplicate check on BRANCH_COST in fold-
> const.c
> 
> On Tue, Sep 18, 2012 at 11:32 AM, Bin Cheng <bin.cheng@arm.com> wrote:
> > Ping.
> 
> I already approved your original patch upthread.
> 
> Richard.
> 

Thanks, committed to trunk.



^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH]Remove duplicate check on BRANCH_COST in fold-const.c
@ 2012-07-26 10:21 Bin Cheng
  0 siblings, 0 replies; 14+ messages in thread
From: Bin Cheng @ 2012-07-26 10:21 UTC (permalink / raw)
  To: gcc-patches

[-- Attachment #1: Type: text/plain, Size: 662 bytes --]

Hi,
This patch removes the duplicate check on BRANCH_COST in fold_truth_andor.
The BRANCH_COST condition removed is a duplicate of the default definition
of LOGICAL_OP_NON_SHORT_CIRCUIT.
All current targets (mips and rs6000) that provide non-default definitions
of LOGICAL_OP_SHORT_CIRCUIT set it to 0, so this patch is therefore just a
code cleanup and does not change behaviour in the compiler.

I built mipsel-elf cross compiler and compared newlib/libstdc++ compiled by
the patched/original compilers.

Is it OK?

Thanks

2012-07-26  Bin Cheng  <bin.cheng@arm.com>

	* fold-const.c (fold_truth_andor) Remove duplicated check on
BRANCH_COST.

[-- Attachment #2: duplicated-check-in-fold-const-20120726.txt --]
[-- Type: text/plain, Size: 556 bytes --]

Index: gcc/fold-const.c
===================================================================
--- gcc/fold-const.c	(revision 189835)
+++ gcc/fold-const.c	(working copy)
@@ -8443,9 +8443,7 @@
   if ((tem = fold_truth_andor_1 (loc, code, type, arg0, arg1)) != 0)
     return tem;
 
-  if ((BRANCH_COST (optimize_function_for_speed_p (cfun),
-		    false) >= 2)
-      && LOGICAL_OP_NON_SHORT_CIRCUIT
+  if (LOGICAL_OP_NON_SHORT_CIRCUIT
       && (code == TRUTH_AND_EXPR
           || code == TRUTH_ANDIF_EXPR
           || code == TRUTH_OR_EXPR

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2012-09-19  3:11 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <50111a4e.c1d3440a.06c3.ffffd750SMTPIN_ADDED@mx.google.com>
2012-07-26 10:27 ` [PATCH]Remove duplicate check on BRANCH_COST in fold-const.c Andrew Pinski
2012-07-26 13:19   ` Richard Earnshaw
2012-08-13 10:03     ` Ping: " Bin Cheng
2012-09-04 10:00       ` Ping^2: " Bin Cheng
     [not found]     ` <5045d11d.85d2d80a.7762.ffffe452SMTPIN_ADDED@mx.google.com>
2012-09-04 10:12       ` Richard Guenther
2012-09-04 10:53         ` Richard Earnshaw
2012-09-04 14:31           ` Richard Guenther
2012-09-04 14:34             ` Richard Earnshaw
2012-09-04 14:59               ` Richard Guenther
     [not found]           ` <CAHFci29uvxehoLBeX_ksucMmLMXP30KJn_fPtrOutSjr=exetg@mail.gmail.com>
2012-09-04 15:19             ` Bin.Cheng
2012-09-18  9:37               ` Bin Cheng
     [not found]               ` <505840b1.e785d80a.2337.ffffbe5bSMTPIN_ADDED@mx.google.com>
2012-09-18  9:50                 ` Richard Guenther
2012-09-19  3:11                   ` Bin Cheng
2012-07-26 10:21 Bin Cheng

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).