diff dmd/declaration.h @ 305:2b72433d5c8c trunk

[svn r326] Fixed a bunch of issues with printf's that MinGW32 did not support. Fixed problems with label collisions when using labels inside inline asm. LabelStatement is now easily reached given its Identifier, which should be useful elsewhere too. Enabled inline asm for building the lib/compiler/llvmdc runtime code, fixing branches out of asm makes this possible.
author lindquist
date Fri, 27 Jun 2008 22:04:35 +0200
parents 5acec6b2eef8
children aaade6ded589
line wrap: on
line diff
--- a/dmd/declaration.h	Wed Jun 25 23:42:38 2008 +0200
+++ b/dmd/declaration.h	Fri Jun 27 22:04:35 2008 +0200
@@ -16,6 +16,7 @@
 #endif /* __DMC__ */
 
 #include <set>
+#include <map>
 
 #include "dsymbol.h"
 #include "lexer.h"
@@ -24,6 +25,7 @@
 struct Expression;
 struct Statement;
 struct LabelDsymbol;
+struct LabelStatement;
 struct Initializer;
 struct Module;
 struct InlineScanState;
@@ -611,6 +613,11 @@
     // llvmdc stuff
     bool runTimeHack;
     std::set<VarDeclaration*> nestedVars;
+
+    // we keep our own table of label statements as LabelDsymbolS
+    // don't always carry their corresponding statement along ...
+    typedef std::map<const char*, LabelStatement*> LabelMap;
+    LabelMap labmap;
 };
 
 struct FuncAliasDeclaration : FuncDeclaration