comparison dmd/statement.h @ 302:bef811104734 trunk

[svn r323] Branching out of inline asm works. Renamed emit_finallyblocks to DtoFinallyBlocks and moved to llvmhelpers. Added enclosingtryfinally to AsmBlockStatement, so branches out of asm blocks respect finallys. Refactored some GotoStatement code into DtoGoto.
author ChristianK
date Wed, 25 Jun 2008 20:39:09 +0200
parents df8a7b8d5929
children 3ebc136702dd
comparison
equal deleted inserted replaced
301:f42a1090e895 302:bef811104734
792 792
793 void toIR(IRState *irs); 793 void toIR(IRState *irs);
794 794
795 // LLVMDC 795 // LLVMDC
796 // non-zero if this is a branch, contains the target 796 // non-zero if this is a branch, contains the target
797 Identifier* isBranchToLabel; 797 LabelDsymbol* isBranchToLabel;
798 }; 798 };
799 799
800 struct AsmBlockStatement : CompoundStatement 800 struct AsmBlockStatement : CompoundStatement
801 { 801 {
802 TryFinallyStatement *enclosingtryfinally;
803
802 AsmBlockStatement(Loc loc, Statements *s); 804 AsmBlockStatement(Loc loc, Statements *s);
803 Statements *flatten(Scope *sc); 805 Statements *flatten(Scope *sc);
804 Statement *syntaxCopy(); 806 Statement *syntaxCopy();
807 Statement *semantic(Scope *sc);
805 808
806 CompoundStatement *isCompoundStatement() { return NULL; } 809 CompoundStatement *isCompoundStatement() { return NULL; }
807 AsmBlockStatement *isAsmBlockStatement() { return this; } 810 AsmBlockStatement *isAsmBlockStatement() { return this; }
808 811
809 void toIR(IRState *irs); 812 void toIR(IRState *irs);