Mercurial > projects > ldc
view gen/tocsym.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 | 29c0d1194033 |
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/tocsym.c #include <stddef.h> #include "mars.h" #include "module.h" #include "mtype.h" #include "declaration.h" #include "statement.h" #include "enum.h" #include "aggregate.h" #include "init.h" #include "attrib.h" #include "lexer.h" Symbol *StaticStructInitDeclaration::toSymbol() { return 0; } /************************************* * Helper */ Symbol *Dsymbol::toSymbolX(const char *prefix, int sclass, TYPE *t, const char *suffix) { return 0; } /************************************* */ Symbol *Dsymbol::toSymbol() { return 0; } /********************************* * Generate import symbol from symbol. */ Symbol *Dsymbol::toImport() { return 0; } /************************************* */ Symbol *Dsymbol::toImport(Symbol *sym) { return 0; } /************************************* */ Symbol *VarDeclaration::toSymbol() { return 0; } /************************************* */ Symbol *ClassInfoDeclaration::toSymbol() { return 0; } /************************************* */ Symbol *ModuleInfoDeclaration::toSymbol() { return 0; } /************************************* */ Symbol *TypeInfoDeclaration::toSymbol() { return 0; } /************************************* */ Symbol *FuncDeclaration::toSymbol() { return 0; } /************************************* */ Symbol *FuncDeclaration::toThunkSymbol(int offset) { return 0; } /************************************* */ Symbol *FuncAliasDeclaration::toSymbol() { return 0; } /**************************************** * Create a static symbol we can hang DT initializers onto. */ Symbol *static_sym() { return 0; } /************************************* * Create the "ClassInfo" symbol */ Symbol *ClassDeclaration::toSymbol() { return 0; } /************************************* * Create the "InterfaceInfo" symbol */ Symbol *InterfaceDeclaration::toSymbol() { return 0; } /************************************* * Create the "ModuleInfo" symbol */ Symbol *Module::toSymbol() { return 0; } /************************************* * This is accessible via the ClassData, but since it is frequently * needed directly (like for rtti comparisons), make it directly accessible. */ Symbol *ClassDeclaration::toVtblSymbol() { return 0; } /********************************** * Create the static initializer for the struct/class. */ Symbol *AggregateDeclaration::toInitializer() { return 0; } /****************************************** */ Symbol *Module::toModuleAssert() { return 0; } /****************************************** */ Symbol *Module::toModuleArray() { return 0; } /******************************************** * Determine the right symbol to look up * an associative array element. * Input: * flags 0 don't add value signature * 1 add value signature */ Symbol *TypeAArray::aaGetSymbol(const char *func, int flags) { return 0; }