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.html

    • Property cvs2svn:cvs-rev changed from 1.1.1.2 to 1.1.1.3
    r1463 r1464  
    3030    <ul>
    3131    <li><a href="#missing">Missing features</a></li>
    32     <li><a href="#fixed34">Bugs fixed in the upcoming 3.4 series</a></li>
     32    <li><a href="#fixed34">Bugs fixed in the 3.4 series</a></li>
    3333    </ul>
    3434  </li>
     
    316316</dl>
    317317
    318 <h3><a name="fixed34">Bugs fixed in the upcoming 3.4 series</a></h3>
     318<h3><a name="fixed34">Bugs fixed in the 3.4 series</a></h3>
    319319
    320320<p>The following bugs are present up to (and including) GCC 3.3.x.
     
    443443others.</p>
    444444
    445 <p>The is the result of <em>rounding</em>: The computer cannot
     445<p>This is the result of <em>rounding</em>: The computer cannot
    446446represent all real numbers exactly, so it has to use
    447447approximations. When computing with approximation, the computer needs
     
    686686::X&gt;</code>, i.e. place a space between the opening angle bracket
    687687and the scope operator.</p></dd>
     688
     689
     690<dt><a name="cxx_rvalbind">Copy constructor access check while
     691initializing a reference.</a></dt>
     692
     693<dd><p>Consider this code:</p>
     694
     695<blockquote><pre>
     696class A
     697{
     698public:
     699  A();
     700
     701private:
     702  A(const A&amp;);   // private copy ctor
     703};
     704
     705A makeA(void);
     706void foo(const A&amp;);
     707
     708void bar(void)
     709{
     710  foo(A());       // error, copy ctor is not accessible
     711  foo(makeA());   // error, copy ctor is not accessible
     712
     713  A a1;
     714  foo(a1);        // OK, a1 is a lvalue
     715}</pre></blockquote>
     716
     717<p>Starting with GCC 3.4.0, binding an rvalue to a const reference requires
     718an accessible copy constructor. This might be surprising at first sight,
     719especially since most popular compilers do not correctly implement this
     720rule.</p>
     721
     722<p>The C++ Standard says that a temporary object should be created in
     723this context and its contents filled with a copy of the object we are
     724trying to bind to the reference; it also says that the temporary copy
     725can be elided, but the semantic constraints (eg. accessibility) of the
     726copy constructor still have to be checked.</p>
     727
     728<p>For further information, you can consult the following paragraphs of
     729the C++ standard: [dcl.init.ref]/5, bullet 2, sub-bullet 1, and
     730[class.temporary]/2.</p></dd>
    688731</dl>
    689732
     
    692735<h4>ABI changes</h4>
    693736
    694 <p>The application binary interface (ABI) defines how the elements of
    695 classes are laid out, how functions are called, how function names are
    696 mangled etc.  It usually changes with each major release (i.e. when the
    697 first or second part of the version number changes).  You <em>must</em>
    698 recompile all C++ libraries, or you risk linker errors or malfunctioning
    699 programs.  However, the ABI is not changed with bug-fix releases (i.e.
    700 when the third part of the version number changes).  The code should be
    701 binary compatible among these versions.</p>
     737<p>The C++ application binary interface (ABI) consists of two
     738components: the first defines how the elements of classes are laid
     739out, how functions are called, how function names are mangled, etc;
     740the second part deals with the internals of the objects in libstdc++.
     741Although we strive for a non-changing ABI, so far we have had to
     742modify it with each major release.  If you change your compiler to a
     743different major release <em>you must recompile all libraries that
     744contain C++ code</em>.  If you fail to do so you risk getting linker
     745errors or malfunctioning programs.  Some of our Java support libraries
     746also contain C++ code, so you might want to recompile all libraries to
     747be safe.  It should not be necessary to recompile if you have changed
     748to a bug-fix release of the same version of the compiler; bug-fix
     749releases are careful to avoid ABI changes. See also the
     750<a href="onlinedocs/gcc/Compatibility.html">compatibility section</a>
     751of the GCC manual.</p>
     752
     753<p>Remark: A major release is designated by a change to the first or second
     754component of the two- or three-part version number.  A minor (bug-fix)
     755release is designated by a change to the third component only.  Thus GCC
     7563.2 and 3.3 are major releases, while 3.3.1 and 3.3.2 are bug-fix releases
     757for GCC 3.3.  With the 3.4 series we are introducing a new naming scheme;
     758the first release of this series is 3.4.0 instead of just 3.4.</p>
    702759
    703760<h4>Standard conformance</h4>
     
    708765We have also implemented some of the core and library defect reports
    709766(available at
    710 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/cwg_defects.html">http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/cwg_defects.html</a>
     767<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html">http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html</a>
    711768&amp;
    712 <a href="http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html">http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html</a>
     769<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html">http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html</a>
    713770respectively).</p>
    714771
     
    721778
    722779<p>Two milestones in standard conformance are GCC 3.0 (including a major
    723 overhaul of the standard library) and the upcoming 3.4.0 version (with its
    724 new C++ parser).</p>
     780overhaul of the standard library) and the 3.4.0 version (with its new C++
     781parser).</p>
    725782
    726783<h4>New in GCC 3.0</h4>
Note: See TracChangeset for help on using the changeset viewer.