GCC 5 Status Report (2015-01-19), Trunk in Stage 4

2015-01-19 Thread Richard Biener

Status
==

The trunk is now in "Stage 4" which means it is open for regression
and documentation fixes only, like if it were a release branch.

Please concentrate on getting P1 bugs fixed and provide help in
confirming and analyzing UNCONFIRMED bugs.  For non-primary,
non-secondary targets important bugs are not flagged with high
priority - instead target maintainers have to ensure themselves
that the GCC 5 release will be in proper shape for them (same
applies to non-C/C++ frontends and runtime).

Please also make sure to mark bugs as regressions if appropriate,
always filling out the known-to-work and known-to-fail fields.


Quality Data


Priority  #   Change from last report
---   ---
P1   32-   7
P2   97-   1
P3   32-  16
---   ---
Total   161-  24


Previous Report
===

https://gcc.gnu.org/ml/gcc/2015-01/msg00032.html


Re: organization of optimization options in manual

2015-01-19 Thread Jeff Law

On 01/17/15 07:34, Gary Funck wrote:

On 01/14/15 23:15:59, Jeff Law wrote:

Sounds good.  I think just starting with the list & creating the buckets
with the list.  Then post here and we'll iterate and try to nail that down
before you start moving everything in the .texi file.


Something to consider, if the optimization options are re-worked:
Arrange the -O options such that -O1 can be described by a
distinct set of specific optimizations enabled (or disabled)
in addition to -O0, and -O2 would be described as a composite
of specific optimizations applied to -O1 and so on. (This
might require the addition of new optimization options.)
For -O1 to -O2 and -O2 to -O3, that makes sense.  However, -O0 to -O1 
isn't something we can do this for right now as there are still many 
things that -O1 turns on that are not flag controlled.


Whether or not to make all those bits individually controllable is a 
subject of debate.  Personally, I think we have too many options, so my 
inclination would not be to make all those bits individually 
controllable.  Others may have different opinions.


jeff



Re: GCC 5 Status Report (2015-01-19), Trunk in Stage 4

2015-01-19 Thread Jonathan Wakely
On 19 January 2015 at 09:17, Richard Biener wrote:
>
> Status
> ==
>
> The trunk is now in "Stage 4" which means it is open for regression
> and documentation fixes only, like if it were a release branch.
>
> Please concentrate on getting P1 bugs fixed and provide help in
> confirming and analyzing UNCONFIRMED bugs.  For non-primary,
> non-secondary targets important bugs are not flagged with high
> priority - instead target maintainers have to ensure themselves
> that the GCC 5 release will be in proper shape for them (same
> applies to non-C/C++ frontends and runtime).
>
> Please also make sure to mark bugs as regressions if appropriate,
> always filling out the known-to-work and known-to-fail fields.
>
>
> Quality Data
> 
>
> Priority  #   Change from last report
> ---   ---
> P1   32-   7
> P2   97-   1
> P3   32-  16
> ---   ---
> Total   161-  24
>
>
> Previous Report
> ===
>
> https://gcc.gnu.org/ml/gcc/2015-01/msg00032.html

I would like to commit these two patches which complete the C++11
library implementation:

https://gcc.gnu.org/ml/gcc-patches/2015-01/msg01694.html
https://gcc.gnu.org/ml/gcc-patches/2015-01/msg01648.html

And this one to complete C++14 library implementation:

https://gcc.gnu.org/ml/gcc-patches/2015-01/msg01704.html

This one is tiny, and only affects the  header,
which is, as the name suggests, experimental:

https://gcc.gnu.org/ml/gcc-patches/2015-01/msg01684.html

OK?

(After that I will stop changing things and fix the regressions!)


colors in `-fsanitize=bounds' and UBSAN_OPTIONS

2015-01-19 Thread Alexander Klimov
I compile and run my program inside Emacs (M-x compile) with 
gcc 5.0.0 20150112 using `-fsanitize=bounds'. Although 
this Emacs buffer is technically a tty, but it is `dumb' and does not 
handle colors properly.

The gcc info concerning `-fsanitize=address' hints that there is a 
parameter ASAN_OPTIONS and the referenced wiki of address-sanitizer 
says that this environment variable can be used to disable the colors. 
Unfortunately and very confusingly, this hint does not help with 
`-fsanitize=bounds', since it uses UBSAN_OPTIONS instead.

I guess the gcc info should be updated to mention UBSAN_OPTIONS.

It would be nice to port the terminal color capability detection code 
from gcc to sanitizer, since gcc itself colorizes the error messages 
properly: by default the colors are on in `xterm', and off in `dumb'.

-- 
Regards,
ASK


Re: GCC 5 Status Report (2015-01-19), Trunk in Stage 4

2015-01-19 Thread Ulrich Drepper
On Mon, Jan 19, 2015 at 12:32 PM, Jonathan Wakely  wrote:
> I would like to commit these two patches which complete the C++11
> library implementation:

I would definitely be in favor.


> https://gcc.gnu.org/ml/gcc-patches/2015-01/msg01694.html

Just a nit.  Why wouldn't you check the value of the variable after
the assignment in the test case?


Re: GCC 5 Status Report (2015-01-19), Trunk in Stage 4

2015-01-19 Thread Jonathan Wakely
On 19 January 2015 at 18:05, Ulrich Drepper wrote:
>> https://gcc.gnu.org/ml/gcc-patches/2015-01/msg01694.html
>
> Just a nit.  Why wouldn't you check the value of the variable after
> the assignment in the test case?

Umm, just because I'm dumb? :-)
I'll make that change to my local branch, thanks.


Re: GCC 5 Status Report (2015-01-19), Trunk in Stage 4

2015-01-19 Thread Jakub Jelinek
On Mon, Jan 19, 2015 at 05:32:39PM +, Jonathan Wakely wrote:
> I would like to commit these two patches which complete the C++11
> library implementation:
> 
> https://gcc.gnu.org/ml/gcc-patches/2015-01/msg01694.html
> https://gcc.gnu.org/ml/gcc-patches/2015-01/msg01648.html
> 
> And this one to complete C++14 library implementation:
> 
> https://gcc.gnu.org/ml/gcc-patches/2015-01/msg01704.html
> 
> This one is tiny, and only affects the  header,
> which is, as the name suggests, experimental:
> 
> https://gcc.gnu.org/ml/gcc-patches/2015-01/msg01684.html
> 
> OK?

I think this is worth making an exception for it.
So ok from me, but please give Richard and/or Joseph a chance to chime in if
they disagree.

Jakub


Re: GCC 5 Status Report (2015-01-19), Trunk in Stage 4

2015-01-19 Thread H.J. Lu
On Mon, Jan 19, 2015 at 1:17 AM, Richard Biener  wrote:
>
> Status
> ==
>
> The trunk is now in "Stage 4" which means it is open for regression
> and documentation fixes only, like if it were a release branch.
>
> Please concentrate on getting P1 bugs fixed and provide help in
> confirming and analyzing UNCONFIRMED bugs.  For non-primary,
> non-secondary targets important bugs are not flagged with high
> priority - instead target maintainers have to ensure themselves
> that the GCC 5 release will be in proper shape for them (same
> applies to non-C/C++ frontends and runtime).
>
> Please also make sure to mark bugs as regressions if appropriate,
> always filling out the known-to-work and known-to-fail fields.
>
>
> Quality Data
> 
>
> Priority  #   Change from last report
> ---   ---
> P1   32-   7
> P2   97-   1
> P3   32-  16
> ---   ---
> Total   161-  24
>
>
> Previous Report
> ===
>
> https://gcc.gnu.org/ml/gcc/2015-01/msg00032.html

Can we make an exception for

https://gcc.gnu.org/ml/gcc-patches/2015-01/msg00956.html

It was originally submitted in November, 2013:

https://gcc.gnu.org/ml/gcc-patches/2013-11/msg01515.html

-- 
H.J.


Re: GCC 5 Status Report (2015-01-19), Trunk in Stage 4

2015-01-19 Thread Joseph Myers
On Mon, 19 Jan 2015, Jakub Jelinek wrote:

> On Mon, Jan 19, 2015 at 05:32:39PM +, Jonathan Wakely wrote:
> > I would like to commit these two patches which complete the C++11
> > library implementation:
> > 
> > https://gcc.gnu.org/ml/gcc-patches/2015-01/msg01694.html
> > https://gcc.gnu.org/ml/gcc-patches/2015-01/msg01648.html
> > 
> > And this one to complete C++14 library implementation:
> > 
> > https://gcc.gnu.org/ml/gcc-patches/2015-01/msg01704.html
> > 
> > This one is tiny, and only affects the  header,
> > which is, as the name suggests, experimental:
> > 
> > https://gcc.gnu.org/ml/gcc-patches/2015-01/msg01684.html
> > 
> > OK?
> 
> I think this is worth making an exception for it.
> So ok from me, but please give Richard and/or Joseph a chance to chime in if
> they disagree.

OK with me as well.

-- 
Joseph S. Myers
jos...@codesourcery.com


[ping] Re: proper name of i386/x86-64/etc targets

2015-01-19 Thread Sandra Loosemore

On 01/01/2015 05:30 PM, Sandra Loosemore wrote:

I've noticed that the GCC user documentation is quite inconsistent about
the name(s) it uses for i386/x86-64/etc targets.  invoke.texi has a
section for "i386 and x86-64 Options", but in other places the manual
uses x86, X86, i?86, i[34567]86, x86_64 (underscore instead of a dash),
etc.

I'd be happy to work on a patch to bring the manual to using a common
naming convention, but what should it be?  Wikipedia seems to use "x86"
(lowercase) to refer to the entire family of architectures (including
the original 16-bit variants), "IA-32" for the 32-bit architecture (I
believe that is Intel's official name), and "x86-64" (with a dash
instead of underscore) for the 64-bit architecture.  But of course the
target maintainers should have the final say on what names to use.


Ping?  Any thoughts?

-Sandra


Problem with extremely large procedures and 64-bit code

2015-01-19 Thread Ricardo Telichevesky

Hi,

I have a strange problem with extremely large procedures when generating 
64-bit code
I am using gcc 4.9.2 on  RHEL6.3 on a 64-thread 4-socket  Xeon E7 4820 with 256GB of memory. No avx extensions, using sse option when building the compiler. This particular code is serial. I made measurements with 32- and 64- bit both debug -g and optimize -O3 for two different examples (this is a 
circuit simulator and each example is a different circuit that uses different transistors).


Example A is the one the effect is more acute. I listed at the bottom of 
the e-mail the 3 procedures that consume 90% of the execution time:

a) As a counter-example, the factor code listed is heavily optimized 
hand-written 300-lines of C++ code that behaves as expected: 64-bit optimize is 
way faster than any other, up to 15x faster than 32-bit debug (btw great job in 
the compiler, it is really shining here).

b) evalTran has 18000 lines of auto-generated code and behaves very 
counter-intuitively 64-bit optimize code is 3x slower than 32-bit optimize code.

c) evalTranRhs has 5000 lines even worse: 64-bit is 4x slower than 32-bit. Notice that all the data structures in 32-bit code and 64-bit code are identical and most variables are identical - in fact all integers used are 64-bit, and most operations are floating-point ops. Initially I thought the 
64-bit code was a lot bigger than 32-bit code and the cache was overwhelmed. In fact the difference in code sizes is not even 10% (at least debug - notice I calculated the size of each procedure in bytes)  so my trash-the I-cache conjecture seems to be wrong. The overall execution time is causing us 
a lot of problems - 64-bit optimize takes 16seconds, even more than 32-bit debug 10seconds and 32-bit optimize 4.8 seconds. Considering we only care about 64-bit optimize we got a big problem here.


Example B is not so bad, and in fact 64-bit code is slightly faster than 
32-bit code, would be nice if went even faster, but if I got A to behave like 
that I'd be pretty happy already.

I tried to look at the wide array of optimizing options for the code, it is is a dizzying task and I could not get any kind of intuition besides the -O3 ... Would you have any suggestions for the proper flags for those ridiculously large auto-generated codes that might be able to alleviate this 
32-bit vs 64-bit problem? Would you think that the fact this code is in a dynamic linked library (-fPIC) plays a role?


Thanks very much for your help,
Ricardo


All times are wall clock in micro-seconds - the main was checked against the 
reported UNIX time and is exact.

example  A
==
evalTran has 18000 lines of C code   (two for loops around 99% of the code)
evalTranRhs has 5000 lines of C code (two for loops around 99% of the code)

32 bit debug -g -m32 -fPIC -Wall -Winvalid-pch -msse2
%time  elapsed(us)   #calls  per call(us)timer name @DN@
-  ---   --   --
2.503  254536833530 numerical TRAN factor
56.01  5695065   8335683 evalTranbytes=231791
35.41  3600646   13924   258 evalTranRhs bytes=57501
10010168242  1   10168242main @DT@

32 bit optimize -O3 -m32 -fPIC -Wall -Winvalid-pch -msse2
%time  elapsed(us)   #calls  per call(us) timer name @DN@
-  ---   --   --
0.710  34442 83354 numerical TRAN factor
43.06  2087757   8335250 evalTran
43.49  2108786   13925   151 evalTranRhs
1004848520   1   4848520 main @DT@


64 bit debug -g -fPIC -Wall -Winvalid-pch -msse2
%time  elapsed(us)   #calls  per call(us) timer name @DN@
-  ---   --   --
0.973  205144833524 numerical TRAN factor
46.43  9785920   83351174 evalTran bytes=252741
49.72  1047  13924   752 evalTranRhs bytes=58442
10021077659  1   21077659main @DT@


64 bit optimize -O3 -fPIC -Wall -Winvalid-pch -msse2
%time  elapsed(us)   #calls  per call(us)timer name @DN@
-  ---   --   --
0.147  23819 83352 numerical TRAN factor
39.26  6360254   8335763 evalTran
57.28  9279087   13924   666 evalTranRhs
10016198762  1   16198762main @DT@





example B
=
evalTran has 1 lines of C code   (two for loops around 99% of the code)
evalTranRhs has 2500 lines of C code (two for loops around 99% of the code)

32-bit debug -g -fPIC -Wall -Winvalid-pch -msse2
%time  elapsed(us)   #calls  per call(us)timer name @DN@
-  ---   --   --
6.55   98982646612   21 numerical T

Re: [ping] Re: proper name of i386/x86-64/etc targets

2015-01-19 Thread Uros Bizjak
On Tue, Jan 20, 2015 at 3:26 AM, Sandra Loosemore
 wrote:

>> I've noticed that the GCC user documentation is quite inconsistent about
>> the name(s) it uses for i386/x86-64/etc targets.  invoke.texi has a
>> section for "i386 and x86-64 Options", but in other places the manual
>> uses x86, X86, i?86, i[34567]86, x86_64 (underscore instead of a dash),
>> etc.
>>
>> I'd be happy to work on a patch to bring the manual to using a common
>> naming convention, but what should it be?  Wikipedia seems to use "x86"
>> (lowercase) to refer to the entire family of architectures (including
>> the original 16-bit variants), "IA-32" for the 32-bit architecture (I
>> believe that is Intel's official name), and "x86-64" (with a dash
>> instead of underscore) for the 64-bit architecture.  But of course the
>> target maintainers should have the final say on what names to use.
>
>
> Ping?  Any thoughts?

Let's ask Intel people ...

Uros.