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;