Mercurial > projects > ldc
comparison dmd/statement.h @ 239:fa691b1c0498 trunk
[svn r256] AsmBlockStatement was still being flattened in some cases.
Function parameters passed as arguments to inline asm was not given storage.
author | lindquist |
---|---|
date | Sun, 08 Jun 2008 22:07:10 +0200 |
parents | 092468448d25 |
children | 88252a1af660 |
comparison
equal
deleted
inserted
replaced
238:346cba22f4b8 | 239:fa691b1c0498 |
---|---|
168 { | 168 { |
169 Statements *statements; | 169 Statements *statements; |
170 | 170 |
171 CompoundStatement(Loc loc, Statements *s); | 171 CompoundStatement(Loc loc, Statements *s); |
172 CompoundStatement(Loc loc, Statement *s1, Statement *s2); | 172 CompoundStatement(Loc loc, Statement *s1, Statement *s2); |
173 Statement *syntaxCopy(); | 173 virtual Statement *syntaxCopy(); |
174 void toCBuffer(OutBuffer *buf, HdrGenState *hgs); | 174 void toCBuffer(OutBuffer *buf, HdrGenState *hgs); |
175 Statement *semantic(Scope *sc); | 175 Statement *semantic(Scope *sc); |
176 int usesEH(); | 176 int usesEH(); |
177 int fallOffEnd(); | 177 int fallOffEnd(); |
178 int comeFrom(); | 178 int comeFrom(); |
179 Statements *flatten(Scope *sc); | 179 virtual Statements *flatten(Scope *sc); |
180 ReturnStatement *isReturnStatement(); | 180 ReturnStatement *isReturnStatement(); |
181 Expression *interpret(InterState *istate); | 181 Expression *interpret(InterState *istate); |
182 | 182 |
183 int inlineCost(InlineCostState *ics); | 183 int inlineCost(InlineCostState *ics); |
184 Expression *doInline(InlineDoState *ids); | 184 Expression *doInline(InlineDoState *ids); |
185 Statement *inlineScan(InlineScanState *iss); | 185 Statement *inlineScan(InlineScanState *iss); |
186 | 186 |
187 void toIR(IRState *irs); | 187 virtual void toIR(IRState *irs); |
188 | 188 |
189 CompoundStatement *isCompoundStatement() { return this; } | 189 virtual CompoundStatement *isCompoundStatement() { return this; } |
190 }; | 190 }; |
191 | 191 |
192 /* The purpose of this is so that continue will go to the next | 192 /* The purpose of this is so that continue will go to the next |
193 * of the statements, and break will go to the end of the statements. | 193 * of the statements, and break will go to the end of the statements. |
194 */ | 194 */ |
793 | 793 |
794 struct AsmBlockStatement : CompoundStatement | 794 struct AsmBlockStatement : CompoundStatement |
795 { | 795 { |
796 AsmBlockStatement(Loc loc, Statements *s); | 796 AsmBlockStatement(Loc loc, Statements *s); |
797 Statements *flatten(Scope *sc); | 797 Statements *flatten(Scope *sc); |
798 Statement *syntaxCopy(); | |
799 | |
800 CompoundStatement *isCompoundStatement() { return NULL; } | |
798 AsmBlockStatement *isAsmBlockStatement() { return this; } | 801 AsmBlockStatement *isAsmBlockStatement() { return this; } |
799 | 802 |
800 void toIR(IRState *irs); | 803 void toIR(IRState *irs); |
801 }; | 804 }; |
802 | 805 |