Mercurial > projects > ldc
view dmd2/macro.h @ 978:6a32d2e18175
Fix a latent bug in the asm code.
I think that technically, using "*m0" instead of "*0" allows LLVM to pick
between using the same memory as output 0 and using a new memory location.
(So far I haven't been able to construct a testcase that actually breaks
because of this, though)
author | Frits van Bommel <fvbommel wxs.nl> |
---|---|
date | Wed, 18 Feb 2009 03:38:12 +0100 |
parents | f04dde6e882c |
children |
line wrap: on
line source
// Compiler implementation of the D programming language // Copyright (c) 1999-2006 by Digital Mars // All Rights Reserved // written by Walter Bright // http://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. #ifndef DMD_MACRO_H #define DMD_MACRO_H 1 #include <stdio.h> #include <string.h> #include <time.h> #include <ctype.h> #include "root.h" class Macro { Macro *next; // next in list unsigned char *name; // macro name size_t namelen; // length of macro name unsigned char *text; // macro replacement text size_t textlen; // length of replacement text int inuse; // macro is in use (don't expand) Macro(unsigned char *name, size_t namelen, unsigned char *text, size_t textlen); Macro *search(unsigned char *name, size_t namelen); public: static Macro *define(Macro **ptable, unsigned char *name, size_t namelen, unsigned char *text, size_t textlen); void expand(OutBuffer *buf, unsigned start, unsigned *pend, unsigned char *arg, unsigned arglen); }; #endif