/// length type, this is not possible.
///
LValue CodeGenFunction::EmitLValue(const Expr *E) {
- llvm::DenseMap<const Expr *, LValue>::iterator I =
- ConditionalSaveLValueExprs.find(E);
- if (I != ConditionalSaveLValueExprs.end())
- return I->second;
-
switch (E->getStmtClass()) {
default: return EmitUnsupportedLValue(E, "l-value expression");
//===--------------------------------------------------------------------===//
ComplexPairTy Visit(Expr *E) {
- llvm::DenseMap<const Expr *, ComplexPairTy>::iterator I =
- CGF.ConditionalSaveComplexExprs.find(E);
- if (I != CGF.ConditionalSaveComplexExprs.end())
- return I->second;
-
- return StmtVisitor<ComplexExprEmitter, ComplexPairTy>::Visit(E);
+ return StmtVisitor<ComplexExprEmitter, ComplexPairTy>::Visit(E);
}
ComplexPairTy VisitStmt(Stmt *S) {
//===--------------------------------------------------------------------===//
Value *Visit(Expr *E) {
- llvm::DenseMap<const Expr *, llvm::Value *>::iterator I =
- CGF.ConditionalSaveExprs.find(E);
- if (I != CGF.ConditionalSaveExprs.end())
- return I->second;
-
return StmtVisitor<ScalarExprEmitter, Value*>::Visit(E);
}
/// when the NRVO has been applied to this variable.
llvm::DenseMap<const VarDecl *, llvm::Value *> NRVOFlags;
- /// \brief A mapping from 'Save' expression in a conditional expression
- /// to the IR for this expression. Used to implement IR gen. for Gnu
- /// extension's missing LHS expression in a conditional operator expression.
- llvm::DenseMap<const Expr *, llvm::Value *> ConditionalSaveExprs;
- llvm::DenseMap<const Expr *, ComplexPairTy> ConditionalSaveComplexExprs;
- llvm::DenseMap<const Expr *, LValue> ConditionalSaveLValueExprs;
-
EHScopeStack EHStack;
/// i32s containing the indexes of the cleanup destinations.