C99 Conformance test of ../scripts/p99-gcc-4.3

C99 Conformance test of ../scripts/p99-gcc-4.3

This test is part of the P99 project. It has been automatically produced by "gustedt" with the commandline

p99-gcc-4.3 -Wall -c -o test-p99-conformance.o -std=c99 -fextended-identifiers -Wno-trigraphs -DSKIP_EVALUATED_COMMA_ASSIGN test-p99-conformance.c

This conformance test is only for the preprocessor and compiler, not the library. Also it generally only tests that check whether or not the code compiles, not whether the produced object is correct.

There is one exception to that, we try to detect automatically how the compiler handles inline functions. Some compilers don't generate all symbols that they should, others generate too much.

This test most likely doesn't cover all aspects of C99 that could be compile time tested, yet. It also probably has errors. If you find such an error please let me know.

Variably modified types
+variable length array
+variable length array as function parameters
Temporary variables
+compound literal
Preprocessor
+concatenation of 1E and number
+concatenation of floats 1E- and number
+concatenation of floats 1E- 3E-
+iterative concatenation of floats
+concatenation of hash hash
+determines macro arguments first
+## is a valid token
+accepts non evaluated comma operator in preprocessor expressions
+-1 gives UINTMAX_MAX as unsigned
+doesn't expand macro arguments that are subject to ##
+expands macro arguments that are not subject to ##
+logical operators return signed values
+-1 is negative
+doesn't introduce placeholder if not immediately concatenated
+concatenates empty macro argument
+correct signed promotion in ternary operator
+correct unsigned promotion in ternary operator
+can stringify an empty argument
Initializers
+designated array initializer
+designated struct initializer
+initializer with trailing commas
+length deduced from initializer
+accepts non evaluated comma operator in constant expression
Trigraphs and digraphs
+stringify with %: digraph
+hash hash interpretedCorrectly
+punctuation digraphs
+punctuation trigraphs
+stringfy with ??= trigraph
Syntax
+// comment
+enum allows trailing comma
+flexible array
+for with variable declaration
+macro __func__ for function name
+hexdouble
+mixed statements and declaration
Qualifiers
+const in array function parameter
+idempotent const
+idempotent restrict
+idempotent volatile
+restrict keyword
+restrict in array function parameter
+static in array function parameter
+volatile in array function parameter
Data types
+_Bool type
+long double type
+long long type
+preprocessor computes at least in long long
+unsigned long long has at least 64 bit
Character set support
+hexadecimal character as '\x1234'
+respects token boundary when universal character starts an identifier
+universal character '\u1234'
+universal character '\U12345678'
+universal string "\u1234"
+universal string "\U12345678"
External symbols and inline
+generates symbol for inline with explicit extern and definition
+generates symbol for inline with explicit extern, definition and reference
+generates symbol for inline with implicit extern, and reference
+generates symbol for inline with implicit extern, definition, and reference
Other Features or Bugs
universal characters in linker symbol is mangled to reserved symbol
detects evaluated comma operator in constant expression
generates undefined symbol for inline definition and reference
mangling of universal characters distinguishes local variables
has_utf8
universal characters as is in linker symbol

Legend
-missing
!faulty
-alternative
optional