Mercurial > projects > ldc
diff gen/asmstmt.cpp @ 234:9760f54af0b7 trunk
[svn r250] Fixed the warning about dropping arguments to _Dmain when optimizing.
Did a few cleanups in inline asm code.
author | lindquist |
---|---|
date | Sun, 08 Jun 2008 08:03:19 +0200 |
parents | 76ee1bbe487e |
children | a168a2c3ea48 |
line wrap: on
line diff
--- a/gen/asmstmt.cpp Sun Jun 08 06:45:54 2008 +0200 +++ b/gen/asmstmt.cpp Sun Jun 08 08:03:19 2008 +0200 @@ -157,6 +157,7 @@ static void d_format_priv_asm_label(char * buf, unsigned n) { //ASM_GENERATE_INTERNAL_LABEL(buf, "LDASM", n);//inserts a '*' for use with assemble_name + assert(0); sprintf(buf, ".LDASM%u", n); } @@ -270,42 +271,13 @@ cns = i_cns; break; case Arg_Pointer: -// FIXME -std::cout << "asm fixme Arg_Pointer" << std::endl; - if (arg->expr->op == TOKdsymbol) - { - assert(0); - DsymbolExp* dse = (DsymbolExp*)arg->expr; - LabelDsymbol* lbl = dse->s->isLabel(); - assert(lbl); - arg_val = lbl->statement->llvmBB; - if (!arg_val) - { - arg_val = lbl->statement->llvmBB = llvm::BasicBlock::Create("label", irs->topfunc()); - } - cns = l_cns; - } - else - { - arg_val = arg->expr->toElem(irs)->getRVal(); - cns = p_cns; - } - /*if (arg->expr->op == TOKvar) - arg_val = arg->expr->toElem(irs); - else if (arg->expr->op == TOKdsymbol) - arg_val = arg->expr->toElem(irs); - else - assert(0);*/ + assert(arg->expr->op == TOKvar); + arg_val = arg->expr->toElem(irs)->getRVal(); + cns = p_cns; break; case Arg_Memory: -// FIXME -std::cout << "asm fixme Arg_Memory" << std::endl; arg_val = arg->expr->toElem(irs)->getRVal(); -// if (arg->expr->op == TOKvar) -// arg_val = arg->expr->toElem(irs); -// else -// arg_val = arg->expr->toElem(irs); switch (arg->mode) { case Mode_Input: cns = m_cns; break; @@ -471,8 +443,8 @@ }; assert(nargs <= 10); - static const std::string prefix("<<<out"); - static const std::string suffix(">>>"); + static const std::string prefix("<<out"); + static const std::string suffix(">>"); std::string argnum; std::string needle; char buf[10]; @@ -493,8 +465,8 @@ }; assert(nargs <= 10); - static const std::string prefix("<<<in"); - static const std::string suffix(">>>"); + static const std::string prefix("<<in"); + static const std::string suffix(">>"); std::string argnum; std::string needle; char buf[10];