diff options
Diffstat (limited to 'clang/lib')
| -rw-r--r-- | clang/lib/Sema/SemaChecking.cpp | 5 | 
1 files changed, 5 insertions, 0 deletions
| diff --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp index 3fac79deba4..522a7c10763 100644 --- a/clang/lib/Sema/SemaChecking.cpp +++ b/clang/lib/Sema/SemaChecking.cpp @@ -2045,6 +2045,11 @@ void Sema::CheckSignCompare(Expr *lex, Expr *rex, SourceLocation OpLoc,      if (!tmp.isNull()) rt = tmp;    } +  if (const EnumType *E = lt->getAs<EnumType>()) +    lt = E->getDecl()->getPromotionType(); +  if (const EnumType *E = rt->getAs<EnumType>()) +    rt = E->getDecl()->getPromotionType(); +    // The rule is that the signed operand becomes unsigned, so isolate the    // signed operand.    Expr *signedOperand = lex, *unsignedOperand = rex; | 

