Mercurial > projects > ldc
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) |