diff options
Diffstat (limited to 'lib/CodeGen/CGExprAgg.cpp')
| -rw-r--r-- | lib/CodeGen/CGExprAgg.cpp | 11 | 
1 files changed, 6 insertions, 5 deletions
| diff --git a/lib/CodeGen/CGExprAgg.cpp b/lib/CodeGen/CGExprAgg.cpp index 6fedf0efda9d..8b1bc69352b3 100644 --- a/lib/CodeGen/CGExprAgg.cpp +++ b/lib/CodeGen/CGExprAgg.cpp @@ -34,6 +34,7 @@ class AggExprEmitter : public StmtVisitor<AggExprEmitter> {    CodeGenFunction &CGF;    CGBuilderTy &Builder;    AggValueSlot Dest; +  bool IsResultUnused;    /// We want to use 'dest' as the return slot except under two    /// conditions: @@ -48,7 +49,7 @@ class AggExprEmitter : public StmtVisitor<AggExprEmitter> {      if (!shouldUseDestForReturnSlot())        return ReturnValueSlot(); -    return ReturnValueSlot(Dest.getAddr(), Dest.isVolatile()); +    return ReturnValueSlot(Dest.getAddr(), Dest.isVolatile(), IsResultUnused);    }    AggValueSlot EnsureSlot(QualType T) { @@ -61,9 +62,9 @@ class AggExprEmitter : public StmtVisitor<AggExprEmitter> {    }  public: -  AggExprEmitter(CodeGenFunction &cgf, AggValueSlot Dest) -    : CGF(cgf), Builder(CGF.Builder), Dest(Dest) { -  } +  AggExprEmitter(CodeGenFunction &cgf, AggValueSlot Dest, bool IsResultUnused) +    : CGF(cgf), Builder(CGF.Builder), Dest(Dest), +    IsResultUnused(IsResultUnused) { }    //===--------------------------------------------------------------------===//    //                               Utilities @@ -1394,7 +1395,7 @@ void CodeGenFunction::EmitAggExpr(const Expr *E, AggValueSlot Slot) {    // Optimize the slot if possible.    CheckAggExprForMemSetUse(Slot, E, *this); -  AggExprEmitter(*this, Slot).Visit(const_cast<Expr*>(E)); +  AggExprEmitter(*this, Slot, Slot.isIgnored()).Visit(const_cast<Expr*>(E));  }  LValue CodeGenFunction::EmitAggExprToLValue(const Expr *E) { | 
