diff --git a/dmd2/declaration.c b/dmd2/declaration.c index fa2dcb64..2e27b8c5 100644 --- a/dmd2/declaration.c +++ b/dmd2/declaration.c @@ -619,6 +619,7 @@ VarDeclaration::VarDeclaration(Loc loc, Type *type, Identifier *id, Initializer // LDC anonDecl = NULL; offset2 = 0; + nakedUse = false; } Dsymbol *VarDeclaration::syntaxCopy(Dsymbol *s) diff --git a/dmd2/declaration.h b/dmd2/declaration.h index cb203a2d..7e26a2c6 100644 --- a/dmd2/declaration.h +++ b/dmd2/declaration.h @@ -280,6 +280,7 @@ struct VarDeclaration : Declaration // LDC AnonDeclaration* anonDecl; unsigned offset2; + bool nakedUse; }; /**************************************************************/ diff --git a/dmd2/mars.c b/dmd2/mars.c index 9034b21f..3fa655a8 100644 --- a/dmd2/mars.c +++ b/dmd2/mars.c @@ -912,7 +912,7 @@ int main(int argc, char *argv[]) global.params.cpu = ARCHthumb; } else { - assert(0 && "Invalid arch"); + error("invalid cpu architecture specified: %s", global.params.llvmArch); } assert(global.params.cpu != ARCHinvalid); diff --git a/dmd2/statement.h b/dmd2/statement.h index cb80c505..98221a83 100644 --- a/dmd2/statement.h +++ b/dmd2/statement.h @@ -162,6 +162,9 @@ struct Statement : Object // Back end virtual void toIR(IRState *irs); + // LDC + virtual void toNakedIR(IRState *irs); + // Avoid dynamic_cast virtual DeclarationStatement *isDeclarationStatement() { return NULL; } virtual CompoundStatement *isCompoundStatement() { return NULL; } @@ -187,6 +190,9 @@ struct ExpStatement : Statement Statement *inlineScan(InlineScanState *iss); void toIR(IRState *irs); + + // LDC + virtual void toNakedIR(IRState *irs); }; struct CompileStatement : Statement @@ -237,6 +243,9 @@ struct CompoundStatement : Statement virtual void toIR(IRState *irs); + // LDC + virtual void toNakedIR(IRState *irs); + virtual CompoundStatement *isCompoundStatement() { return this; } }; @@ -879,6 +888,7 @@ struct LabelStatement : Statement // LDC bool asmLabel; // for labels inside inline assembler + virtual void toNakedIR(IRState *irs); }; struct LabelDsymbol : Dsymbol @@ -912,6 +922,8 @@ struct AsmStatement : Statement // LDC // non-zero if this is a branch, contains the target labels identifier Identifier* isBranchToLabel; + + virtual void toNakedIR(IRState *irs); }; struct AsmBlockStatement : CompoundStatement @@ -928,6 +940,7 @@ struct AsmBlockStatement : CompoundStatement AsmBlockStatement *isAsmBlockStatement() { return this; } void toIR(IRState *irs); + virtual void toNakedIR(IRState *irs); }; #endif /* DMD_STATEMENT_H */