Mercurial > projects > ldc
comparison gen/arrays.c @ 6:35d93ce68cf4 trunk
[svn r10] Updated for LLVM rev. 20070913
Applied fixes from wilsonk on the forum
Some tweaks to work with gc 7.0
Fixed aggregate members of aggregates
Fixed cyclic/recursive class declarations
Other minor tweaks
author | lindquist |
---|---|
date | Wed, 26 Sep 2007 19:05:18 +0200 |
parents | e116aa1488e6 |
children | d3ee9efe20e2 |
comparison
equal
deleted
inserted
replaced
5:3d60e549b0c2 | 6:35d93ce68cf4 |
---|---|
131 llvm::Type* dstty = llvm::PointerType::get(arrty->getElementType()); | 131 llvm::Type* dstty = llvm::PointerType::get(arrty->getElementType()); |
132 | 132 |
133 llvm::Value* zero = llvm::ConstantInt::get(llvm::Type::Int32Ty, 0, false); | 133 llvm::Value* zero = llvm::ConstantInt::get(llvm::Type::Int32Ty, 0, false); |
134 llvm::Value* one = llvm::ConstantInt::get(llvm::Type::Int32Ty, 1, false); | 134 llvm::Value* one = llvm::ConstantInt::get(llvm::Type::Int32Ty, 1, false); |
135 | 135 |
136 llvm::Value* dstlen = new llvm::GetElementPtrInst(dst,zero,zero,"tmp",gIR->scopebb()); | 136 llvm::Value* dstlen = LLVM_DtoGEP(dst,zero,zero,"tmp",gIR->scopebb()); |
137 llvm::Value* srclen = llvm::ConstantInt::get(LLVM_DtoSize_t(), arrty->getNumElements(), false); | 137 llvm::Value* srclen = llvm::ConstantInt::get(LLVM_DtoSize_t(), arrty->getNumElements(), false); |
138 new llvm::StoreInst(srclen, dstlen, gIR->scopebb()); | 138 new llvm::StoreInst(srclen, dstlen, gIR->scopebb()); |
139 | 139 |
140 llvm::Value* dstptr = new llvm::GetElementPtrInst(dst,zero,one,"tmp",gIR->scopebb()); | 140 llvm::Value* dstptr = LLVM_DtoGEP(dst,zero,one,"tmp",gIR->scopebb()); |
141 llvm::Value* srcptr = new llvm::BitCastInst(src,dstty,"tmp",gIR->scopebb()); | 141 llvm::Value* srcptr = new llvm::BitCastInst(src,dstty,"tmp",gIR->scopebb()); |
142 new llvm::StoreInst(srcptr, dstptr, gIR->scopebb()); | 142 new llvm::StoreInst(srcptr, dstptr, gIR->scopebb()); |
143 } | 143 } |
144 } | 144 } |
145 | 145 |
153 const llvm::ArrayType* arrty = llvm::cast<llvm::ArrayType>(ptrty->getContainedType(0)); | 153 const llvm::ArrayType* arrty = llvm::cast<llvm::ArrayType>(ptrty->getContainedType(0)); |
154 llvm::Value* zero = llvm::ConstantInt::get(llvm::Type::Int32Ty, 0, false); | 154 llvm::Value* zero = llvm::ConstantInt::get(llvm::Type::Int32Ty, 0, false); |
155 | 155 |
156 std::vector<llvm::Value*> args; | 156 std::vector<llvm::Value*> args; |
157 args.resize(3); | 157 args.resize(3); |
158 args[0] = new llvm::GetElementPtrInst(l,zero,zero,"tmp",gIR->scopebb()); | 158 args[0] = LLVM_DtoGEP(l,zero,zero,"tmp",gIR->scopebb()); |
159 args[1] = llvm::ConstantInt::get(LLVM_DtoSize_t(), arrty->getNumElements(), false); | 159 args[1] = llvm::ConstantInt::get(LLVM_DtoSize_t(), arrty->getNumElements(), false); |
160 args[2] = r; | 160 args[2] = r; |
161 | 161 |
162 const char* funcname = NULL; | 162 const char* funcname = NULL; |
163 | 163 |
223 //const llvm::PointerType* pt = llvm::cast<llvm::PointerType>(r->getType()); | 223 //const llvm::PointerType* pt = llvm::cast<llvm::PointerType>(r->getType()); |
224 | 224 |
225 llvm::Value* zero = llvm::ConstantInt::get(llvm::Type::Int32Ty, 0, false); | 225 llvm::Value* zero = llvm::ConstantInt::get(llvm::Type::Int32Ty, 0, false); |
226 llvm::Value* one = llvm::ConstantInt::get(llvm::Type::Int32Ty, 1, false); | 226 llvm::Value* one = llvm::ConstantInt::get(llvm::Type::Int32Ty, 1, false); |
227 | 227 |
228 llvm::Value* arrdim = new llvm::GetElementPtrInst(arr,zero,zero,"tmp",gIR->scopebb()); | 228 llvm::Value* arrdim = LLVM_DtoGEP(arr,zero,zero,"tmp",gIR->scopebb()); |
229 new llvm::StoreInst(dim, arrdim, gIR->scopebb()); | 229 new llvm::StoreInst(dim, arrdim, gIR->scopebb()); |
230 | 230 |
231 llvm::Value* arrptr = new llvm::GetElementPtrInst(arr,zero,one,"tmp",gIR->scopebb()); | 231 llvm::Value* arrptr = LLVM_DtoGEP(arr,zero,one,"tmp",gIR->scopebb()); |
232 new llvm::StoreInst(ptr, arrptr, gIR->scopebb()); | 232 new llvm::StoreInst(ptr, arrptr, gIR->scopebb()); |
233 } | 233 } |
234 | 234 |
235 ////////////////////////////////////////////////////////////////////////////////////////// | 235 ////////////////////////////////////////////////////////////////////////////////////////// |
236 llvm::Constant* LLVM_DtoArrayInitializer(ArrayInitializer* arrinit) | 236 llvm::Constant* LLVM_DtoArrayInitializer(ArrayInitializer* arrinit) |