Joseph S. Myers - gcc-4.2/c99status.html, c99status.html update (original) (raw)

This is the mail archive of the gcc-patches@gcc.gnu.orgmailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

As with previous release branches, I've created gcc-4.2/c99status.html and applied the patch below to make the 4.2 branch manual refer to it; I've also updated the toplevel c99status.html to reflect current status.

Index: c99status.html

RCS file: /cvs/gcc/wwwdocs/htdocs/c99status.html,v retrieving revision 1.45 diff -u -r1.45 c99status.html --- c99status.html 21 Sep 2006 14:17:36 -0000 1.45 +++ c99status.html 13 Feb 2007 23:52:24 -0000 @@ -19,6 +19,7 @@

This page describes the C99 support in mainline GCC, not in any particular release. Information is also available on <a +href="gcc-4.2/c99status.html">C99 support in GCC 4.2, C99 support in GCC 4.1, C99 support in GCC 4.0, C99 support in GCC 3.4, <a @@ -207,7 +208,7 @@ inline functions - Broken + Done @@ -306,7 +307,11 @@

  • IEC 60559 is IEEE 754 floating point. This works if and only if the hardware is perfectly compliant, but GCC does not define STDC_IEC_559 or implement the associated standard -pragmas.
  • +pragmas; nor do some options such as -frounding-math to +enable the pragmas globally work in all cases (for example, required +exceptions may not be generated) and contracting expressions (e.g., +using fused multiply-add) is not restricted to source-language +expressions as required by C99.
  • Compiler support is needed for math_errhandling; see messages <a @@ -317,31 +322,20 @@ href="http://sources.redhat.com/ml/libc-hacker/2000-06/msg00015.html";>3 on this subject to libc-hacker.
  • -
  • In some places, -pedantic warnings don't take proper -account of the standard version selected.
  • GCC doesn't have wprintf, wscanf and wcsftime format checking support.
  • -
  • Complex numbers support may be broken (some problems with -passing/returning complex values on 64-bit targets, and not checked -against the requirements of the C99 standard). However, the -_Complex keyword now works.
  • -
  • C99 inline functions do not generate an external -definition if declared without extern, but do if declared -with extern, the opposite of GCC's handling of -inline and extern inline. This will -probably require existing glibc headers to be fixincluded.
  • -
  • The C99 semantics of variable length arrays (VLAs) are not fully -implemented by the existing GCC extension: the concept of variably -modified (VM) types, and the rules for what identifiers can be -declared with VLA or VM types, are not implemented (for example, GCC -allows elements of VM type in a structure with block scope); while the -syntax for arrays to be declared with [*] in parameter -declarations is present, the semantics are not; and in general the -implementation of VLAs has not been checked against C99 requirements.
  • +
  • Complex numbers support does not follow all the requirements of +Annex G and multiplication and division have excess overflows both in +constant folding and at runtime. GCC wrongly promotes both operands +of an operation between complex and real values to a complex type. +Complex numbers support has not been checked in detail against the +requirements of the C99 standard.
  • + +
  • Some details of variable length arrays (VLAs) relating to when +size expressions are evaluated and when the memory for VLAs is freed +are not implemented, and other details are not checked against the +requirements of the C99 standard.
  • const-qualified compound literals could share storage with each other and with string literals, but currently don't.
  • @@ -351,6 +345,8 @@ it in future in conjunction with work on prefetching. +
  • Some changes in TC2 may not have been implemented.
  • +
  • The list above differs from that in the C99 standard (as amended by TC1) as follows: "LIA compatibility annex" is removed, since it refers to C99's Index: gcc-4.2/c99status.html
  • RCS file: gcc-4.2/c99status.html diff -N gcc-4.2/c99status.html --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ gcc-4.2/c99status.html 13 Feb 2007 23:52:24 -0000 @@ -0,0 +1,360 @@ + + + +Status of C99 features in GCC 4.2 + + + +

    Status of C99 features in GCC 4.2

    + +

    This table is based on the list in the foreword to the printed +standard ISO/IEC 9899:1999 (E), as amended by ISO/IEC +9899:1999/Cor.1:2001 (E) and ISO/IEC 9899:1999/Cor.2:2004 (E).

    + +

    Where "Library Issue" is listed in conjunction with some other +status, this means that some compiler support is needed for the +library support, or desirable in conjunction with it. Note that the +headers required of conforming freestanding implementations (clause 4 +paragraph 6) do not count as library issues.

    + +

    This page describes the C99 support in GCC 4.2. Information on <a +href="../c99status.html">C99 support in mainline CVS GCC is also +available.

    + +

    See below the table for further notes on some issues.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FeatureLibrary IssueDoneBrokenMissing
    restricted character set support via digraphs and +
    <iso646.h> (originally specified in AMD1)
    Done
    wide character library support in + <wchar.h>
    and <wctype.h> + (originally specified in AMD1)
    Library IssueMissing
    more precise aliasing rules via effective typeDone
    restricted pointersDone
    variable-length arraysBroken
    flexible array membersDone
    static and type qualifiers
    in parameter array declarators
    Done
    complex (and imaginary) support in <complex.h>Broken
    type-generic math macros in <tgmath.h>Library IssueDone
    the long long int type and library functionsDone
    increased minimum translation limitsDone
    additional floating-point characteristics
    in <float.h>
    Done
    remove implicit intDone
    reliable integer divisionDone
    universal character names (\u and \U)Done
    extended identifiersMissing
    hexadecimal floating-point constants and + %a
    and %A + printf/scanf conversion specifiers
    Library IssueDone
    compound literalsDone
    designated initializersDone
    // commentsDone
    library functions in <inttypes.h>Library Issue
    extended integer types in <stdint.h>Missing
    remove implicit function declarationDone
    preprocessor arithmetic
    done in intmax_t/uintmax_t
    Done
    mixed declarations and codeDone
    new block scopes for selection
    and iteration statements
    Done
    integer constant type rulesDone
    integer promotion rulesDone
    macros with a variable number of argumentsDone
    the vscanf family of functions + in
    <stdio.h> and <wchar.h>
    Library IssueDone
    additional math library functions in <math.h>Library IssueMissing
    floating-point environment access
    in <fenv.h>
    Library Issue
    IEC 60559 (also known as
    IEC 559 or IEEE arithmetic) support
    Broken
    trailing comma allowed in enum declarationDone
    %lf conversion specifier
    allowed in printf
    Library IssueDone
    inline functionsBroken
    the snprintf family of functions in <stdio.h>Library IssueDone
    boolean type in <stdbool.h>Done
    idempotent type qualifiersDone
    empty macro argumentsDone
    new struct type compatibility
    rules (tag compatibility)
    Done
    additional predefined macro namesMissing
    _Pragma preprocessing operatorDone
    standard pragmasMissing
    func predefined identifierDone
    va_copy macroDone
    additional strftime conversion specifiersLibrary IssueDone
    deprecate ungetc at the
    beginning of a binary file
    Library Issue
    remove deprecation of
    aliased array parameters
    Done
    conversion of array to pointer not limited to lvaluesDone
    relaxed constraints on aggregate
    and union initialization
    Done
    relaxed restrictions on portable header namesDone
    return without expression not permitted + in
    function that returns a value (and vice versa)
    Done
    FeatureLibrary IssueDoneBrokenMissing
    + +

    Further notes

    + + + + + Index: doc/standards.texi

    --- doc/standards.texi (revision 121895) +++ doc/standards.texi (working copy) @@ -79,7 +79,7 @@ A new edition of the ISO C standard was published in 1999 as ISO/IEC 9899:1999, and is commonly known as @dfn{C99}. GCC has incomplete support for this standard version; see -@uref{http://gcc.gnu.org/c99status.html} for details. To select this +@uref{http://gcc.gnu.org/gcc-4.2/c99status.html} for details. To select this standard, use @option{-std=c99} or @option{-std=iso9899:1999}. (While in development, drafts of this standard version were referred to as @dfn{C9X}.) Index: doc/invoke.texi

    --- doc/invoke.texi (revision 121895) +++ doc/invoke.texi (working copy) @@ -1181,7 +1181,7 @@ @itemx iso9899:1999 @itemx iso9899:199x ISO C99. Note that this standard is not yet fully supported; see -@w{@uref{http://gcc.gnu.org/c99status.html}} for more information. The +@w{@uref{http://gcc.gnu.org/gcc-4.2/c99status.html}} for more information. The names @samp{c9x} and @samp{iso9899:199x} are deprecated. @item gnu89 Index: ChangeLog

    --- ChangeLog (revision 121895) +++ ChangeLog (working copy) @@ -1,3 +1,8 @@ +2007-02-13 Joseph S. Myers joseph@codesourcery.com + + * doc/invoke.texi, doc/standards.texi: Refer to + gcc-4.2/c99status.html. + 2007-02-10 John David Anglin dave.anglin@nrc-cnrc.gc.ca

     PR target/30634

    -- Joseph S. Myers joseph@codesourcery.com


    Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
    Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]