diff options
author | Chris Lattner <sabre@nondot.org> | 2007-08-23 23:43:33 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2007-08-23 23:43:33 +0000 |
commit | 23b1cdb0b5e089468bb8475b8ec9287af67b4b59 (patch) | |
tree | c66b3ff6b2a0e673432cf9327e769d233068f0d0 /CodeGen/CodeGenFunction.h | |
parent | b2137ae3f1bd0aadb0552189af2824a324ffaa69 (diff) |
implement passing of complex and aggregates through call args.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41344 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'CodeGen/CodeGenFunction.h')
-rw-r--r-- | CodeGen/CodeGenFunction.h | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/CodeGen/CodeGenFunction.h b/CodeGen/CodeGenFunction.h index 95e3656ed3..5e2b07bb4b 100644 --- a/CodeGen/CodeGenFunction.h +++ b/CodeGen/CodeGenFunction.h @@ -340,6 +340,11 @@ public: RValue EmitCompoundAssignmentResult(const CompoundAssignOperator *E, LValue LHSLV, RValue ResV); + /// EmitAnyExpr - Emit an expression of any type: scalar, complex, aggregate, + /// returning an rvalue corresponding to it. If NeedResult is false, the + /// result of the expression doesn't need to be generated into memory. + RValue EmitAnyExpr(const Expr *E, bool NeedResult = true); + RValue EmitExpr(const Expr *E); RValue EmitIntegerLiteral(const IntegerLiteral *E); RValue EmitFloatingLiteral(const FloatingLiteral *E); @@ -409,8 +414,12 @@ public: void EmitAggExpr(const Expr *E, llvm::Value *DestPtr, bool VolatileDest); /// EmitComplexExpr - Emit the computation of the specified expression of - /// complex type, ignoring the result. + /// complex type, returning the result. ComplexPairTy EmitComplexExpr(const Expr *E); + + /// EmitComplexExprIntoAddr - Emit the computation of the specified expression + /// of complex type, storing into the specified Value*. + void EmitComplexExprIntoAddr(const Expr *E, llvm::Value *DestAddr); }; } // end namespace CodeGen } // end namespace clang |