implement codegen of calls. We can now compile:
double foo( int (*FP)(int, int, int)) {
return FP(1, 2, 3);
}
to:
define double @foo(i32 (i32, i32, i32)* %FP) {
entry:
%call = tail call i32 %FP( i32 1, i32 2, i32 3 )
%conv = sitofp i32 %call to double
ret double %conv
}
llvm-svn: 39658
diff --git a/clang/CodeGen/CodeGenFunction.h b/clang/CodeGen/CodeGenFunction.h
index ad80b38..1b07887 100644
--- a/clang/CodeGen/CodeGenFunction.h
+++ b/clang/CodeGen/CodeGenFunction.h
@@ -45,6 +45,7 @@
class StringLiteral;
class IntegerLiteral;
class CastExpr;
+ class CallExpr;
class UnaryOperator;
class BinaryOperator;
class ArraySubscriptExpr;
@@ -251,6 +252,7 @@
RValue EmitIntegerLiteral(const IntegerLiteral *E);
RValue EmitCastExpr(const CastExpr *E);
+ RValue EmitCallExpr(const CallExpr *E);
// Unary Operators.
RValue EmitUnaryOperator(const UnaryOperator *E);