comparison gen/arrays.c @ 11:d3ee9efe20e2 trunk

[svn r15] * Fixed a bunch problems with virtual calls. Seems I did some rather poor testing. * Now 50/51 tests compile. * Added a simple runalltests.d scripts that should be run with 'gdmd -run runalltests.d' - LLVMDC will not compile it yet.
author lindquist
date Tue, 02 Oct 2007 05:10:18 +0200
parents 35d93ce68cf4
children 8d45266bbabe
comparison
equal deleted inserted replaced
10:c0f2c47e5034 11:d3ee9efe20e2
17 #include "gen/logger.h" 17 #include "gen/logger.h"
18 #include "gen/elem.h" 18 #include "gen/elem.h"
19 19
20 ////////////////////////////////////////////////////////////////////////////////////////// 20 //////////////////////////////////////////////////////////////////////////////////////////
21 21
22 llvm::StructType* LLVM_DtoArrayType(Type* t) 22 const llvm::StructType* LLVM_DtoArrayType(Type* t)
23 { 23 {
24 assert(t->next); 24 assert(t->next);
25 const llvm::Type* at = LLVM_DtoType(t->next); 25 const llvm::Type* at = LLVM_DtoType(t->next);
26 const llvm::Type* arrty; 26 const llvm::Type* arrty;
27 27
49 return llvm::StructType::get(members); 49 return llvm::StructType::get(members);
50 } 50 }
51 51
52 ////////////////////////////////////////////////////////////////////////////////////////// 52 //////////////////////////////////////////////////////////////////////////////////////////
53 53
54 llvm::ArrayType* LLVM_DtoStaticArrayType(Type* t) 54 const llvm::ArrayType* LLVM_DtoStaticArrayType(Type* t)
55 { 55 {
56 if (t->llvmType) 56 if (t->llvmType)
57 return llvm::cast<llvm::ArrayType>(t->llvmType); 57 return llvm::cast<llvm::ArrayType>(t->llvmType);
58 58
59 assert(t->ty == Tsarray); 59 assert(t->ty == Tsarray);
61 61
62 const llvm::Type* at = LLVM_DtoType(t->next); 62 const llvm::Type* at = LLVM_DtoType(t->next);
63 63
64 TypeSArray* tsa = (TypeSArray*)t; 64 TypeSArray* tsa = (TypeSArray*)t;
65 assert(tsa->dim->type->isintegral()); 65 assert(tsa->dim->type->isintegral());
66 llvm::ArrayType* arrty = llvm::ArrayType::get(at,tsa->dim->toUInteger()); 66 const llvm::ArrayType* arrty = llvm::ArrayType::get(at,tsa->dim->toUInteger());
67 67
68 tsa->llvmType = arrty; 68 tsa->llvmType = arrty;
69 return arrty; 69 return arrty;
70 } 70 }
71 71
296 assert(v); 296 assert(v);
297 297
298 inits[i] = v; 298 inits[i] = v;
299 } 299 }
300 300
301 llvm::ArrayType* arrty = LLVM_DtoStaticArrayType(t); 301 const llvm::ArrayType* arrty = LLVM_DtoStaticArrayType(t);
302 return llvm::ConstantArray::get(arrty, inits); 302 return llvm::ConstantArray::get(arrty, inits);
303 } 303 }
304 304
305 ////////////////////////////////////////////////////////////////////////////////////////// 305 //////////////////////////////////////////////////////////////////////////////////////////
306 void LLVM_DtoArrayCopy(elem* dst, elem* src) 306 void LLVM_DtoArrayCopy(elem* dst, elem* src)