Mercurial > projects > ldc
view gen/todt.cpp @ 920:545f54041d91
Implemented proper support for naked asm using llvm module level asm. Still not 100% complete, but already 1000 times better that what we had before. Don's BignumX86 implementation from Tango (when turned into a standalone unittest) seems to fully work with no changes, and great performance :)
Fixed align N; in asm blocks.
Fixed inreg parameter passing on x86 for ref/out params.
Removed support for lazy initialization of function local static variables, I have no idea why I ever implemented this, it's not in the D spec, and DMD doesn't support it :P
Some of the global variable related changes might cause minor regressions, but they should be easily fixable.
author | Tomas Lindquist Olsen <tomas.l.olsen@gmail.com> |
---|---|
date | Tue, 03 Feb 2009 08:54:57 +0100 |
parents | fd32135dca3e |
children |
line wrap: on
line source
// Copyright (c) 1999-2005 by Digital Mars // All Rights Reserved // written by Walter Bright // www.digitalmars.com // License for redistribution is by either the Artistic License // in artistic.txt, or the GNU General Public License in gnu.txt. // See the included readme.txt for details. // stubbed out for dmdfe. Original is in dmd/todt.c #include "lexer.h" #include "mtype.h" #include "expression.h" #include "init.h" #include "enum.h" #include "aggregate.h" #include "declaration.h" struct dt_t {}; dt_t *Initializer::toDt() { return 0; } dt_t *StructInitializer::toDt() { return 0; } dt_t *ArrayInitializer::toDt() { return 0; } dt_t *ArrayInitializer::toDtBit() { return 0; } dt_t *ExpInitializer::toDt() { return 0; } dt_t *VoidInitializer::toDt() { return 0; } /* ================================================================ */ dt_t **Expression::toDt(dt_t **pdt) { return 0; } dt_t **IntegerExp::toDt(dt_t **pdt) { return 0; } dt_t **RealExp::toDt(dt_t **pdt) { return 0; } dt_t **ComplexExp::toDt(dt_t **pdt) { return 0; } dt_t **NullExp::toDt(dt_t **pdt) { return 0; } dt_t **StringExp::toDt(dt_t **pdt) { return 0; } dt_t **SymOffExp::toDt(dt_t **pdt) { return 0; } dt_t **VarExp::toDt(dt_t **pdt) { return 0; } dt_t **ArrayLiteralExp::toDt(dt_t **pdt) { return 0; } dt_t **StructLiteralExp::toDt(dt_t **pdt) { return 0; } void ClassDeclaration::toDt(dt_t **pdt) { } void ClassDeclaration::toDt2(dt_t **pdt, ClassDeclaration *cd) { } void StructDeclaration::toDt(dt_t **pdt) { } dt_t **Type::toDt(dt_t **pdt) { return 0; } dt_t **TypeSArray::toDt(dt_t **pdt) { return 0; } dt_t **TypeStruct::toDt(dt_t **pdt) { return 0; } dt_t **TypeTypedef::toDt(dt_t **pdt) { return 0; }