comparison dmd/mtype.c @ 217:0806379a5eca trunk

[svn r233] Added: -oq command line option for writing fully qualified object names. Added: started support for x86 80bit floating point. Changed: aggregates passed by value now use the llvm 'byval' parameter attribute, also lays ground work for using other attributes. Changed: eliminated a lot more std::vectorS, these showed up pretty much at the top when profiling! Changed: performed other misc. cleanups. Changed: halt expression now call the new llvm trap intrinsic instead of an assert(0). Changed: dstress suite now passes -O0 by default, this only eliminates unreferenced globals, which speeds up linking quite a bit.
author lindquist
date Thu, 05 Jun 2008 06:38:36 +0200
parents f66219e0d530
children 4d006f7b2ada
comparison
equal deleted inserted replaced
216:3d022aa016ae 217:0806379a5eca
2536 2536
2537 Type *TypeFunction::syntaxCopy() 2537 Type *TypeFunction::syntaxCopy()
2538 { 2538 {
2539 Type *treturn = next ? next->syntaxCopy() : NULL; 2539 Type *treturn = next ? next->syntaxCopy() : NULL;
2540 Arguments *params = Argument::arraySyntaxCopy(parameters); 2540 Arguments *params = Argument::arraySyntaxCopy(parameters);
2541 Type *t = new TypeFunction(params, treturn, varargs, linkage); 2541 TypeFunction *t = new TypeFunction(params, treturn, varargs, linkage);
2542 t->llvmRetInPtr = llvmRetInPtr;
2543 t->llvmUsesThis = llvmUsesThis;
2542 return t; 2544 return t;
2543 } 2545 }
2544 2546
2545 /******************************* 2547 /*******************************
2546 * Returns: 2548 * Returns:
5060 { 5062 {
5061 this->type = type; 5063 this->type = type;
5062 this->ident = ident; 5064 this->ident = ident;
5063 this->storageClass = storageClass; 5065 this->storageClass = storageClass;
5064 this->defaultArg = defaultArg; 5066 this->defaultArg = defaultArg;
5067 this->llvmByVal = false;
5065 } 5068 }
5066 5069
5067 Argument *Argument::syntaxCopy() 5070 Argument *Argument::syntaxCopy()
5068 { 5071 {
5069 Argument *a = new Argument(storageClass, 5072 Argument *a = new Argument(storageClass,
5070 type ? type->syntaxCopy() : NULL, 5073 type ? type->syntaxCopy() : NULL,
5071 ident, 5074 ident,
5072 defaultArg ? defaultArg->syntaxCopy() : NULL); 5075 defaultArg ? defaultArg->syntaxCopy() : NULL);
5076 a->llvmByVal = llvmByVal;
5073 return a; 5077 return a;
5074 } 5078 }
5075 5079
5076 Arguments *Argument::arraySyntaxCopy(Arguments *args) 5080 Arguments *Argument::arraySyntaxCopy(Arguments *args)
5077 { Arguments *a = NULL; 5081 { Arguments *a = NULL;