Changeset 1464 for branches/GNU/src/gcc/BUGS
- Timestamp:
- Sep 7, 2004, 3:33:15 AM (21 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/GNU/src/gcc/BUGS
-
Property cvs2svn:cvs-rev
changed from
1.1.1.2
to1.1.1.3
r1463 r1464 19 19 + [10]C++ 20 20 o [11]Missing features 21 o [12]Bugs fixed in the upcoming3.4 series21 o [12]Bugs fixed in the 3.4 series 22 22 + [13]Fortran 23 23 * [14]Non-bugs … … 256 256 definitions may be included from the header. 257 257 258 Bugs fixed in the upcoming3.4 series258 Bugs fixed in the 3.4 series 259 259 260 260 The following bugs are present up to (and including) GCC 3.3.x. They … … 365 365 on others. 366 366 367 Th eis the result of rounding: The computer cannot represent367 This is the result of rounding: The computer cannot represent 368 368 all real numbers exactly, so it has to use approximations. When 369 369 computing with approximation, the computer needs to round to … … 588 588 scope operator. 589 589 590 Copy constructor access check while initializing a reference. 591 Consider this code: 592 593 class A 594 { 595 public: 596 A(); 597 598 private: 599 A(const A&); // private copy ctor 600 }; 601 602 A makeA(void); 603 void foo(const A&); 604 605 void 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 590 630 Common problems when upgrading the compiler 591 631 592 632 ABI changes 593 633 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. 602 655 603 656 Standard conformance 604 657 605 658 With each release, we try to make G++ conform closer to the ISO C++ 606 standard (available at [3 4]http://www.ncits.org/cplusplus.htm). We659 standard (available at [35]http://www.ncits.org/cplusplus.htm). We 607 660 have also implemented some of the core and library defect reports 608 661 (available at 609 [3 5]http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/cwg_defects.html &610 [3 6]http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html662 [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 611 664 respectively). 612 665 … … 620 673 621 674 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 (with623 its newC++ parser).675 overhaul of the standard library) and the 3.4.0 version (with its new 676 C++ parser). 624 677 625 678 New in GCC 3.0 … … 713 766 714 767 In addition to the problems listed above, the manual contains a 715 section on [3 7]Common Misunderstandings with GNU C++.768 section on [38]Common Misunderstandings with GNU C++. 716 769 717 770 References … … 750 803 32. http://mail-index.NetBSD.org/tech-kern/2003/08/11/0001.html 751 804 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 -
Property cvs2svn:cvs-rev
changed from
Note:
See TracChangeset
for help on using the changeset viewer.