Revamp handling of function types, conversion to function ptr types.

Implicit conversion to function types is now a more standard part of
the type conversion infrastructure, rather than special cases of things
like FunctionSymbolExpr immediately returning a pointer type, etc.

Improved AddressOfExpr::TypeCheck() to actually issue errors in cases
where it's illegal to take the address of an expression.

Added AddressOfExpr::GetConstant() implementation that handles taking
the address of functions.

Issue #223.
This commit is contained in:
Matt Pharr
2012-04-03 10:09:07 -07:00
parent b813452d33
commit 4cd0cf1650
8 changed files with 149 additions and 41 deletions

1
expr.h
View File

@@ -584,6 +584,7 @@ public:
Expr *TypeCheck();
Expr *Optimize();
int EstimateCost() const;
llvm::Constant *GetConstant(const Type *type) const;
Expr *expr;
};