Mercurial > projects > ldc
comparison dmd2/mtype.h @ 1028:964af20461a9
Merged ABI changes into D2 frontend.
author | Tomas Lindquist Olsen <tomas.l.olsen@gmail.com> |
---|---|
date | Tue, 03 Mar 2009 14:10:37 +0100 |
parents | 5fa3e0ea06e9 |
children | 4d366a75d95f |
comparison
equal
deleted
inserted
replaced
1027:c061e0725d89 | 1028:964af20461a9 |
---|---|
22 #include "expression.h" | 22 #include "expression.h" |
23 | 23 |
24 // llvm | 24 // llvm |
25 #include "../ir/irtype.h" | 25 #include "../ir/irtype.h" |
26 namespace llvm { class Type; } | 26 namespace llvm { class Type; } |
27 struct IrFuncTy; | |
27 | 28 |
28 struct Scope; | 29 struct Scope; |
29 struct Identifier; | 30 struct Identifier; |
30 struct Expression; | 31 struct Expression; |
31 struct StructDeclaration; | 32 struct StructDeclaration; |
500 enum RET retStyle(); | 501 enum RET retStyle(); |
501 | 502 |
502 unsigned totym(); | 503 unsigned totym(); |
503 | 504 |
504 // LDC | 505 // LDC |
505 bool retInPtr; | 506 IrFuncTy* fty; |
506 bool usesThis; | |
507 bool usesNest; | |
508 // when the last arg is a struct and passed in EAX, this holds its real type | |
509 const llvm::Type* structInregArg; | |
510 unsigned retAttrs; | |
511 unsigned thisAttrs; // also used for nest | |
512 // parameter index in the llvm function that contains the first not-implicit arg | |
513 size_t firstRealArg; | |
514 | |
515 bool reverseParams; | |
516 }; | 507 }; |
517 | 508 |
518 struct TypeDelegate : TypeNext | 509 struct TypeDelegate : TypeNext |
519 { | 510 { |
520 // .next is a TypeFunction | 511 // .next is a TypeFunction |
800 static void argsToCBuffer(OutBuffer *buf, HdrGenState *hgs, Arguments *arguments, int varargs); | 791 static void argsToCBuffer(OutBuffer *buf, HdrGenState *hgs, Arguments *arguments, int varargs); |
801 static void argsToDecoBuffer(OutBuffer *buf, Arguments *arguments); | 792 static void argsToDecoBuffer(OutBuffer *buf, Arguments *arguments); |
802 static int isTPL(Arguments *arguments); | 793 static int isTPL(Arguments *arguments); |
803 static size_t dim(Arguments *arguments); | 794 static size_t dim(Arguments *arguments); |
804 static Argument *getNth(Arguments *arguments, size_t nth, size_t *pn = NULL); | 795 static Argument *getNth(Arguments *arguments, size_t nth, size_t *pn = NULL); |
805 | |
806 // LDC | |
807 unsigned llvmAttrs; | |
808 }; | 796 }; |
809 | 797 |
810 extern int PTRSIZE; | 798 extern int PTRSIZE; |
811 extern int REALSIZE; | 799 extern int REALSIZE; |
812 extern int REALPAD; | 800 extern int REALPAD; |