comparison dmd/statement.h @ 305:2b72433d5c8c trunk

[svn r326] Fixed a bunch of issues with printf's that MinGW32 did not support. Fixed problems with label collisions when using labels inside inline asm. LabelStatement is now easily reached given its Identifier, which should be useful elsewhere too. Enabled inline asm for building the lib/compiler/llvmdc runtime code, fixing branches out of asm makes this possible.
author lindquist
date Fri, 27 Jun 2008 22:04:35 +0200
parents 3ebc136702dd
children d59c363fccad
comparison
equal deleted inserted replaced
304:3ebc136702dd 305:2b72433d5c8c
759 759
760 void toIR(IRState *irs); 760 void toIR(IRState *irs);
761 761
762 // LLVMDC 762 // LLVMDC
763 llvm::BasicBlock* llvmBB; 763 llvm::BasicBlock* llvmBB;
764 bool asmLabel; // for labels inside inline assembler
764 }; 765 };
765 766
766 struct LabelDsymbol : Dsymbol 767 struct LabelDsymbol : Dsymbol
767 { 768 {
768 LabelStatement *statement; 769 LabelStatement *statement;
769 // LLVMDC
770 bool asmLabel; // for labels inside inline assembler
771 770
772 LabelDsymbol(Identifier *ident); 771 LabelDsymbol(Identifier *ident);
773 LabelDsymbol *isLabel(); 772 LabelDsymbol *isLabel();
774 }; 773 };
775 774
791 virtual AsmStatement *isAsmStatement() { return this; } 790 virtual AsmStatement *isAsmStatement() { return this; }
792 791
793 void toIR(IRState *irs); 792 void toIR(IRState *irs);
794 793
795 // LLVMDC 794 // LLVMDC
796 // non-zero if this is a branch, contains the target 795 // non-zero if this is a branch, contains the target labels identifier
797 LabelDsymbol* isBranchToLabel; 796 Identifier* isBranchToLabel;
798 }; 797 };
799 798
800 struct AsmBlockStatement : CompoundStatement 799 struct AsmBlockStatement : CompoundStatement
801 { 800 {
802 TryFinallyStatement *enclosingtryfinally; 801 TryFinallyStatement *enclosingtryfinally;