comparison dmd/statement.c @ 136:0e28624814e8 trunk

[svn r140] did a lot of the work towards being able to pass multiple modules on the command line. not complete yet though
author lindquist
date Thu, 17 Jan 2008 03:15:12 +0100
parents 288fe1029e1f
children 0ab29b838084
comparison
equal deleted inserted replaced
135:176bd52b3cf5 136:0e28624814e8
1429 */ 1429 */
1430 if (dim == 2) 1430 if (dim == 2)
1431 fdapply = FuncDeclaration::genCfunc(Type::tindex, "_aaApply2"); 1431 fdapply = FuncDeclaration::genCfunc(Type::tindex, "_aaApply2");
1432 else 1432 else
1433 fdapply = FuncDeclaration::genCfunc(Type::tindex, "_aaApply"); 1433 fdapply = FuncDeclaration::genCfunc(Type::tindex, "_aaApply");
1434 fdapply->llvmRunTimeHack = true; 1434 fdapply->runTimeHack = true;
1435 ec = new VarExp(0, fdapply); 1435 ec = new VarExp(0, fdapply);
1436 Expressions *exps = new Expressions(); 1436 Expressions *exps = new Expressions();
1437 exps->push(aggr); 1437 exps->push(aggr);
1438 size_t keysize = taa->key->size(); 1438 size_t keysize = taa->key->size();
1439 keysize = (keysize + 3) & ~3; 1439 keysize = (keysize + 3) & ~3;
1471 } 1471 }
1472 const char *r = (op == TOKforeach_reverse) ? "R" : ""; 1472 const char *r = (op == TOKforeach_reverse) ? "R" : "";
1473 int j = sprintf(fdname, "_aApply%s%.*s%d", r, 2, fntab[flag], dim); 1473 int j = sprintf(fdname, "_aApply%s%.*s%d", r, 2, fntab[flag], dim);
1474 assert(j < sizeof(fdname)); 1474 assert(j < sizeof(fdname));
1475 fdapply = FuncDeclaration::genCfunc(Type::tindex, fdname); 1475 fdapply = FuncDeclaration::genCfunc(Type::tindex, fdname);
1476 fdapply->llvmRunTimeHack = true; 1476 fdapply->runTimeHack = true;
1477 1477
1478 ec = new VarExp(0, fdapply); 1478 ec = new VarExp(0, fdapply);
1479 Expressions *exps = new Expressions(); 1479 Expressions *exps = new Expressions();
1480 if (tab->ty == Tsarray) 1480 if (tab->ty == Tsarray)
1481 aggr = aggr->castTo(sc, tn->arrayOf()); 1481 aggr = aggr->castTo(sc, tn->arrayOf());