GCC 3.3.1 Released 55
Wiz writes "The latest and greatest version of gcc is now out - v3.3.1! As an update to the current version, it is bug fixes only. You can find the list of changes here and you can download it from their mirror sites. Enjoy!"
Suitable for kernel yet? (Score:2, Interesting)
Re:Suitable for kernel yet? (Score:5, Informative)
Linux version 2.4.20 (root@server) (gcc version 3.2.1) up 148 days, 14:27
Linux version 2.6.0-test3 (ken@workstation) (gcc version 3.3.1)
Re:Suitable for kernel yet? (Score:2, Funny)
Re:Suitable for kernel yet? (Score:2)
Re:Suitable for kernel yet? (Score:3, Informative)
P4/SSE2 fixed (Score:2, Informative)
Speed? (Score:4, Interesting)
Rumour has it the plain-old-C compilation speeds are getting slower and slower every gcc release these days.
I don't have any measurements, I'm just wondering whether the new and cool feature stuff and possible speed increases in the resulting object code warrant migration from, say, 2.95.x whatever.
Standards conformance improvements are another thing but for the casual developer I guess gcc's been pretty good for quite a while now.
These enhancement would make it compile slower... (Score:4, Informative)
It remains to be seen whether the extra performance gained by running these would offset the extra time spent running them, especially under a self-built version of gcc. The reorder-functions option was way overdue in gcc.
BTW: "bug-fix release, my ass." You don't add stuff like this in a bug-fix release.
Re:These enhancement would make it compile slower. (Score:2)
Given the generality of the g'grantparent question, I suspect the answer applies anyway. (-:
Re:These enhancement would make it compile slower. (Score:4, Informative)
Re:These enhancement would make it compile slower. (Score:1)
3.3.1 is really a bugfix
Re:Speed? (Score:1)
It was mainly due to the new garbage collection based memory management scheme and the new inliner.
Since GCC 3.0, the compilation speed didn't change that much except maybe for some programs that happened to be particularly bad for the inliner heuristics.
Marcel
Here's a table (Score:5, Insightful)
GCC Compilation Comparison [myownlittleworld.com]
The rumors have some foundation. For one particular C program, on one particular machine, at the particular optimization level of -O2:
gcc 3.0.4 takes 28% more time than gcc 2.95.3
gcc 3.1.1 takes 24% more time than gcc 3.0.4
gcc 3.2.3 takes 7% more time than gcc 3.1.1
gcc 3.3 takes 5% more time than gcc 3.2.3
gcc 3.4* takes 6% more time than gcc 3.3
gcc 3.5* takes 9% more time than gcc 3.4*
The "3.4*" and "3.5*" are cvs versions as of a certain date, as these versions are far from release.
Here are some release dates:
2001-03-22 gcc 2.95.3
2002-02-21 gcc 3.0.4
2002-07-26 gcc 3.1.1
2003-04-23 gcc 3.2.3
2003-05-14 gcc 3.3
Correlating these:
gcc 3.0.4, 11 months, 28%
gcc 3.1.1, 5 months, 24%
gcc 3.2.3, 9 months, 5%
The next gcc will be gcc 3.3.2 and it is estimated for October 1. If it meets that date, and if it continues to have the same performance as gcc 3.3 and gcc 3.3.1, then that would be: 4 months, 5%.
If you use Moore's Law to estimate processor speed then your CPU is getting 100% faster every 18 months, or 4% faster per month. So in the period from 2.95.3 to 3.1.1 gcc was getting slower about the same rate as processors were getting faster. Since 3.1.1, gcc is getting slower at just 1% a month or so, and processors are getting faster at 4% a month.
Refinements to my model welcomed.
As far the trade-off goes: "compile speed" is one dimension and "new and cool features" is another dimension and "object code speed" is yet another dimension. There is no universal answer about trade-offs between dimensions, you just have to make the decision yourself.
Re:Here's a table (Score:1)
Also, to help developers, an effort has been made to speed up GCC 3.3.x at -O0 where it is faster than GCC 3.1.x and 3.2.x.
Marcel
Re:Here's a table (Score:2)
Wha?
These are run times, in seconds ... what the heck are you talking about?
Also, to help developers, an effort has been made to speed up GCC 3.3.x at -O0 where it is faster than GCC 3.1.x and 3.2.x
That's true.
Re:Here's a table (Score:1)
The numbers in the first table on the page show GCC 3.1.1 to take more time than 3.2.3 for all cases except for -O1 where there is only a 0.01s difference. Also, I have not been able to correlate the obsolute numbers of the first table to the percentages of the second table on that page.
Marcel
Someone's on drugs... (Score:2)
I see seriously different numbers with mozilla and Lynx. The Mozilla numbers are as I described, and the Lynx numbers are as you described.
The page in Mozilla says "All snapshots were from 20030614" and the page in Lynx says "All snapshots were from 20030725".
And the numbers for 3.1.1 and 3.2.3 are significantly different between the versions of the page.
Ouch!
Re:Here's a table (Score:2)
Java dead code removal? (Score:2, Interesting)
Does anyone know when dead code removal will be introduced to gcj? I'm linking statically to keep system dependencies very small but unfortunately my binary is reaching huge proportions but only because dead code removal does not work. (i.e. if I never use libc's printf(), don't put it in the final binary.)
This is NOT dead code removal (Score:5, Insightful)
Also, compared to libgcj, glibc's contribution of executable size is quite small (about 300~400k), so maybe optimizing libgcj is more important.
Dead code removal means that part of the source code that will never be executed (as decided by the compiler) will not turn into executable code. For the simplest example, in "if (0) { ... }" the whole statement will be skipped in executable code. Sometimes it is harder, for example "a = foo(); if (a == null) a = this; BLAH BLAH BLAH; if (a == null) { ... }".
Re:Java dead code removal? (Score:5, Informative)
Also static linking anything will grow your executable more than needed.
Dead code removal in your code, not libraries is done by GCC already and is being improved still.
Re:Java dead code removal? (Score:2)
I don't get it? Updates to an obseleted arch? (Score:1, Redundant)
...yet this is a supposedly obselete architecture?
Re:I don't get it? Updates to an obseleted arch? (Score:2)
Re:I don't get it? Updates to an obseleted arch? (Score:2, Insightful)
Marcel
Re:i386, MC68000 and others obseleted? (Score:3, Informative)
That's a good troll, and it would be funny, except that every time someone tries these jokes on /., they turn into outraged flamage on the GCC development lists.
If you care that much, provide the support in GCC. Either write the code yourself, or convince/hire someone else to do it for you. They've gone supported for a long time now, which means that nobody cares enough.
If you care, but not quite enough, then use an older compiler.
the same as your hardware..... (Score:2)
Don't update!
Re:i386, MC68000 and others obseleted? (Score:2)
With an older version of gcc, which still supports those architectures, and works just as well as ever?
i386 and 680x0 still supported! [bashes own skull] (Score:2)
You'll be fine if you use Debian 3.0, or NetBSD-current. AFAIK, you could also bootstrap NetBSD-stable with ELF support.
Now what would be really swell is a DFA-description for the 680x0 series, should
Oops, and there goes varargs.h... (Score:5, Interesting)
Bugger, that's gunner make a lot of older stuff harder to compile. Is there any particular reason that the grim reaper went postal with this version?
Re:Oops, and there goes varargs.h... (Score:2, Insightful)
Because maintaining it was a pain in the ass, and blocked the fixing of other bugs.
If you must compile older code, rather then a newer version of that code, then use an older compiler.
Re:Oops, and there goes varargs.h... (Score:4, Informative)
Remember most of the time when you use -traditional you really wanted the traditional preprocessor rather than the traditional c compiler so you can still use -traditional-cpp.
The reason why GCC removed -traditional because ISO C89 is already 13 years old and it was getting to hard to maintain those features.
Update the code to ISO C90 is not that hard any way because most of the time for varargs it just a replace with stdards and such.
Re:Oops, and there goes varargs.h... (Score:2)
True. If you have to edit it at all, this isn't much extra work.
It seems (Score:5, Funny)
Re:It seems (Score:3, Funny)
Re:It seems (Score:2)
Re:Evil GCC (Score:5, Informative)
know, the compiler+libraries used for
- C
- C++
- Objective C
- Fortran
- Ada
are LGPL'd (please correct me if not) and free of
the following issue seen on a mailing list:
The libjava of GCC is LGPL'd, however using the
imports keyword of java and inheriting a standard
java class makes use of the library so you MUST
LGPL your own code.
IMO Bullshit, because you could develop java code
using sunjdk and then only compile it using gcj,
but the FSF's politics isn't really nice.
I've also removed all the un-free GFDL'd documenta-
tion (i.e. anything which specifies front or back
cover texts and/or invariant sections), just like
the Debian project.
Good GCC (Was:Evil GCC) (Score:3, Informative)
Re:Good GCC (Was:Evil GCC) (Score:2)
recall someone from the FSF posting that using the
"imports" keyword of java (or was it spelled import?)
is actually importing code, not linking against it,
thus GPLing your gcj-developed code effectively.
I'm sorry to not have archived that posting.
Re:Good GCC (Was:Evil GCC) (Score:3, Insightful)
All java classes are compiled independently in individual files. The JVM "links" things at runtime. So, the GPL could only cover the runtime libraries at this point. However, it gets sticky because the compiler needs class information while it is compiling your class... so the compiler reads the
Re:Good GCC (Was:Evil GCC) (Score:2)
It's what a FSF person said. Not what I think
or mean.
Re:Evil GCC (Score:1)
The C++ library code is covered by the full-blown GPL with some additional rights. Quoting from fstream.cc:
Re:Evil GCC (Score:2)
and in Java(TM) are different things to the FSF.
Or importing. Don't really remember.
Re:TenDRA vs GCC (Score:2, Informative)
3.1. Compiling simple C++ programs does not work.
At this point, TenDRA only contains the bare minimum language support library, not the full standard C++ library. See the C++ producer documentation for more details.
GNU says "No" to SCO (Score:3, Informative)