In my opinion, the upgrade from g++ 4.1, used in Bulgaria last year,
not only is unnecessary but will inconvenience many competitors.
Indeed, using 4.4 confers no benefit that I can think of but has a
number of disadvantages such as:
* the >?, <?, >?=, and <?= operators have been removed.
* the <iostream> header no longer automatically includes <cstdio>.
* memset() and memcpy() are only available when <cstring> is included
(formerly including any of the STL headers would suffice).
More seriously, versions of g++ after 4.1 are buggy; I myself have
reported a bug that occurs in 4.4 and later (http://gcc.gnu.org/
bugzilla/show_bug.cgi?id=44731 ). Because the occurrence of this bug
is unpredictable to one who has not investigated it, and could cause
considerable confusion for competitors, I claim that this alone should
be enough to disqualify g++-4.4 from use at the IOI. (This is not
fixed in g++-4.5, and in fact g++-4.5 has even worse issues with debug
information, including causing gdb to report that a line doesn't exist
in the source file whereas in actual fact it does.)
There may be a point in the future when it would be a good idea to
upgrade from 4.1 (presumably when the advantages outweigh the
disadvantages, maybe when g++ fully supports C++0x) but I don't think
it is a good idea now. (I want to point out also that when SPOJ
upgraded g++ to 4.3, enough users complained that the admins also
retained g++-4.0.)
As of compiler bugs: Yes, there are bugs in GCC 4.4 which make it
produce incorrect code, but such bugs have been found in all versions
of GCC so far (or of any other compiler, except maybe for compilers
which nobody uses). GCC 4.1 is no exception, I have personally
reported a couple of nasty code generation bugs in it. So downgrading
the compiler does not really help.