зеркало из https://github.com/microsoft/clang-1.git
Add support for * (unary dereference) operator to ExprConstant.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65105 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
a805135a16
Коммит
e8761c8fe2
|
@ -157,6 +157,7 @@ public:
|
||||||
APValue VisitMemberExpr(MemberExpr *E);
|
APValue VisitMemberExpr(MemberExpr *E);
|
||||||
APValue VisitStringLiteral(StringLiteral *E) { return APValue(E, 0); }
|
APValue VisitStringLiteral(StringLiteral *E) { return APValue(E, 0); }
|
||||||
APValue VisitArraySubscriptExpr(ArraySubscriptExpr *E);
|
APValue VisitArraySubscriptExpr(ArraySubscriptExpr *E);
|
||||||
|
APValue VisitUnaryDeref(UnaryOperator *E);
|
||||||
};
|
};
|
||||||
} // end anonymous namespace
|
} // end anonymous namespace
|
||||||
|
|
||||||
|
@ -234,6 +235,14 @@ APValue LValueExprEvaluator::VisitArraySubscriptExpr(ArraySubscriptExpr *E)
|
||||||
return Result;
|
return Result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
APValue LValueExprEvaluator::VisitUnaryDeref(UnaryOperator *E)
|
||||||
|
{
|
||||||
|
APValue Result;
|
||||||
|
if (!EvaluatePointer(E->getSubExpr(), Result, Info))
|
||||||
|
return APValue();
|
||||||
|
return Result;
|
||||||
|
}
|
||||||
|
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
// Pointer Evaluation
|
// Pointer Evaluation
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
|
@ -38,3 +38,5 @@ EVAL_EXPR(18, ((int)((void*)10 + 10)) == 20 ? 1 : -1);
|
||||||
struct s {
|
struct s {
|
||||||
int a[(int)-1.0f]; // expected-error {{array size is negative}}
|
int a[(int)-1.0f]; // expected-error {{array size is negative}}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
EVAL_EXPR(19, ((int)&*(char*)10 == 10 ? 1 : -1));
|
||||||
|
|
Загрузка…
Ссылка в новой задаче