comparison dmd/statement.h @ 232:092468448d25 trunk

[svn r248] Fixed: labels in inline asm block now work for the normal case. Fixed: inline asm blocks are now emitted as a single asm entity.
author lindquist
date Sun, 08 Jun 2008 06:15:51 +0200
parents 761c8352f494
children fa691b1c0498
comparison
equal deleted inserted replaced
231:61aa721a6b7f 232:092468448d25
39 struct ReturnStatement; 39 struct ReturnStatement;
40 struct CompoundStatement; 40 struct CompoundStatement;
41 struct Argument; 41 struct Argument;
42 struct StaticAssert; 42 struct StaticAssert;
43 struct AsmStatement; 43 struct AsmStatement;
44 struct AsmBlockStatement;
44 struct GotoStatement; 45 struct GotoStatement;
45 struct ScopeStatement; 46 struct ScopeStatement;
46 struct TryCatchStatement; 47 struct TryCatchStatement;
47 struct TryFinallyStatement; 48 struct TryFinallyStatement;
48 struct HdrGenState; 49 struct HdrGenState;
88 void error(const char *format, ...); 89 void error(const char *format, ...);
89 virtual void toCBuffer(OutBuffer *buf, HdrGenState *hgs); 90 virtual void toCBuffer(OutBuffer *buf, HdrGenState *hgs);
90 virtual TryCatchStatement *isTryCatchStatement() { return NULL; } 91 virtual TryCatchStatement *isTryCatchStatement() { return NULL; }
91 virtual GotoStatement *isGotoStatement() { return NULL; } 92 virtual GotoStatement *isGotoStatement() { return NULL; }
92 virtual AsmStatement *isAsmStatement() { return NULL; } 93 virtual AsmStatement *isAsmStatement() { return NULL; }
94 virtual AsmBlockStatement *isAsmBlockStatement() { return NULL; }
93 #ifdef _DH 95 #ifdef _DH
94 int incontract; 96 int incontract;
95 #endif 97 #endif
96 virtual ScopeStatement *isScopeStatement() { return NULL; } 98 virtual ScopeStatement *isScopeStatement() { return NULL; }
97 virtual Statement *semantic(Scope *sc); 99 virtual Statement *semantic(Scope *sc);
752 void toCBuffer(OutBuffer *buf, HdrGenState *hgs); 754 void toCBuffer(OutBuffer *buf, HdrGenState *hgs);
753 755
754 Statement *inlineScan(InlineScanState *iss); 756 Statement *inlineScan(InlineScanState *iss);
755 757
756 void toIR(IRState *irs); 758 void toIR(IRState *irs);
757 759
760 // LLVMDC
758 llvm::BasicBlock* llvmBB; 761 llvm::BasicBlock* llvmBB;
759 }; 762 };
760 763
761 struct LabelDsymbol : Dsymbol 764 struct LabelDsymbol : Dsymbol
762 { 765 {
786 virtual AsmStatement *isAsmStatement() { return this; } 789 virtual AsmStatement *isAsmStatement() { return this; }
787 790
788 void toIR(IRState *irs); 791 void toIR(IRState *irs);
789 }; 792 };
790 793
794 struct AsmBlockStatement : CompoundStatement
795 {
796 AsmBlockStatement(Loc loc, Statements *s);
797 Statements *flatten(Scope *sc);
798 AsmBlockStatement *isAsmBlockStatement() { return this; }
799
800 void toIR(IRState *irs);
801 };
802
791 #endif /* DMD_STATEMENT_H */ 803 #endif /* DMD_STATEMENT_H */