Changeset 1464 for branches/GNU/src/gcc/bugs.html
- Timestamp:
- Sep 7, 2004, 3:33:15 AM (21 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/GNU/src/gcc/bugs.html
-
Property cvs2svn:cvs-rev
changed from
1.1.1.2
to1.1.1.3
r1463 r1464 30 30 <ul> 31 31 <li><a href="#missing">Missing features</a></li> 32 <li><a href="#fixed34">Bugs fixed in the upcoming3.4 series</a></li>32 <li><a href="#fixed34">Bugs fixed in the 3.4 series</a></li> 33 33 </ul> 34 34 </li> … … 316 316 </dl> 317 317 318 <h3><a name="fixed34">Bugs fixed in the upcoming3.4 series</a></h3>318 <h3><a name="fixed34">Bugs fixed in the 3.4 series</a></h3> 319 319 320 320 <p>The following bugs are present up to (and including) GCC 3.3.x. … … 443 443 others.</p> 444 444 445 <p>Th eis the result of <em>rounding</em>: The computer cannot445 <p>This is the result of <em>rounding</em>: The computer cannot 446 446 represent all real numbers exactly, so it has to use 447 447 approximations. When computing with approximation, the computer needs … … 686 686 ::X></code>, i.e. place a space between the opening angle bracket 687 687 and the scope operator.</p></dd> 688 689 690 <dt><a name="cxx_rvalbind">Copy constructor access check while 691 initializing a reference.</a></dt> 692 693 <dd><p>Consider this code:</p> 694 695 <blockquote><pre> 696 class A 697 { 698 public: 699 A(); 700 701 private: 702 A(const A&); // private copy ctor 703 }; 704 705 A makeA(void); 706 void foo(const A&); 707 708 void 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 718 an accessible copy constructor. This might be surprising at first sight, 719 especially since most popular compilers do not correctly implement this 720 rule.</p> 721 722 <p>The C++ Standard says that a temporary object should be created in 723 this context and its contents filled with a copy of the object we are 724 trying to bind to the reference; it also says that the temporary copy 725 can be elided, but the semantic constraints (eg. accessibility) of the 726 copy constructor still have to be checked.</p> 727 728 <p>For further information, you can consult the following paragraphs of 729 the C++ standard: [dcl.init.ref]/5, bullet 2, sub-bullet 1, and 730 [class.temporary]/2.</p></dd> 688 731 </dl> 689 732 … … 692 735 <h4>ABI changes</h4> 693 736 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 738 components: the first defines how the elements of classes are laid 739 out, how functions are called, how function names are mangled, etc; 740 the second part deals with the internals of the objects in libstdc++. 741 Although we strive for a non-changing ABI, so far we have had to 742 modify it with each major release. If you change your compiler to a 743 different major release <em>you must recompile all libraries that 744 contain C++ code</em>. If you fail to do so you risk getting linker 745 errors or malfunctioning programs. Some of our Java support libraries 746 also contain C++ code, so you might want to recompile all libraries to 747 be safe. It should not be necessary to recompile if you have changed 748 to a bug-fix release of the same version of the compiler; bug-fix 749 releases are careful to avoid ABI changes. See also the 750 <a href="onlinedocs/gcc/Compatibility.html">compatibility section</a> 751 of the GCC manual.</p> 752 753 <p>Remark: A major release is designated by a change to the first or second 754 component of the two- or three-part version number. A minor (bug-fix) 755 release is designated by a change to the third component only. Thus GCC 756 3.2 and 3.3 are major releases, while 3.3.1 and 3.3.2 are bug-fix releases 757 for GCC 3.3. With the 3.4 series we are introducing a new naming scheme; 758 the first release of this series is 3.4.0 instead of just 3.4.</p> 702 759 703 760 <h4>Standard conformance</h4> … … 708 765 We have also implemented some of the core and library defect reports 709 766 (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> 711 768 & 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> 713 770 respectively).</p> 714 771 … … 721 778 722 779 <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 its724 new C++parser).</p>780 overhaul of the standard library) and the 3.4.0 version (with its new C++ 781 parser).</p> 725 782 726 783 <h4>New in GCC 3.0</h4> -
Property cvs2svn:cvs-rev
changed from
Note:
See TracChangeset
for help on using the changeset viewer.