Ignore:
Timestamp:
Sep 7, 2004, 3:33:15 AM (21 years ago)
Author:
bird
Message:

GCC v3.3.4 - official sources.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/GNU/src/gcc/BUGS

    • Property cvs2svn:cvs-rev changed from 1.1.1.2 to 1.1.1.3
    r1463 r1464  
    1919          + [10]C++
    2020               o [11]Missing features
    21                o [12]Bugs fixed in the upcoming 3.4 series
     21               o [12]Bugs fixed in the 3.4 series
    2222          + [13]Fortran
    2323     * [14]Non-bugs
     
    256256          definitions may be included from the header.
    257257
    258   Bugs fixed in the upcoming 3.4 series
     258  Bugs fixed in the 3.4 series
    259259
    260260   The following bugs are present up to (and including) GCC 3.3.x. They
     
    365365          on others.
    366366
    367           The is the result of rounding: The computer cannot represent
     367          This is the result of rounding: The computer cannot represent
    368368          all real numbers exactly, so it has to use approximations. When
    369369          computing with approximation, the computer needs to round to
     
    588588          scope operator.
    589589
     590   Copy constructor access check while initializing a reference.
     591          Consider this code:
     592
     593class A
     594{
     595public:
     596  A();
     597
     598private:
     599  A(const A&);   // private copy ctor
     600};
     601
     602A makeA(void);
     603void foo(const A&);
     604
     605void bar(void)
     606{
     607  foo(A());       // error, copy ctor is not accessible
     608  foo(makeA());   // error, copy ctor is not accessible
     609
     610  A a1;
     611  foo(a1);        // OK, a1 is a lvalue
     612}
     613
     614          Starting with GCC 3.4.0, binding an rvalue to a const reference
     615          requires an accessible copy constructor. This might be
     616          surprising at first sight, especially since most popular
     617          compilers do not correctly implement this rule.
     618
     619          The C++ Standard says that a temporary object should be created
     620          in this context and its contents filled with a copy of the
     621          object we are trying to bind to the reference; it also says
     622          that the temporary copy can be elided, but the semantic
     623          constraints (eg. accessibility) of the copy constructor still
     624          have to be checked.
     625
     626          For further information, you can consult the following
     627          paragraphs of the C++ standard: [dcl.init.ref]/5, bullet 2,
     628          sub-bullet 1, and [class.temporary]/2.
     629
    590630  Common problems when upgrading the compiler
    591631
    592632    ABI changes
    593633
    594    The application binary interface (ABI) defines how the elements of
    595    classes are laid out, how functions are called, how function names are
    596    mangled etc. It usually changes with each major release (i.e. when the
    597    first or second part of the version number changes). You must
    598    recompile all C++ libraries, or you risk linker errors or
    599    malfunctioning programs. However, the ABI is not changed with bug-fix
    600    releases (i.e. when the third part of the version number changes). The
    601    code should be binary compatible among these versions.
     634   The C++ application binary interface (ABI) consists of two components:
     635   the first defines how the elements of classes are laid out, how
     636   functions are called, how function names are mangled, etc; the second
     637   part deals with the internals of the objects in libstdc++. Although we
     638   strive for a non-changing ABI, so far we have had to modify it with
     639   each major release. If you change your compiler to a different major
     640   release you must recompile all libraries that contain C++ code. If you
     641   fail to do so you risk getting linker errors or malfunctioning
     642   programs. Some of our Java support libraries also contain C++ code, so
     643   you might want to recompile all libraries to be safe. It should not be
     644   necessary to recompile if you have changed to a bug-fix release of the
     645   same version of the compiler; bug-fix releases are careful to avoid
     646   ABI changes. See also the [34]compatibility section of the GCC manual.
     647
     648   Remark: A major release is designated by a change to the first or
     649   second component of the two- or three-part version number. A minor
     650   (bug-fix) release is designated by a change to the third component
     651   only. Thus GCC 3.2 and 3.3 are major releases, while 3.3.1 and 3.3.2
     652   are bug-fix releases for GCC 3.3. With the 3.4 series we are
     653   introducing a new naming scheme; the first release of this series is
     654   3.4.0 instead of just 3.4.
    602655
    603656    Standard conformance
    604657
    605658   With each release, we try to make G++ conform closer to the ISO C++
    606    standard (available at [34]http://www.ncits.org/cplusplus.htm). We
     659   standard (available at [35]http://www.ncits.org/cplusplus.htm). We
    607660   have also implemented some of the core and library defect reports
    608661   (available at
    609    [35]http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/cwg_defects.html &
    610    [36]http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html
     662   [36]http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html &
     663   [37]http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html
    611664   respectively).
    612665
     
    620673
    621674   Two milestones in standard conformance are GCC 3.0 (including a major
    622    overhaul of the standard library) and the upcoming 3.4.0 version (with
    623    its new C++ parser).
     675   overhaul of the standard library) and the 3.4.0 version (with its new
     676   C++ parser).
    624677
    625678    New in GCC 3.0
     
    713766
    714767   In addition to the problems listed above, the manual contains a
    715    section on [37]Common Misunderstandings with GNU C++.
     768   section on [38]Common Misunderstandings with GNU C++.
    716769
    717770References
     
    750803  32. http://mail-index.NetBSD.org/tech-kern/2003/08/11/0001.html
    751804  33. http://www.gnu.org/software/libc/
    752   34. http://www.ncits.org/cplusplus.htm
    753   35. http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/cwg_defects.html
    754   36. http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html
    755   37. http://gcc.gnu.org/onlinedocs/gcc/C---Misunderstandings.html
     805  34. http://gcc.gnu.org/onlinedocs/gcc/Compatibility.html
     806  35. http://www.ncits.org/cplusplus.htm
     807  36. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html
     808  37. http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html
     809  38. http://gcc.gnu.org/onlinedocs/gcc/C---Misunderstandings.html
Note: See TracChangeset for help on using the changeset viewer.