diff dmd/statement.h @ 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 330f999ade44
children 03d7c4aac654
line wrap: on
line diff
--- a/dmd/statement.h	Mon Feb 02 02:35:44 2009 +0100
+++ b/dmd/statement.h	Tue Feb 03 08:54:57 2009 +0100
@@ -161,6 +161,9 @@
     // Back end
     virtual void toIR(IRState *irs);
 
+    // LDC
+    virtual void toNakedIR(IRState *irs);
+
     // Avoid dynamic_cast
     virtual DeclarationStatement *isDeclarationStatement() { return NULL; }
     virtual CompoundStatement *isCompoundStatement() { return NULL; }
@@ -185,6 +188,9 @@
     Statement *inlineScan(InlineScanState *iss);
 
     void toIR(IRState *irs);
+
+    // LDC
+    void toNakedIR(IRState *irs);
 };
 
 struct CompileStatement : Statement
@@ -234,6 +240,9 @@
 
     virtual void toIR(IRState *irs);
 
+    // LDC
+    virtual void toNakedIR(IRState *irs);
+
     virtual CompoundStatement *isCompoundStatement() { return this; }
 };
 
@@ -844,6 +853,7 @@
 
     // LDC
     bool asmLabel;       // for labels inside inline assembler
+    void toNakedIR(IRState *irs);
 };
 
 struct LabelDsymbol : Dsymbol
@@ -876,6 +886,8 @@
     // LDC
     // non-zero if this is a branch, contains the target labels identifier
     Identifier* isBranchToLabel;
+
+    void toNakedIR(IRState *irs);
 };
 
 struct AsmBlockStatement : CompoundStatement
@@ -892,6 +904,7 @@
     AsmBlockStatement *isAsmBlockStatement() { return this; }
 
     void toIR(IRState *irs);
+    void toNakedIR(IRState *irs);
 };
 
 #endif /* DMD_STATEMENT_H */