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)
     {