Re: [gimplefe] Parsing PHI functions

2016-06-29 Thread Richard Biener
On Tue, Jun 28, 2016 at 4:16 PM, Prasad Ghangal
 wrote:
> Hi,
>
> For handling PHI, it expects cfg to be built before. So I was
> wondering how are we going to handle this? Do we need to build cfg
> while parsing only?

For handling PHIs we need to have a CFG in the sense that the GIMPLE PHI
data structures are built in a way to have the PHI argument index correspond
to CFG predecessor edge index.  As we'd like to parse phis with args
corresponding
to predecessor block labels, like

a:
  i_1 = 1;
  goto p;

b:
  i_2 = 2;
  goto p;

p:
  i_3 = __PHI (a: i_1, b: i_2);

I think that a possibility is to leave those PHIs as internal function
with label / arg
pairs and have CFG construction lower them to real PHIs.

Of course the parser could as well build a CFG on its own but I think
we should use
the easy way out for now.

Thus you'd have to modify CFG construction a bit to lower the internal
function calls.

Richard.
>
>
>
> Thanks,
> Prasad


Re: Missing git tags for released GCC

2016-06-29 Thread Martin Liška
On 12/19/2014 05:16 PM, H.J. Lu wrote:
> On Tue, Nov 25, 2014 at 3:12 AM, Jonathan Wakely  
> wrote:
>> On 16 November 2014 at 15:51, H.J. Lu wrote:
>>> Hi,
>>>
>>> Git tags are missing for GCC 4.9.1, 4.9.2, 4.8.3 and 4.7.4.
>>
>> I can't create the tags but these are the release commits:
>>
>> git tag gcc-4_9_2-release c1283af40b65f1ad862cf5b27e2d9ed10b2076b6
>> git tag gcc-4_9_1-release c6fa1b412663593960e6240eb66d82fa41a1fa0b
>> git tag gcc-4_8_3-release 6bbf0dec66c0e719b06cd2fe67559fda6df09000
>> git tag gcc-4_7_4-release ae10eb82fe34c18640ad65c2ab94ffc53f349315
> 
> I added them together with gcc-4_8_4-release.
> 
> Thanks.
> 

Can I ask you for adding missing tag for 5.4.1 
(32c3b88e8ced4b6d022484a73c40f3d663e20fd4) ?

Thanks,
Martin





Re: Missing git tags for released GCC

2016-06-29 Thread Martin Liška
On 06/29/2016 12:13 PM, Martin Liška wrote:
> Can I ask you for adding missing tag for 5.4.1 
> (32c3b88e8ced4b6d022484a73c40f3d663e20fd4) ?

I mean 5.4.0.

Thanks


Re: [gimplefe] hacking pass manager

2016-06-29 Thread Prathamesh Kulkarni
On 18 June 2016 at 12:02, Prasad Ghangal  wrote:
> Hi,
>
> I tried hacking pass manager to execute only given passes. For this I
> am adding new member as opt_pass *custom_pass_list to the function
> structure to store passes need to execute and providing the
> custom_pass_list to execute_pass_list() function instead of all passes
>
> for test case like-
>
> int a;
> void __GIMPLE (execute ("tree-ccp1", "tree-fre1")) foo()
> {
> bb_1:
>   a = 1 + a;
> }
>
> it will execute only given passes i.e. ccp1 and fre1 pass on the function
>
> and for test case like -
>
> int a;
> void __GIMPLE (startwith ("tree-ccp1")) foo()
> {
> bb_1:
>   a = 1 + a;
> }
>
> it will act as a entry point to the pipeline and will execute passes
> starting from given pass.
Bike-shedding:
Would it make sense to have syntax for defining pass ranges to execute ?
for instance:
void __GIMPLE(execute (pass_start : pass_end))
which would execute all the passes within range [pass_start, pass_end],
which would be convenient if the range is large.

Thanks,
Prathamesh
>
>
>
> Thanks,
> Prasad Ghangal


Re: [gimplefe] hacking pass manager

2016-06-29 Thread Richard Biener
On June 29, 2016 6:20:29 PM GMT+02:00, Prathamesh Kulkarni 
 wrote:
>On 18 June 2016 at 12:02, Prasad Ghangal 
>wrote:
>> Hi,
>>
>> I tried hacking pass manager to execute only given passes. For this I
>> am adding new member as opt_pass *custom_pass_list to the function
>> structure to store passes need to execute and providing the
>> custom_pass_list to execute_pass_list() function instead of all
>passes
>>
>> for test case like-
>>
>> int a;
>> void __GIMPLE (execute ("tree-ccp1", "tree-fre1")) foo()
>> {
>> bb_1:
>>   a = 1 + a;
>> }
>>
>> it will execute only given passes i.e. ccp1 and fre1 pass on the
>function
>>
>> and for test case like -
>>
>> int a;
>> void __GIMPLE (startwith ("tree-ccp1")) foo()
>> {
>> bb_1:
>>   a = 1 + a;
>> }
>>
>> it will act as a entry point to the pipeline and will execute passes
>> starting from given pass.
>Bike-shedding:
>Would it make sense to have syntax for defining pass ranges to execute
>?
>for instance:
>void __GIMPLE(execute (pass_start : pass_end))
>which would execute all the passes within range [pass_start, pass_end],
>which would be convenient if the range is large.

But it would rely on a particular pass pipeline, f.e. pass-start appearing 
before pass-end.

Currently control doesn't work 100% as it only replaces all_optimizations but 
not lowering passes or early opts, nor IPA opts.

Richard.

>Thanks,
>Prathamesh
>>
>>
>>
>> Thanks,
>> Prasad Ghangal




Re: [gimplefe] hacking pass manager

2016-06-29 Thread Prasad Ghangal
On 29 June 2016 at 22:15, Richard Biener  wrote:
> On June 29, 2016 6:20:29 PM GMT+02:00, Prathamesh Kulkarni 
>  wrote:
>>On 18 June 2016 at 12:02, Prasad Ghangal 
>>wrote:
>>> Hi,
>>>
>>> I tried hacking pass manager to execute only given passes. For this I
>>> am adding new member as opt_pass *custom_pass_list to the function
>>> structure to store passes need to execute and providing the
>>> custom_pass_list to execute_pass_list() function instead of all
>>passes
>>>
>>> for test case like-
>>>
>>> int a;
>>> void __GIMPLE (execute ("tree-ccp1", "tree-fre1")) foo()
>>> {
>>> bb_1:
>>>   a = 1 + a;
>>> }
>>>
>>> it will execute only given passes i.e. ccp1 and fre1 pass on the
>>function
>>>
>>> and for test case like -
>>>
>>> int a;
>>> void __GIMPLE (startwith ("tree-ccp1")) foo()
>>> {
>>> bb_1:
>>>   a = 1 + a;
>>> }
>>>
>>> it will act as a entry point to the pipeline and will execute passes
>>> starting from given pass.
>>Bike-shedding:
>>Would it make sense to have syntax for defining pass ranges to execute
>>?
>>for instance:
>>void __GIMPLE(execute (pass_start : pass_end))
>>which would execute all the passes within range [pass_start, pass_end],
>>which would be convenient if the range is large.
>
> But it would rely on a particular pass pipeline, f.e. pass-start appearing 
> before pass-end.
>
> Currently control doesn't work 100% as it only replaces all_optimizations but 
> not lowering passes or early opts, nor IPA opts.
>

Each pass needs GIMPLE in some specific form. So I am letting lowering
and early opt passes to execute. I think we have to execute some
passes (like cfg) anyway to represent GIMPLE into proper form

> Richard.
>
>>Thanks,
>>Prathamesh
>>>
>>>
>>>
>>> Thanks,
>>> Prasad Ghangal
>
>


gcc-4.9-20160629 is now available

2016-06-29 Thread gccadmin
Snapshot gcc-4.9-20160629 is now available on
  ftp://gcc.gnu.org/pub/gcc/snapshots/4.9-20160629/
and on various mirrors, see http://gcc.gnu.org/mirrors.html for details.

This snapshot has been generated from the GCC 4.9 SVN branch
with the following options: svn://gcc.gnu.org/svn/gcc/branches/gcc-4_9-branch 
revision 237862

You'll find:

 gcc-4.9-20160629.tar.bz2 Complete GCC

  MD5=90d5da05e2f3f9245c9ef234ac7067a1
  SHA1=8e28c08446d16ff078a04dbf2c99b089962b423c

Diffs from 4.9-20160622 are available in the diffs/ subdirectory.

When a particular snapshot is ready for public consumption the LATEST-4.9
link is updated and a message is sent to the gcc list.  Please do not use
a snapshot before it has been announced that way.