Re: LTO : how to specify number of chunks with option -flto-partition=balanced

2013-05-31 Thread Swati
For -flto-partition=balanced, if user does not specify the --param lto-partitions and --param lto-min-partition, will GCC partition the program? If yes what is the criteria? Where can we get more help on using the --param lto-partitions and --param lto-min-partition? We want to know how the pa

Re: Question about vectorization limit

2013-05-31 Thread Richard Biener
On Thu, May 30, 2013 at 2:46 AM, Dehao Chen wrote: > Hi, > > In tree-vect-loop.c, it limits the vectorization only to loops that have 2 > BBs: > > /* Inner-most loop. We currently require that the number of BBs is > exactly 2 (the header and latch). Vectorizable inner-most loops

Re: LTO : how to specify number of chunks with option -flto-partition=balanced

2013-05-31 Thread Richard Biener
On Fri, May 31, 2013 at 9:21 AM, Swati wrote: > For -flto-partition=balanced, if user does not specify the --param > lto-partitions and --param lto-min-partition, > will GCC partition the program? > If yes what is the criteria? It will partition the program into lto-partitions partitions unless t

[RFC]How to get more accurate cost of pre-loop calculations in ivopts pass

2013-05-31 Thread Bin.Cheng
Hi, During studying ivopt pass, I found the cost of preloop calculations are inaccurately calculated in many scenarios. There are two kinds of preloop calculations: base of candidates and invariant part of iv use representation. For base of iv candidates, it is calculated as below: cost_base = fo

Re: Question about vectorization limit

2013-05-31 Thread Jakub Jelinek
On Fri, May 31, 2013 at 10:20:01AM +0200, Richard Biener wrote: > The limit is there because a loop with more than one basic-block with code > necessarily has to have conditionally executed BBs and eventually PHI nodes > at merge points. > > Now, it may be that we properly determine if we can hand

GCC 4.8.1 Released

2013-05-31 Thread Jakub Jelinek
The GNU Compiler Collection version 4.8.1 has been released. GCC 4.8.1 is the first bug-fix release containing important fixes for regressions and serious bugs in GCC 4.8.0 with over 91 bugs fixed since the previous release. Support for C++11 ref-qualifiers has been added to GCC 4.8.1, making G++

GCC 4.8.2 Status Report (2013-05-31)

2013-05-31 Thread Jakub Jelinek
Status == GCC 4.8.1 has been released, the branch is again open for regression bugfixes and documentation fixes. GCC 4.8.2 could be tentatively released in early September. Quality Data Priority # Change from Last Report --- ---

Re: GCC 4.8.1 Released

2013-05-31 Thread Jonathan Wakely
On 31 May 2013 12:16, Jakub Jelinek wrote: > The GNU Compiler Collection version 4.8.1 has been released. > > GCC 4.8.1 is the first bug-fix release containing important fixes for > regressions and serious bugs in GCC 4.8.0 with over 91 bugs fixed since > the previous release. Support for C++11 re

Re: Question about vectorization limit

2013-05-31 Thread Toon Moene
On 05/31/2013 10:20 AM, Richard Biener wrote: So - I doubt that you both do not get any ICEs and more performance. I added the second suggested patch: Index: tree-vect-loop-manip.c === --- tree-vect-loop-manip.c (revision 19

Re: Question about vectorization limit

2013-05-31 Thread Richard Biener
On Fri, May 31, 2013 at 3:21 PM, Toon Moene wrote: > On 05/31/2013 10:20 AM, Richard Biener wrote: > >> So - I doubt that you both do not get any ICEs and more performance. > > > I added the second suggested patch: > > Index: tree-vect-loop-manip.c > ===

Re: Question about vectorization limit

2013-05-31 Thread Jakub Jelinek
On Fri, May 31, 2013 at 03:21:51PM +0200, Toon Moene wrote: > SUBROUTINE XYZ(A, B, N) > DIMENSION A(N), B(N) > DO I = 1, N >IF (A(I) > 0.0) THEN > A(I) = B(I) / A(I) >ELSE > A(I) = B(I) >ENDIF > ENDDO > END Well, in this case (with -Ofast) it is just the case that ifcvt or

Re: Question about vectorization limit

2013-05-31 Thread Toon Moene
On 05/31/2013 03:41 PM, Jakub Jelinek wrote: On Fri, May 31, 2013 at 03:21:51PM +0200, Toon Moene wrote: SUBROUTINE XYZ(A, B, N) DIMENSION A(N), B(N) DO I = 1, N IF (A(I)> 0.0) THEN A(I) = B(I) / A(I) ELSE A(I) = B(I) ENDIF ENDDO END Well, in this case (with -Ofas

Re: Question about vectorization limit

2013-05-31 Thread Richard Biener
On Fri, May 31, 2013 at 3:48 PM, Toon Moene wrote: > On 05/31/2013 03:41 PM, Jakub Jelinek wrote: > >> On Fri, May 31, 2013 at 03:21:51PM +0200, Toon Moene wrote: > > >>> SUBROUTINE XYZ(A, B, N) >>> DIMENSION A(N), B(N) >>> DO I = 1, N >>> IF (A(I)> 0.0) THEN >>>A(I) = B(I) / A(I) >>>

Re: Question about vectorization limit

2013-05-31 Thread Jakub Jelinek
On Fri, May 31, 2013 at 03:48:59PM +0200, Toon Moene wrote: > >If you rewrite the above into: > >SUBROUTINE XYZ(A, B, N) > >DIMENSION A(N), B(N) > >DO I = 1, N > >C = B(I) > >IF (A(I)> 0.0) THEN > > A(I) = C / A(I) > >ELSE > > A(I) = C > >ENDIF > >ENDDO > >END > > > >th

Re: Question about vectorization limit

2013-05-31 Thread Toon Moene
On 05/31/2013 03:54 PM, Jakub Jelinek wrote: > I wrote: But this "inner loop" has at least 3 basic blocks - so what does the "loop->num_nodes != 2" test exactly codify ? With the above testcase it has just 2. Before ifcvt pass it still has 4: Ah, I missed that subtle part. So my example is

Re: Excessive calls to iterate_phdr during exception handling

2013-05-31 Thread Richard Henderson
On 05/30/2013 04:30 PM, Ryan Johnson wrote: > Is there a way for libgcc_s to interpose on dlopen/dlclose if (and only if) > those are present? If so, the wrappers could increment an atomic version > counter, which would be plenty accurate for invalidating an object header > cache, without requiring

Re: Question about vectorization limit

2013-05-31 Thread Xinliang David Li
On Fri, May 31, 2013 at 6:54 AM, Jakub Jelinek wrote: > On Fri, May 31, 2013 at 03:48:59PM +0200, Toon Moene wrote: >> >If you rewrite the above into: >> >SUBROUTINE XYZ(A, B, N) >> >DIMENSION A(N), B(N) >> >DO I = 1, N >> >C = B(I) >> >IF (A(I)> 0.0) THEN >> > A(I) = C / A(I) >> >

Re: Question about vectorization limit

2013-05-31 Thread Xinliang David Li
yes, loop vectorizer relies on early passes to straighten out control flow (unswitch, index splitting, loop distribution, ifcvt etc). Intel ICC is pretty good at it. For the following simple made up case, icc vectorizes the loop. int a[1]; int b[1]; int foo (int n) { int i; for (i

Conditions for NRVO

2013-05-31 Thread Clark Gaebel
Hi list! I was having a discussion with a coworker earlier today about whether it's safe to say that: > MyClass some_function() > { > MyClass k(/*possibly some arguments here*/); > > // Fill up k somehow. > > return k; > } will never call MyClass' copy constructor, assuming recent ve