Mercurial > projects > ldc
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; |