comparison gen/functions.h @ 1364:46f6365a50d7

Added IrTypeFunction and IrTypeDelegate and eliminated IrDType. This means the Type::ir field can be removed. It's the final part needed for the move to a slightly more sane type system. Now the whole thing just needs to be cleaned up :P Added -v-cg switch, which right now just prints "codegen: module.name (module/name.d)" to stdout, this can really help figuring out where, in some complex build command, things go wrong.
author Tomas Lindquist Olsen <tomas.l.olsen gmail com>
date Sat, 16 May 2009 18:19:52 +0200
parents 9167d492cbc2
children 207a8a438dea
comparison
equal deleted inserted replaced
1363:b7c8506e1eed 1364:46f6365a50d7
1 #ifndef LDC_GEN_FUNCTIONS_H 1 #ifndef LDC_GEN_FUNCTIONS_H
2 #define LDC_GEN_FUNCTIONS_H 2 #define LDC_GEN_FUNCTIONS_H
3
4 #include "mars.h"
5
6 struct FuncDeclaration;
7 struct Type;
8
9 struct IRAsmBlock;
10
11 namespace llvm
12 {
13 class Value;
14 }
3 15
4 const llvm::FunctionType* DtoFunctionType(Type* t, Type* thistype, Type* nesttype, bool ismain = false); 16 const llvm::FunctionType* DtoFunctionType(Type* t, Type* thistype, Type* nesttype, bool ismain = false);
5 const llvm::FunctionType* DtoFunctionType(FuncDeclaration* fdecl); 17 const llvm::FunctionType* DtoFunctionType(FuncDeclaration* fdecl);
6 18
7 const llvm::FunctionType* DtoBaseFunctionType(FuncDeclaration* fdecl); 19 const llvm::FunctionType* DtoBaseFunctionType(FuncDeclaration* fdecl);
12 24
13 void DtoDefineNakedFunction(FuncDeclaration* fd); 25 void DtoDefineNakedFunction(FuncDeclaration* fd);
14 void emitABIReturnAsmStmt(IRAsmBlock* asmblock, Loc loc, FuncDeclaration* fdecl); 26 void emitABIReturnAsmStmt(IRAsmBlock* asmblock, Loc loc, FuncDeclaration* fdecl);
15 27
16 DValue* DtoArgument(Argument* fnarg, Expression* argexp); 28 DValue* DtoArgument(Argument* fnarg, Expression* argexp);
17 void DtoVariadicArgument(Expression* argexp, LLValue* dst); 29 void DtoVariadicArgument(Expression* argexp, llvm::Value* dst);
18 30
19 #endif 31 #endif