Mercurial > projects > ldc
diff gen/asmstmt.cpp @ 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 | a168a2c3ea48 |
children | df8a7b8d5929 |
line wrap: on
line diff
--- a/gen/asmstmt.cpp Sun Jun 08 21:23:09 2008 +0200 +++ b/gen/asmstmt.cpp Sun Jun 08 22:07:10 2008 +0200 @@ -245,7 +245,6 @@ static std::string i_cns = "i"; static std::string p_cns = "i"; - static std::string l_cns = "X"; static std::string m_cns = "*m"; static std::string mw_cns = "=*m"; static std::string mrw_cns = "+*m"; @@ -497,6 +496,7 @@ // create asm block structure assert(!p->asmBlock); IRAsmBlock* asmblock = new IRAsmBlock; + assert(asmblock); p->asmBlock = asmblock; // do asm statements @@ -595,3 +595,18 @@ { return NULL; } + +Statement *AsmBlockStatement::syntaxCopy() +{ + Statements *a = new Statements(); + a->setDim(statements->dim); + for (size_t i = 0; i < statements->dim; i++) + { + Statement *s = (Statement *)statements->data[i]; + if (s) + s = s->syntaxCopy(); + a->data[i] = s; + } + AsmBlockStatement *cs = new AsmBlockStatement(loc, a); + return cs; +} \ No newline at end of file