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