comparison gen/runtime.cpp @ 591:e6bcc4d9e5ff

Add _d_newarrayvT and _d_newarraymvT to create arrays without initialization. Adjust DtoNewDynArray to use DtoArrayInit for initialization of new arrays. Make Type::tvoid->defaultInit() not error.
author Christian Kamm <kamm incasoftware de>
date Sun, 14 Sep 2008 10:13:50 +0200
parents 192b82878b78
children df196c8dea26
comparison
equal deleted inserted replaced
590:1ecb43102d12 591:e6bcc4d9e5ff
235 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M); 235 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M);
236 } 236 }
237 237
238 // void* _d_newarrayT(TypeInfo ti, size_t length) 238 // void* _d_newarrayT(TypeInfo ti, size_t length)
239 // void* _d_newarrayiT(TypeInfo ti, size_t length) 239 // void* _d_newarrayiT(TypeInfo ti, size_t length)
240 // void* _d_newarrayvT(TypeInfo ti, size_t length)
240 { 241 {
241 std::string fname("_d_newarrayT"); 242 std::string fname("_d_newarrayT");
242 std::string fname2("_d_newarrayiT"); 243 std::string fname2("_d_newarrayiT");
244 std::string fname3("_d_newarrayvT");
243 std::vector<const LLType*> types; 245 std::vector<const LLType*> types;
244 types.push_back(typeInfoTy); 246 types.push_back(typeInfoTy);
245 types.push_back(sizeTy); 247 types.push_back(sizeTy);
246 const llvm::FunctionType* fty = llvm::FunctionType::get(voidPtrTy, types, false); 248 const llvm::FunctionType* fty = llvm::FunctionType::get(voidPtrTy, types, false);
247 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M); 249 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M);
248 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M); 250 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M);
251 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname3, M);
249 } 252 }
250 253
251 // void* _d_newarraymT(TypeInfo ti, size_t length, size_t* dims) 254 // void* _d_newarraymT(TypeInfo ti, size_t length, size_t* dims)
252 // void* _d_newarraymiT(TypeInfo ti, size_t length, size_t* dims) 255 // void* _d_newarraymiT(TypeInfo ti, size_t length, size_t* dims)
256 // void* _d_newarraymvT(TypeInfo ti, size_t length, size_t* dims)
253 { 257 {
254 std::string fname("_d_newarraymT"); 258 std::string fname("_d_newarraymT");
255 std::string fname2("_d_newarraymiT"); 259 std::string fname2("_d_newarraymiT");
260 std::string fname3("_d_newarraymvT");
256 std::vector<const LLType*> types; 261 std::vector<const LLType*> types;
257 types.push_back(typeInfoTy); 262 types.push_back(typeInfoTy);
258 types.push_back(sizeTy); 263 types.push_back(sizeTy);
259 types.push_back(rt_ptr(sizeTy)); 264 types.push_back(rt_ptr(sizeTy));
260 const llvm::FunctionType* fty = llvm::FunctionType::get(voidPtrTy, types, false); 265 const llvm::FunctionType* fty = llvm::FunctionType::get(voidPtrTy, types, false);
261 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M); 266 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M);
262 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M); 267 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M);
268 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname3, M);
263 } 269 }
264 270
265 // void* _d_arraysetlengthT(TypeInfo ti, size_t newlength, size_t plength, void* pdata) 271 // void* _d_arraysetlengthT(TypeInfo ti, size_t newlength, size_t plength, void* pdata)
266 // void* _d_arraysetlengthiT(TypeInfo ti, size_t newlength, size_t plength, void* pdata) 272 // void* _d_arraysetlengthiT(TypeInfo ti, size_t newlength, size_t plength, void* pdata)
267 { 273 {