Re: Legal paperwork for GCC contributions

2014-11-24 Thread Martin Jambor
On Sun, Nov 23, 2014 at 06:48:53PM -0500, Lawrence Velázquez wrote:
> Hi,
> 
> I recently contributed some fixes against GCC trunk, gcc-4_9-branch, and
> gcc-4_8-branch for which I need the requisite legal paperwork.
> 
> However, I'd like to backport these particular fixes to the MacPorts
> Project's ports of Apple GCC 4.2 and LLVM-GCC 4.2, which are licensed
> under "version 2, or (at your option) any later version" of the GPL. We
> would like the software provided by these ports to remain
> GPLv2-licensed.
> 
> Given this, what would be the best way for me to handle copyright?

If you are the only author of the stuff you want to backport, I
believe you do not need to ask any permission from anyone.  Donating
your own work to a FSF project does not prevent you from contributing
it to a different project, even under a different license (IIUC, for
example the go front-end works this way too).  Of course, you must not
include anybody else's substantial piece in the backport.

Martin


Re: Legal paperwork for GCC contributions

2014-11-24 Thread Joern Rennecke
On 24 November 2014 at 10:58, Martin Jambor  wrote:
> On Sun, Nov 23, 2014 at 06:48:53PM -0500, Lawrence Velázquez wrote:
>> Hi,
>>
>> I recently contributed some fixes against GCC trunk, gcc-4_9-branch, and
>> gcc-4_8-branch for which I need the requisite legal paperwork.
>>
>> However, I'd like to backport these particular fixes to the MacPorts
>> Project's ports of Apple GCC 4.2 and LLVM-GCC 4.2, which are licensed
>> under "version 2, or (at your option) any later version" of the GPL. We
>> would like the software provided by these ports to remain
>> GPLv2-licensed.
>>
>> Given this, what would be the best way for me to handle copyright?
>
> If you are the only author of the stuff you want to backport, I
> believe you do not need to ask any permission from anyone.  Donating
> your own work to a FSF project does not prevent you from contributing
> it to a different project, even under a different license (IIUC, for
> example the go front-end works this way too).  Of course, you must not
> include anybody else's substantial piece in the backport.

It doesn't prevent you from doing it, but you should give the FSF
notice beforehand (i.e. before the other usage, unless that has
already happened) that you intend to use your code in another project
under a different license.

Otherwise, the FSF would have no sure way to tell valid re-use of own
code by the author from Copyright/left infringement (AKA GPL violations).

IIRC, there is a passus in the Copyright assignment form that spells
out what you should do.


RE: Optimized Allocation of Argument registers

2014-11-24 Thread Ajit Kumar Agarwal
All:

The optimization of reducing save and restore of the callee and caller saved 
register has been the attention Of
increasing the performance of the benchmark. The callee saved registers is 
saved at the entry and restore at the 
exit of the procedure if the register is reused inside the procedure whereas 
the caller save registers at the Caller site
is saved before the call and the restore after the variable is live and spans 
through the call.

The GCC port has done some optimization whereas the call-used registers are 
live inside the procedure and has been 
set as 1 bit then it will not be saved and restored. This is based on the data 
flow analysis.

The callee saved registers is useful when there all multiple calls in the call 
graph whereas the caller save registers are 
useful if the call is the leaf procedure then the saving before the call and 
restore after the call will be useful  and increases
 the performance.

By traversing the call graph in depth-first-order and the bottom-up approach we 
can propagate the save and restore
At the procedure entry and exit to the upper regions of the call graph which 
reduces the save and restore at all the lower
Regions across the various lower calls. These decision can be made based on the 
frequency of the call in the call graph as 
Proposed by Fred Chow.

Another approach to reducing the save and restore at the procedure entry and 
exit is moving the save and restore from
The procedure entry to the active regions where the variable is Live inside the 
procedure based on the data flow analysis
And thus improve the performance of many benchmarks as proposed by Fred Chow.

The propagation of save and restore from the lower regions of the call graph to 
the upper regions is not implemented in 
The GCC framework and also the moving the save and restore to the active region 
of Liveness inside the procedure from 
The entry and exit is not implemented inside the GCC framework. Can this be 
proposed and implemented in GCC framework?

For the open procedure whereas the indirect calls, recursive calls and the 
external linkage calls cannot be optimized and in 
The open case the save and restore at the entry and exit of the procedure is 
applied. But for the open procedure if all the 
Lower calls in the call-graph is closed and resolved through call-graph, the 
save and restore can be propagate to the upper
Region in the open procedures from the lower region of the calls which are 
closed and resolved. This can also improve the
Performance of many benchmarks and can this be proposed and implemented in GCC 
framework?

Let me know what do you think.

Thanks & Regards
Ajit 

-Original Message-
From: Ajit Kumar Agarwal 
Sent: Tuesday, November 18, 2014 7:01 PM
To: 'Vladimir Makarov'; gcc Mailing List
Cc: Vinod Kathail; Shail Aditya Gupta; Vidhumouli Hunsigida; Nagaraju Mekala
Subject: RE: Optimized Allocation of Argument registers



-Original Message-
From: Vladimir Makarov [mailto:vmaka...@redhat.com]
Sent: Tuesday, November 18, 2014 1:57 AM
To: Ajit Kumar Agarwal; gcc Mailing List
Cc: Vinod Kathail; Shail Aditya Gupta; Vidhumouli Hunsigida; Nagaraju Mekala
Subject: Re: Optimized Allocation of Argument registers

On 2014-11-17 8:13 AM, Ajit Kumar Agarwal wrote:
> Hello All:
>
> I was looking at the optimized usage and allocation to argument registers. 
> There are two aspects to it as follows.
>
> 1. We need to specify the argument registers as followed by ABI in the target 
> specific code. Based on the function
>   argument registers defined in the target dependent code the function 
> argument registers are passed. If the
>   number of argument registers defined in the Architecture is large say 6/8 
> function argument registers.
> Most of the time in the benchmarks we don't pass so many arguments and the 
> number of arguments passed
>   is quite less. Since we reserve the function arguments as specified 
> in the target specific code for the given architecture, leads to unoptimized 
> usage as this function argument registers will not be used in the function.
> Thus we need to steal some of the arguments registers and have the 
> usage of those in the function depending on the support of the number of 
> function argument registers. The stealing of function argument registers will
>   lead more number of registers available that are to be used in the function 
> and leading to less spill and fetch.
>

>>The argument registers should be not reserved.  They should be present in RTL 
>>and RA allocator will figure out itself when it can use them. 
>>That is how other ports work.

Thanks Vladimir for Clarifications.

> 2. The other aspect of the function argument registers is not spill 
> and fetch the argument registers as they are live across the function 
> call. But the liveness is limited to certain point of the called 
> function after that point the function argument registers are not live 
> and can be used inside the called function. Oth

Re: Optimized Allocation of Argument registers

2014-11-24 Thread Umesh Kalappa
Ajit,

Please check it out  the -fshrink-wrap option.


~Umesh

On Mon, Nov 24, 2014 at 5:17 PM, Ajit Kumar Agarwal
 wrote:
> All:
>
> The optimization of reducing save and restore of the callee and caller saved 
> register has been the attention Of
> increasing the performance of the benchmark. The callee saved registers is 
> saved at the entry and restore at the
> exit of the procedure if the register is reused inside the procedure whereas 
> the caller save registers at the Caller site
> is saved before the call and the restore after the variable is live and spans 
> through the call.
>
> The GCC port has done some optimization whereas the call-used registers are 
> live inside the procedure and has been
> set as 1 bit then it will not be saved and restored. This is based on the 
> data flow analysis.
>
> The callee saved registers is useful when there all multiple calls in the 
> call graph whereas the caller save registers are
> useful if the call is the leaf procedure then the saving before the call and 
> restore after the call will be useful  and increases
>  the performance.
>
> By traversing the call graph in depth-first-order and the bottom-up approach 
> we can propagate the save and restore
> At the procedure entry and exit to the upper regions of the call graph which 
> reduces the save and restore at all the lower
> Regions across the various lower calls. These decision can be made based on 
> the frequency of the call in the call graph as
> Proposed by Fred Chow.
>
> Another approach to reducing the save and restore at the procedure entry and 
> exit is moving the save and restore from
> The procedure entry to the active regions where the variable is Live inside 
> the procedure based on the data flow analysis
> And thus improve the performance of many benchmarks as proposed by Fred Chow.
>
> The propagation of save and restore from the lower regions of the call graph 
> to the upper regions is not implemented in
> The GCC framework and also the moving the save and restore to the active 
> region of Liveness inside the procedure from
> The entry and exit is not implemented inside the GCC framework. Can this be 
> proposed and implemented in GCC framework?
>
> For the open procedure whereas the indirect calls, recursive calls and the 
> external linkage calls cannot be optimized and in
> The open case the save and restore at the entry and exit of the procedure is 
> applied. But for the open procedure if all the
> Lower calls in the call-graph is closed and resolved through call-graph, the 
> save and restore can be propagate to the upper
> Region in the open procedures from the lower region of the calls which are 
> closed and resolved. This can also improve the
> Performance of many benchmarks and can this be proposed and implemented in 
> GCC framework?
>
> Let me know what do you think.
>
> Thanks & Regards
> Ajit
>
> -Original Message-
> From: Ajit Kumar Agarwal
> Sent: Tuesday, November 18, 2014 7:01 PM
> To: 'Vladimir Makarov'; gcc Mailing List
> Cc: Vinod Kathail; Shail Aditya Gupta; Vidhumouli Hunsigida; Nagaraju Mekala
> Subject: RE: Optimized Allocation of Argument registers
>
>
>
> -Original Message-
> From: Vladimir Makarov [mailto:vmaka...@redhat.com]
> Sent: Tuesday, November 18, 2014 1:57 AM
> To: Ajit Kumar Agarwal; gcc Mailing List
> Cc: Vinod Kathail; Shail Aditya Gupta; Vidhumouli Hunsigida; Nagaraju Mekala
> Subject: Re: Optimized Allocation of Argument registers
>
> On 2014-11-17 8:13 AM, Ajit Kumar Agarwal wrote:
>> Hello All:
>>
>> I was looking at the optimized usage and allocation to argument registers. 
>> There are two aspects to it as follows.
>>
>> 1. We need to specify the argument registers as followed by ABI in the 
>> target specific code. Based on the function
>>   argument registers defined in the target dependent code the function 
>> argument registers are passed. If the
>>   number of argument registers defined in the Architecture is large say 6/8 
>> function argument registers.
>> Most of the time in the benchmarks we don't pass so many arguments and the 
>> number of arguments passed
>>   is quite less. Since we reserve the function arguments as specified
>> in the target specific code for the given architecture, leads to unoptimized 
>> usage as this function argument registers will not be used in the function.
>> Thus we need to steal some of the arguments registers and have the
>> usage of those in the function depending on the support of the number of 
>> function argument registers. The stealing of function argument registers will
>>   lead more number of registers available that are to be used in the 
>> function and leading to less spill and fetch.
>>
>
>>>The argument registers should be not reserved.  They should be present in 
>>>RTL and RA allocator will figure out itself when it can use them.
>>>That is how other ports work.
>
> Thanks Vladimir for Clarifications.
>
>> 2. The other aspect of the function argument register

Re: GCC 5 fallout: libdata/pkgconfig/libgcj-5.0.pc

2014-11-24 Thread Gerald Pfeifer
On Saturday 2014-08-23 12:38, Gerald Pfeifer wrote:
> Packaging last week's GCC 5 snapshot, I ran into a couple of issues
> due to the version number change.
> 
> One is this: We are still creating libdata/pkgconfig/libgcj-5.0.pc
> as we used to create libgcj-4.10.pc.
> 
> Shouldn't that be libgcj-5.pc now?

Ping.  

If it was 4.10 before, should it really not be just 5 now?

Gerald


Re: GCC 5 fallout: libdata/pkgconfig/libgcj-5.0.pc

2014-11-24 Thread Jeff Law

On 11/24/14 09:00, Gerald Pfeifer wrote:

On Saturday 2014-08-23 12:38, Gerald Pfeifer wrote:

Packaging last week's GCC 5 snapshot, I ran into a couple of issues
due to the version number change.

One is this: We are still creating libdata/pkgconfig/libgcj-5.0.pc
as we used to create libgcj-4.10.pc.

Shouldn't that be libgcj-5.pc now?


Ping.

If it was 4.10 before, should it really not be just 5 now?

Yes.  I wasn't even aware that we had a libgcj-.pc

I guess I ought to eliminate my objection to bringing in pkg-config 
dependencies into the JIT with that new knowledge.  Though in the case 
of libgcj we just install the file and don't, as far as I can tell, 
actually depend on pkg-config.


jeff


Pushing recent libtool fix to binutils-gdb and newlib/libgloss

2014-11-24 Thread FX
*ping*

Didn’t get any response to my question so far…


>> Thanks everyone for the comments and review.
>> Committed as r217366
> 
> I cannot push the change to binutils-gdb as I don’t have write access there.
> Also, Joseph Myers said I needed to commit to newlib/libgloss, but their 
> webpage only mentions read-only CVS.
> 
> Could someone do it for me?
> 
> Thanks,
> FX
> 
> 
> 
> 
> commit 8d25b840ce688bfa601b0ad5f53c4185627c8975
> Author: FX 
> Date:   Wed Nov 12 13:26:06 2014 +0100
> 
>* libtool.m4: Fix globbing of darwin versions.
> 
> diff --git a/ChangeLog b/ChangeLog
> index 32b3c15..5ed8242 100644
> --- a/ChangeLog
> +++ b/ChangeLog
> @@ -1,3 +1,7 @@
> +2014-11-12  Francois-Xavier Coudert  
> +
> +   * libtool.m4: Fix globbing of darwin versions.
> +
> 2014-10-15  Tristan Gingold  
> 
>* src-release.sh (do_proto_toplev): Configure with --target.
> diff --git a/libtool.m4 b/libtool.m4
> index 797468f..c96d80c 100644
> --- a/libtool.m4
> +++ b/libtool.m4
> @@ -1006,7 +1006,7 @@ _LT_EOF
>   case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
>10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
>  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
> -   10.[[012]]*)
> +   10.[[012]][[,.]]*)
>  _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined 
> ${wl}sup
>10.*)
>  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
> 



Re: Pushing recent libtool fix to binutils-gdb and newlib/libgloss

2014-11-24 Thread H.J. Lu
Done:

https://sourceware.org/ml/binutils/2014-11/msg00318.html

On Mon, Nov 24, 2014 at 9:04 AM, FX  wrote:
> *ping*
>
> Didn’t get any response to my question so far…
>
>
>>> Thanks everyone for the comments and review.
>>> Committed as r217366
>>
>> I cannot push the change to binutils-gdb as I don’t have write access there.
>> Also, Joseph Myers said I needed to commit to newlib/libgloss, but their 
>> webpage only mentions read-only CVS.
>>
>> Could someone do it for me?
>>
>> Thanks,
>> FX
>>
>>
>>
>>
>> commit 8d25b840ce688bfa601b0ad5f53c4185627c8975
>> Author: FX 
>> Date:   Wed Nov 12 13:26:06 2014 +0100
>>
>>* libtool.m4: Fix globbing of darwin versions.
>>
>> diff --git a/ChangeLog b/ChangeLog
>> index 32b3c15..5ed8242 100644
>> --- a/ChangeLog
>> +++ b/ChangeLog
>> @@ -1,3 +1,7 @@
>> +2014-11-12  Francois-Xavier Coudert  
>> +
>> +   * libtool.m4: Fix globbing of darwin versions.
>> +
>> 2014-10-15  Tristan Gingold  
>>
>>* src-release.sh (do_proto_toplev): Configure with --target.
>> diff --git a/libtool.m4 b/libtool.m4
>> index 797468f..c96d80c 100644
>> --- a/libtool.m4
>> +++ b/libtool.m4
>> @@ -1006,7 +1006,7 @@ _LT_EOF
>>   case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
>>10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
>>  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
>> -   10.[[012]]*)
>> +   10.[[012]][[,.]]*)
>>  _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined 
>> ${wl}sup
>>10.*)
>>  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
>>
>



-- 
H.J.


Re: Pushing recent libtool fix to binutils-gdb and newlib/libgloss

2014-11-24 Thread FX
> Done:
> https://sourceware.org/ml/binutils/2014-11/msg00318.html

Thanks!