Lines Matching full:c99
434 /// DefaultFunctionArrayConversion (C99 6.3.2.1p3, C99 6.3.2.1p4).
453 // to type'...". In C99 this was changed to: C99 6.3.2.1p3: "an expression
455 // (C90) to "an expression" (C99).
461 if (getLangOpts().C99 || getLangOpts().CPlusPlus || E->isLValue())
605 // C99 6.3.2.1p2:
647 /// operators (C99 6.3). The conversions of array and function types are
668 // C99 6.3.1.1p2:
696 /// DefaultArgumentPromotion (C99 6.5.2.2p6). Used for function calls that
1103 // The rules for this case are in C99 6.3.1.8
1194 /// binary operators (C99 6.3.1.8). If both operands aren't arithmetic, this
1245 // Handle complex types first (C99 6.3.1.8p1).
1472 /// concatenation ([C99 5.1.1.2, translation phase #6]), so it may come from
1513 // Get an array type for the string, according to C99 6.4.5. This includes
1978 // in C90, extension in C99, forbidden in C++).
2710 // C99 DR 316 says that, if a function type comes from a
2765 case tok::kw___func__: IT = PredefinedExpr::Func; break; // [C99 6.4.2.2]
3034 // 'long long' is a C99 or C++11 feature.
3035 if (!getLangOpts().C99 && Literal.isLongLong) {
3063 // according to the rules of C99 6.4.4.1p5.
3163 // type (C99 6.2.5p18) or void.
3179 // C99 6.5.3.4p1:
3299 /// C99 6.3.2.1p[2-4] all state:
3434 // C99 6.5.3.4p4: the type (an unsigned integer type) is size_t.
3459 } else if (E->refersToBitField()) { // C99 6.5.3.4p1.
3475 // C99 6.5.3.4p4: the type (an unsigned integer type) is size_t.
3647 // C99 6.5.2.1p2: the expression e1[e2] is by definition precisely equivalent
3732 // C99 6.5.2.1p1
3742 // C99 6.5.2.1p1: "shall have type "pointer to *object* type". Similarly,
3744 // type. Note that Functions are not objects, and that (in C99 parlance)
3956 // C99 6.5.2.2p7 - the arguments are implicitly converted, as if by
4160 // Check for violations of C99 static array rules (C99 6.7.5.3p7).
4179 // Otherwise do argument promotion, (C99 6.5.2.2p7).
4209 /// C99 6.7.5.3p7: If the keyword static also appears within the [ and ] of the
4515 // C99 6.5.2.2p1 - "The expression that denotes the called function shall
4592 // Promote the arguments (C99 6.5.2.2p6).
5205 // C99 6.5.15p2
5299 // C99 6.5.15p6: If both operands are pointers to compatible types or to
5383 C99 6.5.15p3, clause 6)
5385 // Figure out necessary qualifiers (C99 6.5.15p6)
5431 /// C99 6.5.15
5479 // to find a common type: C99 6.5.15p3,5.
5485 if (const RecordType *LHSRT = LHSTy->getAs<RecordType>()) { // C99 6.5.15p3
5494 // C99 6.5.15p5: "If both operands have void type, the result has void type."
5500 // C99 6.5.15p6 - "if one operand is a null pointer constant, the result has
5519 // Check constraints for C object pointers types (C99 6.5.15p3,6).
5872 // being closely modeled after the C99 spec:-). The odd characteristic of this
5889 // C99 6.5.16.1p1: This following citation is common to constraints
5924 // C99 6.5.16.1p1 (constraint 4): If one operand is a pointer to an object or
5945 // C99 6.5.16.1p1 (constraint 3): both operands are pointers to qualified or
6077 /// CheckAssignmentConstraints (C99 6.5.16) - This routine currently
6091 /// C99 spec dictates.
6475 // C99 6.5.16.1p1: the left operand is a pointer and the right is
6502 // C99 6.5.16.1p2: The value of the right operand is converted to the
6905 QualType Sema::CheckAdditionOperands( // C99 6.5.6
6977 // C99 6.5.6
6994 // Enforce type constraints: C99 6.5.6p3.
7035 // Pointee types must be compatible C99 6.5.6p3
7131 // C99 6.5.7
7143 // promotions on each operand. C99 6.5.7p3
7160 // C99 6.5.7p2: Each of the operands shall have integer type.
7479 // C99 6.5.8, C++ [expr.rel]
7578 // C99 6.5.8p3 / C99 6.5.9p4
7608 if (LHSType->isPointerType() && RHSType->isPointerType()) { // C99 6.5.8p2
7641 // C99 6.5.9p2 and C99 6.5.8p2
7956 inline QualType Sema::CheckLogicalOperands( // C99 6.5.[13,14]
8098 switch (IsLV) { // C99 6.5.16p2
8216 // C99 6.5.16.1
8311 // C99 6.5.16p3: The type of an assignment expression is the type of the
8314 // C99 6.5.16.1p2: In simple assignment, the value of the right operand
8322 // C99 6.5.17
8330 // C's comma performs lvalue conversion (C99 6.3.2.1) on both its
8383 // C99 6.5.2.4p2, 6.5.6p2
8393 // C99 does not support ++/-- on complex types, we allow as an extension.
8503 /// operator (C99 6.3.2.1p[2-4]), and its result is never an lvalue.
8549 if (getLangOpts().C99) {
8550 // Implement C99-only parts of addressof rules.
8553 // Per C99 6.5.3.2, the address of a deref always returns a valid result
8611 // C99 6.5.3.2p1
8623 } else if (op->getObjectKind() == OK_BitField) { // C99 6.5.3.2p1
8629 } else if (dcl) { // C99 6.5.3.2p1
8702 // Note that per both C89 and C99, indirection is always legal, even if OpTy
9399 if (resultType->isArithmeticType() || // C99 6.5.3.3p1
9420 // C99 6.5.3.3p1. We allow complex int and float as a GCC extension.
9422 // C99 does not support '~' for complex conjugation.
9444 // Unlike +/-/~, integer promotions aren't done here (C99 6.5.3.3p5).
9458 // C99 6.5.3.3p1: ok, fallthrough;
9490 // LNot always has type int. C99 6.5.3.3p5.
9765 // Type must be complete per C99 7.17p3 because a declaring a variable
9874 // C99 7.17p3:
10928 /// (C++ [basic.def.odr]p2, C99 6.9p3)
11799 /// (C++ [basic.def.odr]p2, C99 6.9p3). Note that this should not be
12198 if (!T->isScalarType()) { // C99 6.8.4.1p1