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)