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