Mercurial > projects > ldc
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 */ |