comparison gen/arrays.cpp @ 173:db9890b3fb64 trunk

[svn r189] moving IR data back into DMD frontend nodes
author ChristianK
date Tue, 06 May 2008 07:56:03 +0200
parents a8cd9bc1021a
children 16e676ae5ab4
comparison
equal deleted inserted replaced
172:68a7dd38c03c 173:db9890b3fb64
39 39
40 ////////////////////////////////////////////////////////////////////////////////////////// 40 //////////////////////////////////////////////////////////////////////////////////////////
41 41
42 const llvm::ArrayType* DtoStaticArrayType(Type* t) 42 const llvm::ArrayType* DtoStaticArrayType(Type* t)
43 { 43 {
44 if (gIR->irType[t].type) 44 if (t->ir.type)
45 return isaArray(gIR->irType[t].type->get()); 45 return isaArray(t->ir.type->get());
46 46
47 assert(t->ty == Tsarray); 47 assert(t->ty == Tsarray);
48 assert(t->next); 48 assert(t->next);
49 49
50 const llvm::Type* at = DtoType(t->next); 50 const llvm::Type* at = DtoType(t->next);
51 51
52 TypeSArray* tsa = (TypeSArray*)t; 52 TypeSArray* tsa = (TypeSArray*)t;
53 assert(tsa->dim->type->isintegral()); 53 assert(tsa->dim->type->isintegral());
54 const llvm::ArrayType* arrty = llvm::ArrayType::get(at,tsa->dim->toUInteger()); 54 const llvm::ArrayType* arrty = llvm::ArrayType::get(at,tsa->dim->toUInteger());
55 55
56 assert(!gIR->irType[tsa].type); 56 assert(!tsa->ir.type);
57 gIR->irType[tsa].type = new llvm::PATypeHolder(arrty); 57 tsa->ir.type = new llvm::PATypeHolder(arrty);
58 return arrty; 58 return arrty;
59 } 59 }
60 60
61 ////////////////////////////////////////////////////////////////////////////////////////// 61 //////////////////////////////////////////////////////////////////////////////////////////
62 62
700 700
701 // pass element typeinfo ? 701 // pass element typeinfo ?
702 if (useti) { 702 if (useti) {
703 TypeInfoDeclaration* ti = DtoDType(l->getType())->next->getTypeInfoDeclaration(); 703 TypeInfoDeclaration* ti = DtoDType(l->getType())->next->getTypeInfoDeclaration();
704 DtoForceConstInitDsymbol(ti); 704 DtoForceConstInitDsymbol(ti);
705 Logger::cout() << "typeinfo decl: " << *gIR->irDsymbol[ti].getIrValue() << '\n'; 705 Logger::cout() << "typeinfo decl: " << *ti->ir.getIrValue() << '\n';
706 706
707 pt = fn->getFunctionType()->getParamType(2); 707 pt = fn->getFunctionType()->getParamType(2);
708 args.push_back(DtoBitCast(gIR->irDsymbol[ti].getIrValue(), pt)); 708 args.push_back(DtoBitCast(ti->ir.getIrValue(), pt));
709 } 709 }
710 710
711 return gIR->ir->CreateCall(fn, args.begin(), args.end(), "tmp"); 711 return gIR->ir->CreateCall(fn, args.begin(), args.end(), "tmp");
712 } 712 }
713 713