rearrange some code.

llvm-svn: 45666
This commit is contained in:
Chris Lattner 2008-01-06 22:50:31 +00:00
parent e2949f42d3
commit 4d3b0f579c
1 changed files with 16 additions and 11 deletions

View File

@ -789,16 +789,8 @@ inline QualType Sema::CheckConditionalOperands( // C99 6.5.15
if (lexT->isVoidType() && rexT->isVoidType())
return lexT.getUnqualifiedType();
// C99 6.5.15p6 - "if one operand is a null pointer constant, the result has
// the type of the other operand."
if (lexT->isPointerType() && rex->isNullPointerConstant(Context)) {
promoteExprToType(rex, lexT); // promote the null to a pointer.
return lexT;
}
if (rexT->isPointerType() && lex->isNullPointerConstant(Context)) {
promoteExprToType(lex, rexT); // promote the null to a pointer.
return rexT;
}
// Handle the case where both operands are pointers before we handle null
// pointer constants in case both operands are null pointer constants.
if (const PointerType *LHSPT = lexT->getAsPointerType()) { // C99 6.5.15p3,6
if (const PointerType *RHSPT = rexT->getAsPointerType()) {
// get the "pointed to" types
@ -825,10 +817,23 @@ inline QualType Sema::CheckConditionalOperands( // C99 6.5.15
// differently qualified versions of compatible types, the result type is
// a pointer to an appropriately qualified version of the *composite*
// type.
return lexT; // FIXME: Need to return the composite type.
// FIXME: Need to return the composite type.
return lexT;
}
}
// C99 6.5.15p6 - "if one operand is a null pointer constant, the result has
// the type of the other operand."
if (lexT->isPointerType() && rex->isNullPointerConstant(Context)) {
promoteExprToType(rex, lexT); // promote the null to a pointer.
return lexT;
}
if (rexT->isPointerType() && lex->isNullPointerConstant(Context)) {
promoteExprToType(lex, rexT); // promote the null to a pointer.
return rexT;
}
// Otherwise, the operands are not compatible.
Diag(questionLoc, diag::err_typecheck_cond_incompatible_operands,
lexT.getAsString(), rexT.getAsString(),