an error to cast it to LVal.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47450
91177308-0d34-0410-b5e6-
96231b3b80d8
Marked.insert(V);
if (V->getType()->isPointerType()) {
- const LVal& LV =
- cast<LVal>(GetRVal(St, lval::DeclVal(cast<VarDecl>(V))));
+
+ RVal X = GetRVal(St, lval::DeclVal(cast<VarDecl>(V)));
+
+ assert (!X.isUnknown());
+
+ if (X.isUninit())
+ continue;
+
+ LVal LV = cast<LVal>(X);
for (RVal::symbol_iterator SI = LV.symbol_begin(), SE = LV.symbol_end();
SI != SE; ++SI) {
return R.isValid() ? TF->EvalBinOp(ValMgr, Op, L, cast<NonLVal>(R)) : R;
}
+ RVal EvalBinOp(BinaryOperator::Opcode Op, NonLVal L, NonLVal R) {
+ return R.isValid() ? TF->EvalBinOp(ValMgr, Op, L, R) : R;
+ }
+
RVal EvalBinOp(BinaryOperator::Opcode Op, RVal L, RVal R) {
if (L.isUninit() || R.isUninit())