* Re: [Patch] Qualify min(), max() and distance() in v3. [not found] <20021204102528.75c8b5cc.bkoz@redhat.com> @ 2002-12-04 8:41 ` Mark Mitchell 2002-12-04 11:41 ` merging for 3.4 (was Re: [Patch] Qualify min(), max() ...) Diego Novillo 2002-12-04 11:44 ` [Patch] Qualify min(), max() and distance() in v3 Benjamin Kosnik 0 siblings, 2 replies; 30+ messages in thread From: Mark Mitchell @ 2002-12-04 8:41 UTC (permalink / raw) To: Benjamin Kosnik, Gabriel Dos Reis; +Cc: pcarlini, libstdc++, gcc > I feel like the development process is a little congested at the moment, > but hopefully it will pass soon. It would be nice to have some target > dates for the gcc-3_3-branch, however, and a bit more communication > about what is going on, since the target release dates are hopelessly > out of date. At the moment it's kind of hard to schedule. I'm having a tough time. When I set schedules, people complain that we can't do that, since we need volunteers. In practice, we're missing dates because people aren't stepping up to fix regressions as quickly as we'd like. On the other hand, without a schedule, I understand that planning is tough. I'll admit that I'm a bit befuddled about how to "manage"; I can say what makes sense to put into the releases, but I don't have the authority to manage the people. So, I muddle along... The best thing people can do is to fix the really high-priority 3.3 bugs, so that I fell confident about making that branch. The most important bugs are wrong-code, and ice-on-legal-code. I'll make you a deal; we'll cut the branch no latter than Dec 15th. After that, I expect the sequence you said: BIB->mainline, the new C++ parser, and then (perhaps) some tree optimizer stuff, although I haven't really gotten the impression that stuff is fully ready yet. -- Mark Mitchell mark@codesourcery.com CodeSourcery, LLC http://www.codesourcery.com ^ permalink raw reply [flat|nested] 30+ messages in thread
* merging for 3.4 (was Re: [Patch] Qualify min(), max() ...) 2002-12-04 8:41 ` [Patch] Qualify min(), max() and distance() in v3 Mark Mitchell @ 2002-12-04 11:41 ` Diego Novillo 2002-12-04 11:47 ` David Edelsohn ` (2 more replies) 2002-12-04 11:44 ` [Patch] Qualify min(), max() and distance() in v3 Benjamin Kosnik 1 sibling, 3 replies; 30+ messages in thread From: Diego Novillo @ 2002-12-04 11:41 UTC (permalink / raw) To: Mark Mitchell; +Cc: Benjamin Kosnik, Gabriel Dos Reis, pcarlini, libstdc++, gcc On Wed, 04 Dec 2002, Mark Mitchell wrote: > After that, I expect the sequence you said: BIB->mainline, the new > C++ parser, and then (perhaps) some tree optimizer stuff, although > I haven't really gotten the impression that stuff is fully ready yet. > Whether tree SSA can be merged for 3.4 will depend on the state of the branch by the time the Stage 1 window closes. We are making rapid progress but I would like to have the following in place: - At least two front ends working. We already have C and it looks like C++ is getting there. - General acceptance for GENERIC and GIMPLE. GENERIC will impact all the front ends, as we need every front end to emit GENERIC so that it can then be converted into GIMPLE, which is the IL that all the tree optimizers operate on. Of course, a front end need only be converted to GENERIC if it wants to use the tree optimizers, otherwise they don't need to be modified at all. - Performance issues. Right now the code generated by the tree optimizers is worse than the RTL optimizers. This is to be expected at this stage and the whole tree optimization process can be disabled. So, in principle I don't see a real problem with merging the infrastructure in. I see two possible scenarios regarding optimization: (a) We merge the infrastructure with the optimizers disabled and keep working on them in mainline. This has the advantage of exposing the code for more testing, but it might disrupt development. (b) We don't merge anything for 3.4, keep working on the branch and merge everything for 3.5 or whenever we close the performance gap. Sometimes I'm more inclined towards (b), it seems safer. Diego. ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: merging for 3.4 (was Re: [Patch] Qualify min(), max() ...) 2002-12-04 11:41 ` merging for 3.4 (was Re: [Patch] Qualify min(), max() ...) Diego Novillo @ 2002-12-04 11:47 ` David Edelsohn 2002-12-04 11:52 ` Gabriel Dos Reis ` (2 more replies) 2002-12-04 11:49 ` Jan Hubicka 2002-12-04 12:55 ` Joe Buck 2 siblings, 3 replies; 30+ messages in thread From: David Edelsohn @ 2002-12-04 11:47 UTC (permalink / raw) To: Diego Novillo Cc: Mark Mitchell, Benjamin Kosnik, Gabriel Dos Reis, pcarlini, libstdc++, gcc >>>>> Diego Novillo writes: Diego> I see two possible scenarios regarding optimization: Diego> (a) We merge the infrastructure with the optimizers disabled and Diego> keep working on them in mainline. This has the advantage of Diego> exposing the code for more testing, but it might disrupt Diego> development. Diego> (b) We don't merge anything for 3.4, keep working on the branch Diego> and merge everything for 3.5 or whenever we close the Diego> performance gap. Diego> Sometimes I'm more inclined towards (b), it seems safer. I would prefer (a) because that allows Tree-SSA to be a GCC technology preview in the GCC 3.4 release to which improvements can be merged in during later Stages of GCC 3.4 development. We might have enough Tree-SSA optimizations enabled by the end of Stage2/Stage3 for Tree-SSA to be effective and useful, but it will not be abled by default so it is safe. David ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: merging for 3.4 (was Re: [Patch] Qualify min(), max() ...) 2002-12-04 11:47 ` David Edelsohn @ 2002-12-04 11:52 ` Gabriel Dos Reis 2002-12-04 11:58 ` David Edelsohn 2002-12-04 12:00 ` Mark Mitchell 2002-12-04 12:21 ` Jan Hubicka 2002-12-06 12:40 ` Frank Ch. Eigler 2 siblings, 2 replies; 30+ messages in thread From: Gabriel Dos Reis @ 2002-12-04 11:52 UTC (permalink / raw) To: David Edelsohn Cc: Diego Novillo, Mark Mitchell, Benjamin Kosnik, pcarlini, libstdc++, gcc David Edelsohn <dje@watson.ibm.com> writes: | >>>>> Diego Novillo writes: | | Diego> I see two possible scenarios regarding optimization: | | Diego> (a) We merge the infrastructure with the optimizers disabled and | Diego> keep working on them in mainline. This has the advantage of | Diego> exposing the code for more testing, but it might disrupt | Diego> development. | | Diego> (b) We don't merge anything for 3.4, keep working on the branch | Diego> and merge everything for 3.5 or whenever we close the | Diego> performance gap. | | Diego> Sometimes I'm more inclined towards (b), it seems safer. | | I would prefer (a) because that allows Tree-SSA to be a GCC Since (a) depends on acceptance of GIMPLE and GENERIC, which are invasive and quite not yet mature, I would prefer (b) given the other invasive works already scheduled for 3.4. -- Gaby ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: merging for 3.4 (was Re: [Patch] Qualify min(), max() ...) 2002-12-04 11:52 ` Gabriel Dos Reis @ 2002-12-04 11:58 ` David Edelsohn 2002-12-04 12:00 ` Mark Mitchell 1 sibling, 0 replies; 30+ messages in thread From: David Edelsohn @ 2002-12-04 11:58 UTC (permalink / raw) To: Gabriel Dos Reis Cc: Diego Novillo, Mark Mitchell, Benjamin Kosnik, pcarlini, libstdc++, gcc >>>>> Gabriel Dos Reis writes: Gaby> Since (a) depends on acceptance of GIMPLE and GENERIC, which are Gaby> invasive and quite not yet mature, I would prefer (b) given the Gaby> other invasive works already scheduled for 3.4. The lack of the Tree-SSA infrastructure in GCC 3.4 may discourage developers from working on GCC 3.4 and encourage the further branching and fragmentation of GCC. David ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: merging for 3.4 (was Re: [Patch] Qualify min(), max() ...) 2002-12-04 11:52 ` Gabriel Dos Reis 2002-12-04 11:58 ` David Edelsohn @ 2002-12-04 12:00 ` Mark Mitchell 1 sibling, 0 replies; 30+ messages in thread From: Mark Mitchell @ 2002-12-04 12:00 UTC (permalink / raw) To: Gabriel Dos Reis, David Edelsohn Cc: Diego Novillo, Benjamin Kosnik, pcarlini, libstdc++, gcc > Since (a) depends on acceptance of GIMPLE and GENERIC, which are > invasive and quite not yet mature, I would prefer (b) given the > other invasive works already scheduled for 3.4. I too am presently inclined towards (b). There are already a lot of changes heading for 3.4; if this stuff isn't fully baked at this point, we can wait for 3.5. We don't need to decide now, however; we can see how things go. -- Mark Mitchell mark@codesourcery.com CodeSourcery, LLC http://www.codesourcery.com ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: merging for 3.4 (was Re: [Patch] Qualify min(), max() ...) 2002-12-04 11:47 ` David Edelsohn 2002-12-04 11:52 ` Gabriel Dos Reis @ 2002-12-04 12:21 ` Jan Hubicka 2002-12-06 12:40 ` Frank Ch. Eigler 2 siblings, 0 replies; 30+ messages in thread From: Jan Hubicka @ 2002-12-04 12:21 UTC (permalink / raw) To: David Edelsohn Cc: Diego Novillo, Mark Mitchell, Benjamin Kosnik, Gabriel Dos Reis, pcarlini, libstdc++, gcc > >>>>> Diego Novillo writes: > > Diego> I see two possible scenarios regarding optimization: > > Diego> (a) We merge the infrastructure with the optimizers disabled and > Diego> keep working on them in mainline. This has the advantage of > Diego> exposing the code for more testing, but it might disrupt > Diego> development. > > Diego> (b) We don't merge anything for 3.4, keep working on the branch > Diego> and merge everything for 3.5 or whenever we close the > Diego> performance gap. > > Diego> Sometimes I'm more inclined towards (b), it seems safer. > > I would prefer (a) because that allows Tree-SSA to be a GCC > technology preview in the GCC 3.4 release to which improvements can be > merged in during later Stages of GCC 3.4 development. We might have > enough Tree-SSA optimizations enabled by the end of Stage2/Stage3 for > Tree-SSA to be effective and useful, but it will not be abled by default > so it is safe. I would second to this. I think we will get more motivation to resolve the remaining important issues needed in order to make Tree-SSA useable by default. Honza > > David ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: merging for 3.4 (was Re: [Patch] Qualify min(), max() ...) 2002-12-04 11:47 ` David Edelsohn 2002-12-04 11:52 ` Gabriel Dos Reis 2002-12-04 12:21 ` Jan Hubicka @ 2002-12-06 12:40 ` Frank Ch. Eigler 2 siblings, 0 replies; 30+ messages in thread From: Frank Ch. Eigler @ 2002-12-06 12:40 UTC (permalink / raw) To: David Edelsohn Cc: Diego Novillo, Mark Mitchell, Benjamin Kosnik, Gabriel Dos Reis, pcarlini, libstdc++, gcc David Edelsohn <dje@watson.ibm.com> writes: > [...] > Diego> I see two possible scenarios regarding optimization: > > Diego> (a) We merge the infrastructure with the optimizers disabled and > Diego> keep working on them in mainline. This has the advantage of > Diego> exposing the code for more testing, but it might disrupt > Diego> development. > [...] > > I would prefer (a) because that allows Tree-SSA to be a GCC > technology preview in the GCC 3.4 release to which improvements can be > merged in during later Stages of GCC 3.4 development. [...] Another possible technology preview aspect of tree-ssa is the mudflap bounds-checking work. It demonstrates a tree-rewriting transform that adds newish functionality, flag-controlled, to the compiler, thus not becoming a possible performance regression. It could showcase the value of a generic tree IR, an issue distinct from the presence of ssa-based optimizations. - FChE ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: merging for 3.4 (was Re: [Patch] Qualify min(), max() ...) 2002-12-04 11:41 ` merging for 3.4 (was Re: [Patch] Qualify min(), max() ...) Diego Novillo 2002-12-04 11:47 ` David Edelsohn @ 2002-12-04 11:49 ` Jan Hubicka 2002-12-04 12:01 ` Diego Novillo 2002-12-04 12:55 ` Joe Buck 2 siblings, 1 reply; 30+ messages in thread From: Jan Hubicka @ 2002-12-04 11:49 UTC (permalink / raw) To: Diego Novillo Cc: Mark Mitchell, Benjamin Kosnik, Gabriel Dos Reis, pcarlini, libstdc++, gcc > On Wed, 04 Dec 2002, Mark Mitchell wrote: > > > After that, I expect the sequence you said: BIB->mainline, the new > > C++ parser, and then (perhaps) some tree optimizer stuff, although > > I haven't really gotten the impression that stuff is fully ready yet. > > > Whether tree SSA can be merged for 3.4 will depend on the state > of the branch by the time the Stage 1 window closes. We are > making rapid progress but I would like to have the following in > place: > > - At least two front ends working. We already have C and it > looks like C++ is getting there. > > > - General acceptance for GENERIC and GIMPLE. GENERIC will impact > all the front ends, as we need every front end to emit GENERIC > so that it can then be converted into GIMPLE, which is the IL > that all the tree optimizers operate on. > > Of course, a front end need only be converted to GENERIC if it > wants to use the tree optimizers, otherwise they don't need to > be modified at all. > > > - Performance issues. Right now the code generated by the tree > optimizers is worse than the RTL optimizers. This is to be > expected at this stage and the whole tree optimization process > can be disabled. So, in principle I don't see a real problem > with merging the infrastructure in. It is understood what is needed in order to get this solved? IE how to make RTL chain generated from GIMPLE comparable to one generated directly from trees? Honza ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: merging for 3.4 (was Re: [Patch] Qualify min(), max() ...) 2002-12-04 11:49 ` Jan Hubicka @ 2002-12-04 12:01 ` Diego Novillo 0 siblings, 0 replies; 30+ messages in thread From: Diego Novillo @ 2002-12-04 12:01 UTC (permalink / raw) To: Jan Hubicka Cc: Mark Mitchell, Benjamin Kosnik, Gabriel Dos Reis, pcarlini, libstdc++, gcc On Wed, 04 Dec 2002, Jan Hubicka wrote: > It is understood what is needed in order to get this solved? > IE how to make RTL chain generated from GIMPLE comparable to one > generated directly from trees? > In general terms, yes. It's the traditional iterative process of profiling some body of code to see whether we need to remove RTL passes, add more tree passes or both. However, we still don't have all of the fundamental tree optimizers working, so it's not worth doing at this stage. Another area that needs to be studied is compile time performance. The tree optimizers will in principle impact compile time negatively. However, we hope that by simplifying initial RTL generation we can reduce compile time in the RTL backend. Diego. ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: merging for 3.4 (was Re: [Patch] Qualify min(), max() ...) 2002-12-04 11:41 ` merging for 3.4 (was Re: [Patch] Qualify min(), max() ...) Diego Novillo 2002-12-04 11:47 ` David Edelsohn 2002-12-04 11:49 ` Jan Hubicka @ 2002-12-04 12:55 ` Joe Buck 2002-12-04 13:08 ` Jan Hubicka 2002-12-04 14:20 ` Daniel Berlin 2 siblings, 2 replies; 30+ messages in thread From: Joe Buck @ 2002-12-04 12:55 UTC (permalink / raw) To: Diego Novillo Cc: Mark Mitchell, Benjamin Kosnik, Gabriel Dos Reis, pcarlini, libstdc++, gcc Diego writes: > Whether tree SSA can be merged for 3.4 will depend on the state > of the branch by the time the Stage 1 window closes. We are > making rapid progress but I would like to have the following in > place: [ stuff deleted ] > - Performance issues. Right now the code generated by the tree > optimizers is worse than the RTL optimizers. This is to be > expected at this stage and the whole tree optimization process > can be disabled. So, in principle I don't see a real problem > with merging the infrastructure in. To me, this is critical. GCC has, by some measures, slowly been getting worse and worse. I believe in the tree-ssa concept, but I don't think that it should be accepted until it is a clear win. What happens in almost every case is that people know that a change makes things worse by some measures, but they like the elegance and are sure they can fix it later. Then it never gets fixed. We can't force volunteers to do things, so the only control that we have is keeping things out of the compiler until they clearly improve it. > I see two possible scenarios regarding optimization: > > (a) We merge the infrastructure with the optimizers disabled and > keep working on them in mainline. This has the advantage of > exposing the code for more testing, but it might disrupt > development. > > (b) We don't merge anything for 3.4, keep working on the branch > and merge everything for 3.5 or whenever we close the > performance gap. > > Sometimes I'm more inclined towards (b), it seems safer. Likewise. ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: merging for 3.4 (was Re: [Patch] Qualify min(), max() ...) 2002-12-04 12:55 ` Joe Buck @ 2002-12-04 13:08 ` Jan Hubicka 2002-12-04 13:40 ` Neil Booth 2002-12-04 14:20 ` Daniel Berlin 1 sibling, 1 reply; 30+ messages in thread From: Jan Hubicka @ 2002-12-04 13:08 UTC (permalink / raw) To: Joe Buck Cc: Diego Novillo, Mark Mitchell, Benjamin Kosnik, Gabriel Dos Reis, pcarlini, libstdc++, gcc > Diego writes: > > > Whether tree SSA can be merged for 3.4 will depend on the state > > of the branch by the time the Stage 1 window closes. We are > > making rapid progress but I would like to have the following in > > place: > > [ stuff deleted ] > > > - Performance issues. Right now the code generated by the tree > > optimizers is worse than the RTL optimizers. This is to be > > expected at this stage and the whole tree optimization process > > can be disabled. So, in principle I don't see a real problem > > with merging the infrastructure in. > > To me, this is critical. GCC has, by some measures, slowly been getting > worse and worse. I believe in the tree-ssa concept, but I don't think What measures do you have in a mind? From the code performance point of view situation don't seems to be so critical according to the SPEC testers. Perhaps in for other architectures than i386 or other tests it is, but that just means that we need more periodic testers to keep quality in control. From compile time performance point of view sitaution is different tought :(. Compiler is getting slower in each release but that is mostly cumulative result of adding new features current infrastructure can't accept cheaply... I would like to see the reason for slowowns on SSA branch to be understood and fixed before merging too. On the other hand I would love to see merging to happen in 3.4 period as too many things are getting dependent on the SSA work and we should keep dependence chain small if possible. Honza > that it should be accepted until it is a clear win. What happens in > almost every case is that people know that a change makes things worse by > some measures, but they like the elegance and are sure they can fix it > later. Then it never gets fixed. We can't force volunteers to do things, > so the only control that we have is keeping things out of the compiler > until they clearly improve it. > > > I see two possible scenarios regarding optimization: > > > > (a) We merge the infrastructure with the optimizers disabled and > > keep working on them in mainline. This has the advantage of > > exposing the code for more testing, but it might disrupt > > development. > > > > (b) We don't merge anything for 3.4, keep working on the branch > > and merge everything for 3.5 or whenever we close the > > performance gap. > > > > Sometimes I'm more inclined towards (b), it seems safer. > > Likewise. ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: merging for 3.4 (was Re: [Patch] Qualify min(), max() ...) 2002-12-04 13:08 ` Jan Hubicka @ 2002-12-04 13:40 ` Neil Booth [not found] ` <20021204214715.GR5173@kam.mff.cuni.cz> ` (2 more replies) 0 siblings, 3 replies; 30+ messages in thread From: Neil Booth @ 2002-12-04 13:40 UTC (permalink / raw) To: Jan Hubicka Cc: Joe Buck, Diego Novillo, Mark Mitchell, Benjamin Kosnik, Gabriel Dos Reis, pcarlini, libstdc++, gcc Jan Hubicka wrote:- > Compiler is getting slower in each release but that is mostly cumulative > result of adding new features current infrastructure can't accept > cheaply... I hate this slowness. There's no reason IMO that GCC couldn't be 4 times faster than it is, without any PCH or anything. A lot of the code we use is just awfully inefficient. And people are working on more interesting things than fixing some of the real problems we have. There's no excuse for the parser taking more time than CPP for example; currently it takes about 4-5 times as long. I want to see GCC so fast that CPP is up to 5-10% of CPU time. It's rarely much above 1 or 2%. Neil. ^ permalink raw reply [flat|nested] 30+ messages in thread
[parent not found: <20021204214715.GR5173@kam.mff.cuni.cz>]
* Re: merging for 3.4 (was Re: [Patch] Qualify min(), max() ...) [not found] ` <20021204214715.GR5173@kam.mff.cuni.cz> @ 2002-12-04 13:52 ` Neil Booth 2002-12-04 14:05 ` Toon Moene 0 siblings, 1 reply; 30+ messages in thread From: Neil Booth @ 2002-12-04 13:52 UTC (permalink / raw) To: Jan Hubicka Cc: Joe Buck, Diego Novillo, Mark Mitchell, Benjamin Kosnik, Gabriel Dos Reis, pcarlini, libstdc++, gcc Jan Hubicka wrote:- > Except that I don't see easy easy way to get it faster except for fixing > some design defects (like using tree SSA :) that require quite a lot of > effort There must be ways of getting it faster. lcc is a *lot* faster, a lot smaller, and doesn't produce code that is much worse. Its parser is well- written; I'd bet it's faster than LCC's CPP. Most of our parser problems come from a poor tree IL and bison. I vote we force GCC developers to bootstrap on 100MHz Pentia for 1 year. Neil. ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: merging for 3.4 (was Re: [Patch] Qualify min(), max() ...) 2002-12-04 13:52 ` Neil Booth @ 2002-12-04 14:05 ` Toon Moene 0 siblings, 0 replies; 30+ messages in thread From: Toon Moene @ 2002-12-04 14:05 UTC (permalink / raw) To: Neil Booth Cc: Jan Hubicka, Joe Buck, Diego Novillo, Mark Mitchell, Benjamin Kosnik, Gabriel Dos Reis, pcarlini, libstdc++, gcc Neil Booth wrote: > There must be ways of getting it faster. lcc is a *lot* faster, a lot > smaller, and doesn't produce code that is much worse. Its parser is well- > written; I'd bet it's faster than LCC's CPP. Most of our parser problems > come from a poor tree IL and bison. > > I vote we force GCC developers to bootstrap on 100MHz Pentia for 1 year. Must be the language. Once again I'm repeating the old adage: People *never* complain to my about the speed of g77, just about the speed of the generated code. -- Toon Moene - mailto:toon@moene.indiv.nluug.nl - phoneto: +31 346 214290 Saturnushof 14, 3738 XG Maartensdijk, The Netherlands Maintainer, GNU Fortran 77: http://gcc.gnu.org/onlinedocs/g77_news.html Join GNU Fortran 95: http://g95.sourceforge.net/ (under construction) ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: merging for 3.4 (was Re: [Patch] Qualify min(), max() ...) 2002-12-04 13:40 ` Neil Booth [not found] ` <20021204214715.GR5173@kam.mff.cuni.cz> @ 2002-12-04 14:00 ` Eric Christopher 2002-12-04 14:08 ` Matt Austern 2002-12-04 14:23 ` merging for 3.4 (was Re: [Patch] Qualify min(), max() ...) Daniel Berlin 2 siblings, 1 reply; 30+ messages in thread From: Eric Christopher @ 2002-12-04 14:00 UTC (permalink / raw) To: Neil Booth Cc: Jan Hubicka, Joe Buck, Diego Novillo, Mark Mitchell, Benjamin Kosnik, Gabriel Dos Reis, pcarlini, libstdc++, gcc On Wed, 2002-12-04 at 13:39, Neil Booth wrote: > Jan Hubicka wrote:- > > > Compiler is getting slower in each release but that is mostly cumulative > > result of adding new features current infrastructure can't accept > > cheaply... > > I hate this slowness. There's no reason IMO that GCC couldn't be 4 > times faster than it is, without any PCH or anything. A lot of the > code we use is just awfully inefficient. And people are working on > more interesting things than fixing some of the real problems we have. > Some of the advantages to working on the tree-ssa bits is that they will (hopefully) enable us to do a better job of optimizing faster so that the later rtl routines have less to work with and are faster as a result. -eric -- Yeah, I used to play basketball... ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: merging for 3.4 (was Re: [Patch] Qualify min(), max() ...) 2002-12-04 14:00 ` Eric Christopher @ 2002-12-04 14:08 ` Matt Austern 2002-12-05 12:40 ` compile time regressions (was: merging for 3.4) Gerald Pfeifer 0 siblings, 1 reply; 30+ messages in thread From: Matt Austern @ 2002-12-04 14:08 UTC (permalink / raw) To: Eric Christopher Cc: Neil Booth, Jan Hubicka, Joe Buck, Diego Novillo, Mark Mitchell, Benjamin Kosnik, Gabriel Dos Reis, pcarlini, libstdc++, gcc On Wednesday, December 4, 2002, at 01:03 PM, Eric Christopher wrote: > On Wed, 2002-12-04 at 13:39, Neil Booth wrote: >> Jan Hubicka wrote:- >> >>> Compiler is getting slower in each release but that is mostly >>> cumulative >>> result of adding new features current infrastructure can't accept >>> cheaply... >> >> I hate this slowness. There's no reason IMO that GCC couldn't be 4 >> times faster than it is, without any PCH or anything. A lot of the >> code we use is just awfully inefficient. And people are working on >> more interesting things than fixing some of the real problems we have. >> > > Some of the advantages to working on the tree-ssa bits is that they > will > (hopefully) enable us to do a better job of optimizing faster so that > the later rtl routines have less to work with and are faster as a > result. Except that most of the compile time is taken up in the front end. That's what we've found at Apple for the projects we care most about, anyway. Are there good test cases for the 3.1 -> 3.3 compile time regressions? It would be interesting to study them and find out just what has gotten slower. If the numbers people have been tossing around are real, then these are very serious regressions and we should consider slipping the schedule rather than releasing a compiler with those sorts of performance problems. --Matt ^ permalink raw reply [flat|nested] 30+ messages in thread
* compile time regressions (was: merging for 3.4) 2002-12-04 14:08 ` Matt Austern @ 2002-12-05 12:40 ` Gerald Pfeifer 2002-12-05 13:00 ` Jan Hubicka [not found] ` <200212100246.gBA2kujF029585@gremlin.ics.uci.edu> 0 siblings, 2 replies; 30+ messages in thread From: Gerald Pfeifer @ 2002-12-05 12:40 UTC (permalink / raw) To: Matt Austern Cc: Eric Christopher, Neil Booth, Jan Hubicka, Joe Buck, Diego Novillo, Mark Mitchell, Benjamin Kosnik, Gabriel Dos Reis, pcarlini, libstdc++, gcc On Wed, 4 Dec 2002, Matt Austern wrote: > Are there good test cases for the 3.1 -> 3.3 compile time > regressions? It would be interesting to study them and find out > just what has gotten slower. PR 3083 (yes, that old) basically still applies, but has been superseded by PR 8361 (http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=8361). > If the numbers people have been tossing around are real then these are > very serious regressions and we should consider slipping the schedule > rather than releasing a compiler with those sorts of performance > problems. Here are some timings from that PR: gcc-3.0.4/bin/g++ 45.45 user gcc-3.1.1/bin/g++ 57.79 user +27% gcc-3.2.1/bin/g++ 59.30 user +30% gcc-current/bin/g++ 72.29 user +59% Devang asked me wrt. to number w/o optimization: On Fri, 25 Oct 2002, Devang Patel wrote: > Is it possible to get numbers for compilations without optimization? Now, that's quite interesting: /sw/gcc-3.0.4/bin/g++ 25.60 real 24.66 user 0.63 sys /sw/gcc-3.1.1/bin/g++ 28.44 real 26.88 user 0.98 sys /sw/gcc-3.2.1/bin/g++ 28.71 real 27.17 user 0.65 sys /sw/gcc-current/bin/g++ 32.14 real 31.06 user 0.59 sys That is, we are already quite bad (and regress) without optimization. Gerald -- Gerald "Jerry" pfeifer@dbai.tuwien.ac.at http://www.pfeifer.com/gerald/ ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: compile time regressions (was: merging for 3.4) 2002-12-05 12:40 ` compile time regressions (was: merging for 3.4) Gerald Pfeifer @ 2002-12-05 13:00 ` Jan Hubicka [not found] ` <200212100246.gBA2kujF029585@gremlin.ics.uci.edu> 1 sibling, 0 replies; 30+ messages in thread From: Jan Hubicka @ 2002-12-05 13:00 UTC (permalink / raw) To: Gerald Pfeifer Cc: Matt Austern, Eric Christopher, Neil Booth, Jan Hubicka, Joe Buck, Diego Novillo, Mark Mitchell, Benjamin Kosnik, Gabriel Dos Reis, pcarlini, libstdc++, gcc > On Wed, 4 Dec 2002, Matt Austern wrote: > > Are there good test cases for the 3.1 -> 3.3 compile time > > regressions? It would be interesting to study them and find out > > just what has gotten slower. > > PR 3083 (yes, that old) basically still applies, but has been superseded > by PR 8361 (http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=8361). Hmm, we are definitly having some problem here :) $ gcc -O2 generate.ii In file included from dltypes.h:1617, from dl.h:94, from generate.C:8: program.h: In function `std::ostream& operator<<(std::ostream&, const TPROGRAM<T>&)': program.h:147: warning: `TPROGRAM<T>::const_iterator' is implicitly a typename program.h:147: warning: implicit typename is deprecated, please see the documentation for details In file included from dl.h:98, from generate.C:8: depgraph.h: In member function `void COMPONENT_FACTORY::preprocessComponents() ': depgraph.h:675: internal compiler error: in pop_binding, at cp/decl.c:1181 Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions. Honza > > > If the numbers people have been tossing around are real then these are > > very serious regressions and we should consider slipping the schedule > > rather than releasing a compiler with those sorts of performance > > problems. > > Here are some timings from that PR: > gcc-3.0.4/bin/g++ 45.45 user > gcc-3.1.1/bin/g++ 57.79 user +27% > gcc-3.2.1/bin/g++ 59.30 user +30% > gcc-current/bin/g++ 72.29 user +59% > > Devang asked me wrt. to number w/o optimization: > > On Fri, 25 Oct 2002, Devang Patel wrote: > > Is it possible to get numbers for compilations without optimization? > > Now, that's quite interesting: > > /sw/gcc-3.0.4/bin/g++ > 25.60 real 24.66 user 0.63 sys > /sw/gcc-3.1.1/bin/g++ > 28.44 real 26.88 user 0.98 sys > /sw/gcc-3.2.1/bin/g++ > 28.71 real 27.17 user 0.65 sys > /sw/gcc-current/bin/g++ > 32.14 real 31.06 user 0.59 sys > > That is, we are already quite bad (and regress) without optimization. > > Gerald > -- > Gerald "Jerry" pfeifer@dbai.tuwien.ac.at http://www.pfeifer.com/gerald/ ^ permalink raw reply [flat|nested] 30+ messages in thread
[parent not found: <200212100246.gBA2kujF029585@gremlin.ics.uci.edu>]
* Re: compile time regressions (was: merging for 3.4) [not found] ` <200212100246.gBA2kujF029585@gremlin.ics.uci.edu> @ 2002-12-09 23:26 ` Neil Booth 2002-12-10 6:58 ` Daniel Berlin [not found] ` <20021210112458.4f4b10ca.bkoz@redhat.com> 1 sibling, 1 reply; 30+ messages in thread From: Neil Booth @ 2002-12-09 23:26 UTC (permalink / raw) To: Dan Nicolaescu; +Cc: libstdc++, gcc Dan Nicolaescu wrote:- > It looks like there was a significant increase in the garbage > collection time. It's strange that GC is so expensive for C++ > compilation. I think GC is turning out to be a mistake, even though it saves us from nasty memory issues. It means we have no idea what code is gradually getting worse; it just shows up as "GC". And it gives poor locality. Neil. ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: compile time regressions (was: merging for 3.4) 2002-12-09 23:26 ` Neil Booth @ 2002-12-10 6:58 ` Daniel Berlin 0 siblings, 0 replies; 30+ messages in thread From: Daniel Berlin @ 2002-12-10 6:58 UTC (permalink / raw) To: Neil Booth; +Cc: Dan Nicolaescu, libstdc++, gcc On Tuesday, December 10, 2002, at 01:37 AM, Neil Booth wrote: > Dan Nicolaescu wrote:- > >> It looks like there was a significant increase in the garbage >> collection time. It's strange that GC is so expensive for C++ >> compilation. > > I think GC is turning out to be a mistake, even though it saves > us from nasty memory issues. It means we have no idea what code > is gradually getting worse; it just shows up as "GC". And it > gives poor locality. The partial solution to this is generational copying collection. (The full solution is to use garbage collected pools/arena so that we are allocating things we access together, together). Our poor locality is also generally from the fragmentation of memory that is occurring. So is our large footprint. We could at least start with a non-generational copying collector (to avoid needing a barrier) and see if it helps. It's not too hard to turn gengtype into something that emits copying routines, reusing the mark bit as our bit to determine forwarded pointers. I can actually say it's not too hard because I did it one day when i was bored. Took a few hours, and i never completely finished converting (mainly didn't feel like transforming the ggc_test_and_set_mark calls and blocks at the time), but it's doable. If you zero out the old space, you'll quickly discover where we have pointers to gc'd info from non-gc'd things. :) > > Neil. ^ permalink raw reply [flat|nested] 30+ messages in thread
[parent not found: <20021210112458.4f4b10ca.bkoz@redhat.com>]
* Re: compile time regressions (was: merging for 3.4) [not found] ` <20021210112458.4f4b10ca.bkoz@redhat.com> @ 2002-12-10 13:39 ` Neil Booth 2002-12-10 14:24 ` Mike Stump 0 siblings, 1 reply; 30+ messages in thread From: Neil Booth @ 2002-12-10 13:39 UTC (permalink / raw) To: Benjamin Kosnik Cc: Dan Nicolaescu, pfeifer, echristo, hubicka, jbuck, dnovillo, mark, gdr, pcarlini, libstdc++, gcc Benjamin Kosnik wrote:- > > > gcc-3.0.4/bin/g++ 45.45 user > > > gcc-3.1.1/bin/g++ 57.79 user +27% > > > gcc-3.2.1/bin/g++ 59.30 user +30% > > > gcc-current/bin/g++ 72.29 user +59% > > These indicate, to me, that the slowdown has nothing to do with > libstd++-v3. There just weren't substantial changes in the library > includes to cause this kind of slowdown between 3.0.x and 3.2.x. > > It also indicates the PCH will be less and less useful unless the other > bits are brought back to normal. Depressing. That's what scares me about PCH - I'm afraid it'll be used as an excuse not to fix some of the real problems we have, because "we're fast enough now". I'd rather wait until we have good performance without PCH before allowing PCH, though I realize that's not gonna fly. Neil. ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: compile time regressions (was: merging for 3.4) 2002-12-10 13:39 ` Neil Booth @ 2002-12-10 14:24 ` Mike Stump 2002-12-10 14:30 ` Neil Booth 0 siblings, 1 reply; 30+ messages in thread From: Mike Stump @ 2002-12-10 14:24 UTC (permalink / raw) To: Neil Booth Cc: Benjamin Kosnik, Dan Nicolaescu, pfeifer, echristo, hubicka, jbuck, dnovillo, mark, gdr, pcarlini, libstdc++, gcc On Tuesday, December 10, 2002, at 12:33 PM, Neil Booth wrote: > That's what scares me about PCH - I'm afraid it'll be used as an excuse > not to fix some of the real problems we have, because "we're fast > enough > now". I'd rather wait until we have good performance without PCH > before > allowing PCH, though I realize that's not gonna fly. No, no, you have it backwards... PCH is going to expose all that slow code that should be fast, that has to be fast, so that we can fix it. By being 12x faster, or just 2x faster, there is _much_ less room to be slow, not more, really. ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: compile time regressions (was: merging for 3.4) 2002-12-10 14:24 ` Mike Stump @ 2002-12-10 14:30 ` Neil Booth 2002-12-10 14:40 ` Mike Stump 2002-12-10 15:17 ` Jan Hubicka 0 siblings, 2 replies; 30+ messages in thread From: Neil Booth @ 2002-12-10 14:30 UTC (permalink / raw) To: Mike Stump Cc: Benjamin Kosnik, Dan Nicolaescu, pfeifer, echristo, hubicka, jbuck, dnovillo, mark, gdr, pcarlini, libstdc++, gcc Mike Stump wrote:- > No, no, you have it backwards... PCH is going to expose all that slow > code that should be fast, that has to be fast, so that we can fix it. > By being 12x faster, or just 2x faster, there is _much_ less room to be > slow, not more, really. But slow code in things that PCH elides won't get exposed by the very nature of PCH. e.g. drastic CPP slowdowns (not gonna happen!), or say the parser. Neil. ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: compile time regressions (was: merging for 3.4) 2002-12-10 14:30 ` Neil Booth @ 2002-12-10 14:40 ` Mike Stump 2002-12-10 15:17 ` Jan Hubicka 1 sibling, 0 replies; 30+ messages in thread From: Mike Stump @ 2002-12-10 14:40 UTC (permalink / raw) To: Neil Booth Cc: Benjamin Kosnik, Dan Nicolaescu, pfeifer, echristo, hubicka, jbuck, dnovillo, mark, gdr, pcarlini, libstdc++, gcc On Tuesday, December 10, 2002, at 02:23 PM, Neil Booth wrote: >> No, no, you have it backwards... PCH is going to expose all that slow >> code that should be fast, that has to be fast, so that we can fix it. >> By being 12x faster, or just 2x faster, there is _much_ less room to >> be >> slow, not more, really. > > But slow code in things that PCH elides won't get exposed by the very > nature of PCH. e.g. drastic CPP slowdowns (not gonna happen!), or say > the parser. This is called pch build time. It is important, just not that important. In a 10 minute compile, it might be 20 seconds. Also, by having cycle counter times in -freport-time, and measuring pch build time, one can speed that up, arbitrarily fast, if one wants. You'll notice however, that more time is wasted reconsidering in cxx_finish_file however. :-) ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: compile time regressions (was: merging for 3.4) 2002-12-10 14:30 ` Neil Booth 2002-12-10 14:40 ` Mike Stump @ 2002-12-10 15:17 ` Jan Hubicka 1 sibling, 0 replies; 30+ messages in thread From: Jan Hubicka @ 2002-12-10 15:17 UTC (permalink / raw) To: Neil Booth Cc: Mike Stump, Benjamin Kosnik, Dan Nicolaescu, pfeifer, echristo, hubicka, jbuck, dnovillo, mark, gdr, pcarlini, libstdc++, gcc > Mike Stump wrote:- > > > No, no, you have it backwards... PCH is going to expose all that slow > > code that should be fast, that has to be fast, so that we can fix it. > > By being 12x faster, or just 2x faster, there is _much_ less room to be > > slow, not more, really. > > But slow code in things that PCH elides won't get exposed by the very > nature of PCH. e.g. drastic CPP slowdowns (not gonna happen!), or say > the parser. I don't think so. It will make parser to do about comparable amount of work to backend, so it will bring us into more realistic picture. Right now for certain class of C++ code it is almost uninteresting to optimize backend becuase parsing is so slow. Not so for Java, fortran and many C programs. There is lots of time wasted in all parts of GCC (yes, CPP is now probably the very notable exception :) And PCH is not improtant only because of precompiled headers. It is first step towards whole program optimization that will bring all sorts of new performance problem, so I am not affraid that we will once feel that GCC is fast. Honza > > Neil. ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: merging for 3.4 (was Re: [Patch] Qualify min(), max() ...) 2002-12-04 13:40 ` Neil Booth [not found] ` <20021204214715.GR5173@kam.mff.cuni.cz> 2002-12-04 14:00 ` Eric Christopher @ 2002-12-04 14:23 ` Daniel Berlin 2 siblings, 0 replies; 30+ messages in thread From: Daniel Berlin @ 2002-12-04 14:23 UTC (permalink / raw) To: Neil Booth Cc: Jan Hubicka, Joe Buck, Diego Novillo, Mark Mitchell, Benjamin Kosnik, Gabriel Dos Reis, pcarlini, libstdc++, gcc On Wed, 4 Dec 2002, Neil Booth wrote: > Jan Hubicka wrote:- > > > Compiler is getting slower in each release but that is mostly cumulative > > result of adding new features current infrastructure can't accept > > cheaply... > > I hate this slowness. There's no reason IMO that GCC couldn't be 4 > times faster than it is, without any PCH or anything. A lot of the > code we use is just awfully inefficient. And people are working on > more interesting things than fixing some of the real problems we have. This is one of the very reasons for tree-ssa. So we can do most of the slow crap we do in the backend (attempts at high level loop optimizations, etc), in the frontend at a reasonable speed with good algorithms (it's hard to do at reasonable speed in the backend because we end up trying to recreate info we already have). Most compiler backends consist mainly of cheap optimizations, register allocation, and scheduling. That's it. > There's no excuse for the parser taking more time than CPP for example; > currently it takes about 4-5 times as long. I want to see GCC so fast > that CPP is up to 5-10% of CPU time. It's rarely much above 1 or 2%. > > Neil. > ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: merging for 3.4 (was Re: [Patch] Qualify min(), max() ...) 2002-12-04 12:55 ` Joe Buck 2002-12-04 13:08 ` Jan Hubicka @ 2002-12-04 14:20 ` Daniel Berlin 1 sibling, 0 replies; 30+ messages in thread From: Daniel Berlin @ 2002-12-04 14:20 UTC (permalink / raw) To: Joe Buck Cc: Diego Novillo, Mark Mitchell, Benjamin Kosnik, Gabriel Dos Reis, pcarlini, libstdc++, gcc On Wed, 4 Dec 2002, Joe Buck wrote: > Diego writes: > > > Whether tree SSA can be merged for 3.4 will depend on the state > > of the branch by the time the Stage 1 window closes. We are > > making rapid progress but I would like to have the following in > > place: > > [ stuff deleted ] > > > - Performance issues. Right now the code generated by the tree > > optimizers is worse than the RTL optimizers. This is to be > > expected at this stage and the whole tree optimization process > > can be disabled. So, in principle I don't see a real problem > > with merging the infrastructure in. > > To me, this is critical. GCC has, by some measures, slowly been getting > worse and worse. I believe in the tree-ssa concept, but I don't think > that it should be accepted until it is a clear win. It's only not because it doesn't have any optimizations enabled right now besides CCP. Even copy propagation isn't enabled by default right now. Once copy propagation is enabled before CCP, and DCE is run after CCP, i would expect it will be a clear win or no lose. This should occur before 3.4 branches, unless lightning strikes all of us dead. Though if it doesn't, i'd say we should wait for 3.5. --Dan ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [Patch] Qualify min(), max() and distance() in v3. 2002-12-04 8:41 ` [Patch] Qualify min(), max() and distance() in v3 Mark Mitchell 2002-12-04 11:41 ` merging for 3.4 (was Re: [Patch] Qualify min(), max() ...) Diego Novillo @ 2002-12-04 11:44 ` Benjamin Kosnik 1 sibling, 0 replies; 30+ messages in thread From: Benjamin Kosnik @ 2002-12-04 11:44 UTC (permalink / raw) To: Mark Mitchell; +Cc: gdr, pcarlini, libstdc++, gcc >I'm having a tough time. > >When I set schedules, people complain that we can't do that, since we >need volunteers. In practice, we're missing dates because people aren't >stepping up to fix regressions as quickly as we'd like. > >On the other hand, without a schedule, I understand that planning is >tough. > >I'll admit that I'm a bit befuddled about how to "manage"; I can say >what makes sense to put into the releases, but I don't have the >authority to manage the people. So, I muddle along... Unquestionably, you're doing a great job in a difficult and demanding position. Kudos. >The best thing people can do is to fix the really high-priority 3.3 >bugs, so that I fell confident about making that branch. The most >important bugs are wrong-code, and ice-on-legal-code. Ok. Is there a list of the particular ones that should be tracked? >I'll make you a deal; we'll cut the branch no latter than Dec 15th. > >After that, I expect the sequence you said: BIB->mainline, the new >C++ parser, and then (perhaps) some tree optimizer stuff, although >I haven't really gotten the impression that stuff is fully ready yet. Wow! Cool. I was thinking about the tree-ssa bits, and also Vlad's Itanium2 bundling work, but since I don't really know what's up with that I'll let other, more capable, hands figure that out. I'm just glad there's a well-defined plan, man. :) Thanks! -benjamin ^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: merging for 3.4 (was Re: [Patch] Qualify min(), max() ...)
@ 2002-12-04 14:25 Robert Dewar
0 siblings, 0 replies; 30+ messages in thread
From: Robert Dewar @ 2002-12-04 14:25 UTC (permalink / raw)
To: neil, toon
Cc: bkoz, dnovillo, gcc, gdr, hubicka, jbuck, libstdc++, mark, pcarlini
> Once again I'm repeating the old adage: People *never* complain to my
> about the speed of g77, just about the speed of the generated code.
I must say this corresponds to our experience so far, we were worried about
GNAT 5 (based on GCC 3) being significantly slower to compile than GNAT 3
(based on GCC 2.8.1) but so far that has not been a significant concern
among our customers beta testing the GANT 5 technology.
^ permalink raw reply [flat|nested] 30+ messages in thread
end of thread, other threads:[~2002-12-10 23:07 UTC | newest] Thread overview: 30+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- [not found] <20021204102528.75c8b5cc.bkoz@redhat.com> 2002-12-04 8:41 ` [Patch] Qualify min(), max() and distance() in v3 Mark Mitchell 2002-12-04 11:41 ` merging for 3.4 (was Re: [Patch] Qualify min(), max() ...) Diego Novillo 2002-12-04 11:47 ` David Edelsohn 2002-12-04 11:52 ` Gabriel Dos Reis 2002-12-04 11:58 ` David Edelsohn 2002-12-04 12:00 ` Mark Mitchell 2002-12-04 12:21 ` Jan Hubicka 2002-12-06 12:40 ` Frank Ch. Eigler 2002-12-04 11:49 ` Jan Hubicka 2002-12-04 12:01 ` Diego Novillo 2002-12-04 12:55 ` Joe Buck 2002-12-04 13:08 ` Jan Hubicka 2002-12-04 13:40 ` Neil Booth [not found] ` <20021204214715.GR5173@kam.mff.cuni.cz> 2002-12-04 13:52 ` Neil Booth 2002-12-04 14:05 ` Toon Moene 2002-12-04 14:00 ` Eric Christopher 2002-12-04 14:08 ` Matt Austern 2002-12-05 12:40 ` compile time regressions (was: merging for 3.4) Gerald Pfeifer 2002-12-05 13:00 ` Jan Hubicka [not found] ` <200212100246.gBA2kujF029585@gremlin.ics.uci.edu> 2002-12-09 23:26 ` Neil Booth 2002-12-10 6:58 ` Daniel Berlin [not found] ` <20021210112458.4f4b10ca.bkoz@redhat.com> 2002-12-10 13:39 ` Neil Booth 2002-12-10 14:24 ` Mike Stump 2002-12-10 14:30 ` Neil Booth 2002-12-10 14:40 ` Mike Stump 2002-12-10 15:17 ` Jan Hubicka 2002-12-04 14:23 ` merging for 3.4 (was Re: [Patch] Qualify min(), max() ...) Daniel Berlin 2002-12-04 14:20 ` Daniel Berlin 2002-12-04 11:44 ` [Patch] Qualify min(), max() and distance() in v3 Benjamin Kosnik 2002-12-04 14:25 merging for 3.4 (was Re: [Patch] Qualify min(), max() ...) Robert Dewar
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).