Ignore:
Timestamp:
Nov 3, 2004, 6:47:21 AM (21 years ago)
Author:
bird
Message:

GCC v3.3.5 - official sources.

File:
1 edited

Legend:

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

    • Property cvs2svn:cvs-rev changed from 1.1.1.3 to 1.1.1.4
    r1587 r1588  
    319319return A();
    320320
    321           This problem occured in a number of variants; in throw
     321          This problem occurred in a number of variants; in throw
    322322          statements, people also frequently put the object in
    323323          parentheses.
     
    377377C
    378378
     379   Increment/decrement operator (++/--) not working as expected - a
     380          [32]problem with many variations.
     381          The following expressions have unpredictable results:
     382
     383x[i]=++i
     384foo(i,++i)
     385i*(++i)                 /* special case with foo=="operator*" */
     386std::cout << i << ++i   /* foo(foo(std::cout,i),++i)          */
     387
     388          since the i without increment can be evaluated before or after
     389          ++i.
     390
     391          The C and C++ standards have the notion of "sequence points".
     392          Everything that happens between two sequence points happens in
     393          an unspecified order, but it has to happen after the first and
     394          before the second sequence point. The end of a statement and a
     395          function call are examples for sequence points, whereas
     396          assignments and the comma between function arguments are not.
     397
     398          Modifying a value twice between two sequence points as shown in
     399          the following examples is even worse:
     400
     401i=++i
     402foo(++i,++i)
     403(++i)*(++i)               /* special case with foo=="operator*" */
     404std::cout << ++i << ++i   /* foo(foo(std::cout,++i),++i)        */
     405
     406          This leads to undefined behavior (i.e. the compiler can do
     407          anything).
     408
    379409   Casting does not work as expected when optimization is turned on.
    380410          This is often caused by a violation of aliasing rules, which
     
    453483
    454484          For some more insight into the subject, please have a look at
    455           [32]this article.
     485          [33]this article.
    456486
    457487   Cannot use preprocessor directive in macro arguments.
     
    528558          There is a common misconception that the GCC developers are
    529559          responsible for GNU libc. These are in fact two entirely
    530           separate projects; please check the [33]GNU libc web pages for
     560          separate projects; please check the [34]GNU libc web pages for
    531561          details.
    532562     _________________________________________________________________
     
    644674   necessary to recompile if you have changed to a bug-fix release of the
    645675   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.
     676   ABI changes. See also the [35]compatibility section of the GCC manual.
    647677
    648678   Remark: A major release is designated by a change to the first or
     
    657687
    658688   With each release, we try to make G++ conform closer to the ISO C++
    659    standard (available at [35]http://www.ncits.org/cplusplus.htm). We
     689   standard (available at [36]http://www.ncits.org/cplusplus.htm). We
    660690   have also implemented some of the core and library defect reports
    661691   (available at
    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
     692   [37]http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html &
     693   [38]http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html
    664694   respectively).
    665695
     
    766796
    767797   In addition to the problems listed above, the manual contains a
    768    section on [38]Common Misunderstandings with GNU C++.
     798   section on [39]Common Misunderstandings with GNU C++.
    769799
    770800References
     
    801831  30. http://gcc.gnu.org/PR323
    802832  31. http://www.validlab.com/goldberg/paper.ps
    803   32. http://mail-index.NetBSD.org/tech-kern/2003/08/11/0001.html
    804   33. http://www.gnu.org/software/libc/
    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
     833  32. http://gcc.gnu.org/PR11751
     834  33. http://mail-index.NetBSD.org/tech-kern/2003/08/11/0001.html
     835  34. http://www.gnu.org/software/libc/
     836  35. http://gcc.gnu.org/onlinedocs/gcc/Compatibility.html
     837  36. http://www.ncits.org/cplusplus.htm
     838  37. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html
     839  38. http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html
     840  39. http://gcc.gnu.org/onlinedocs/gcc/C---Misunderstandings.html
Note: See TracChangeset for help on using the changeset viewer.