Mercurial > projects > ldc
diff gen/runtime.cpp @ 286:a3b7c19c866c trunk
[svn r307] Fixed: multidimensional new expressions now work. Eg.:
auto ma = new int[][] (3,9);
author | lindquist |
---|---|
date | Sat, 21 Jun 2008 04:47:14 +0200 |
parents | a95056b3c996 |
children | d59c363fccad |
line wrap: on
line diff
--- a/gen/runtime.cpp Sat Jun 21 03:14:49 2008 +0200 +++ b/gen/runtime.cpp Sat Jun 21 04:47:14 2008 +0200 @@ -266,6 +266,20 @@ llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M); } + // void* _d_newarraymT(TypeInfo ti, size_t length, size_t* dims) + // void* _d_newarraymiT(TypeInfo ti, size_t length, size_t* dims) + { + std::string fname("_d_newarraymT"); + std::string fname2("_d_newarraymiT"); + std::vector<const LLType*> types; + types.push_back(typeInfoTy); + types.push_back(sizeTy); + types.push_back(rt_ptr(sizeTy)); + const llvm::FunctionType* fty = llvm::FunctionType::get(voidPtrTy, types, false); + llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M); + llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M); + } + // void* _d_arraysetlengthT(TypeInfo ti, size_t newlength, size_t plength, void* pdata) // void* _d_arraysetlengthiT(TypeInfo ti, size_t newlength, size_t plength, void* pdata) {