Changeset 622:26fce59fe80a
- Timestamp:
- 10/01/08 12:32:31
(3 months ago)
- Author:
- Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
- branch:
- default
- Message:
Wrapped all the most potentially expensive logging calls in a conditional to only do work when actually requested.
Commented some logging calls that could potentially write out many megabytes of type dumps.
-
Files:
-
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
| r585 |
r622 |
|
| 106 | 106 | const llvm::FunctionType* funcTy = func->getFunctionType(); |
|---|
| 107 | 107 | |
|---|
| 108 | | Logger::cout() << "_aaIn = " << *func << '\n'; |
|---|
| | 108 | if (Logger::enabled()) |
|---|
| | 109 | Logger::cout() << "_aaIn = " << *func << '\n'; |
|---|
| 109 | 110 | |
|---|
| 110 | 111 | // aa param |
|---|
| 111 | 112 | LLValue* aaval = aa->getRVal(); |
|---|
| 112 | | Logger::cout() << "aaval: " << *aaval << '\n'; |
|---|
| 113 | | Logger::cout() << "totype: " << *funcTy->getParamType(0) << '\n'; |
|---|
| | 113 | if (Logger::enabled()) |
|---|
| | 114 | { |
|---|
| | 115 | Logger::cout() << "aaval: " << *aaval << '\n'; |
|---|
| | 116 | Logger::cout() << "totype: " << *funcTy->getParamType(0) << '\n'; |
|---|
| | 117 | } |
|---|
| 114 | 118 | aaval = DtoBitCast(aaval, funcTy->getParamType(0)); |
|---|
| 115 | 119 | |
|---|
| … | … | |
| 144 | 148 | const llvm::FunctionType* funcTy = func->getFunctionType(); |
|---|
| 145 | 149 | |
|---|
| 146 | | Logger::cout() << "_aaDel = " << *func << '\n'; |
|---|
| | 150 | if (Logger::enabled()) |
|---|
| | 151 | Logger::cout() << "_aaDel = " << *func << '\n'; |
|---|
| 147 | 152 | |
|---|
| 148 | 153 | // aa param |
|---|
| 149 | 154 | LLValue* aaval = aa->getRVal(); |
|---|
| 150 | | Logger::cout() << "aaval: " << *aaval << '\n'; |
|---|
| 151 | | Logger::cout() << "totype: " << *funcTy->getParamType(0) << '\n'; |
|---|
| | 155 | if (Logger::enabled()) |
|---|
| | 156 | { |
|---|
| | 157 | Logger::cout() << "aaval: " << *aaval << '\n'; |
|---|
| | 158 | Logger::cout() << "totype: " << *funcTy->getParamType(0) << '\n'; |
|---|
| | 159 | } |
|---|
| 152 | 160 | aaval = DtoBitCast(aaval, funcTy->getParamType(0)); |
|---|
| 153 | 161 | |
|---|
| r611 |
r622 |
|
| 86 | 86 | else |
|---|
| 87 | 87 | { |
|---|
| 88 | | Logger::cout() << "array assignment type dont match: " << *dst->getType() << "\n\n" << *src->getType() << '\n'; |
|---|
| | 88 | if (Logger::enabled()) |
|---|
| | 89 | Logger::cout() << "array assignment type dont match: " << *dst->getType() << "\n\n" << *src->getType() << '\n'; |
|---|
| 89 | 90 | const LLArrayType* arrty = isaArray(src->getType()->getContainedType(0)); |
|---|
| 90 | 91 | if (!arrty) |
|---|
| … | … | |
| 235 | 236 | LLFunction* fn = LLVM_D_GetRuntimeFunction(gIR->module, funcname); |
|---|
| 236 | 237 | assert(fn); |
|---|
| 237 | | Logger::cout() << "calling array init function: " << *fn <<'\n'; |
|---|
| | 238 | if (Logger::enabled()) |
|---|
| | 239 | Logger::cout() << "calling array init function: " << *fn <<'\n'; |
|---|
| 238 | 240 | CallOrInvoke* call = gIR->CreateCallOrInvoke(fn, args.begin(), args.end()); |
|---|
| 239 | 241 | call->setCallingConv(llvm::CallingConv::C); |
|---|
| … | … | |
| 336 | 338 | |
|---|
| 337 | 339 | inits[i] = v; |
|---|
| 338 | | Logger::cout() << "llval: " << *v << '\n'; |
|---|
| | 340 | if (Logger::enabled()) |
|---|
| | 341 | Logger::cout() << "llval: " << *v << '\n'; |
|---|
| 339 | 342 | } |
|---|
| 340 | 343 | |
|---|
| … | … | |
| 427 | 430 | newptr = DtoBitCast(newptr, dstType, ".gc_mem"); |
|---|
| 428 | 431 | |
|---|
| 429 | | Logger::cout() << "final ptr = " << *newptr << '\n'; |
|---|
| | 432 | if (Logger::enabled()) |
|---|
| | 433 | Logger::cout() << "final ptr = " << *newptr << '\n'; |
|---|
| 430 | 434 | |
|---|
| 431 | 435 | return new DSliceValue(arrayType, arrayLen, newptr); |
|---|
| … | … | |
| 469 | 473 | newptr = DtoBitCast(newptr, dstType, ".gc_mem"); |
|---|
| 470 | 474 | |
|---|
| 471 | | Logger::cout() << "final ptr = " << *newptr << '\n'; |
|---|
| | 475 | if (Logger::enabled()) |
|---|
| | 476 | Logger::cout() << "final ptr = " << *newptr << '\n'; |
|---|
| 472 | 477 | |
|---|
| 473 | 478 | assert(firstDim); |
|---|
| … | … | |
| 498 | 503 | |
|---|
| 499 | 504 | LLValue* arrPtr = DtoArrayPtr(array); |
|---|
| 500 | | Logger::cout() << "arrPtr = " << *arrPtr << '\n'; |
|---|
| | 505 | if (Logger::enabled()) |
|---|
| | 506 | Logger::cout() << "arrPtr = " << *arrPtr << '\n'; |
|---|
| 501 | 507 | args.push_back(DtoBitCast(arrPtr, fn->getFunctionType()->getParamType(3), "tmp")); |
|---|
| 502 | 508 | |
|---|
| … | … | |
| 727 | 733 | |
|---|
| 728 | 734 | LLSmallVector<LLValue*, 3> args; |
|---|
| 729 | | Logger::cout() << "bitcasting to " << *pt << '\n'; |
|---|
| 730 | | Logger::cout() << *lmem << '\n'; |
|---|
| 731 | | Logger::cout() << *rmem << '\n'; |
|---|
| | 735 | if (Logger::enabled()) |
|---|
| | 736 | { |
|---|
| | 737 | Logger::cout() << "bitcasting to " << *pt << '\n'; |
|---|
| | 738 | Logger::cout() << *lmem << '\n'; |
|---|
| | 739 | Logger::cout() << *rmem << '\n'; |
|---|
| | 740 | } |
|---|
| 732 | 741 | args.push_back(DtoBitCast(lmem,pt)); |
|---|
| 733 | 742 | args.push_back(DtoBitCast(rmem,pt)); |
|---|
| … | … | |
| 739 | 748 | // DtoTypeInfoOf only does declare, not enough in this case :/ |
|---|
| 740 | 749 | DtoForceConstInitDsymbol(t->vtinfo); |
|---|
| 741 | | Logger::cout() << "typeinfo decl: " << *tival << '\n'; |
|---|
| | 750 | |
|---|
| | 751 | if (Logger::enabled()) |
|---|
| | 752 | Logger::cout() << "typeinfo decl: " << *tival << '\n'; |
|---|
| 742 | 753 | |
|---|
| 743 | 754 | pt = fn->getFunctionType()->getParamType(2); |
|---|
| … | … | |
| 958 | 969 | bool isslice = false; |
|---|
| 959 | 970 | |
|---|
| 960 | | Logger::cout() << "from array or sarray" << '\n'; |
|---|
| | 971 | if (Logger::enabled()) |
|---|
| | 972 | Logger::cout() << "from array or sarray" << '\n'; |
|---|
| | 973 | |
|---|
| 961 | 974 | if (totype->ty == Tpointer) { |
|---|
| 962 | | Logger::cout() << "to pointer" << '\n'; |
|---|
| | 975 | if (Logger::enabled()) |
|---|
| | 976 | Logger::cout() << "to pointer" << '\n'; |
|---|
| 963 | 977 | rval = DtoArrayPtr(u); |
|---|
| 964 | 978 | if (rval->getType() != tolltype) |
|---|
| … | … | |
| 966 | 980 | } |
|---|
| 967 | 981 | else if (totype->ty == Tarray) { |
|---|
| 968 | | Logger::cout() << "to array" << '\n'; |
|---|
| | 982 | if (Logger::enabled()) |
|---|
| | 983 | Logger::cout() << "to array" << '\n'; |
|---|
| 969 | 984 | |
|---|
| 970 | 985 | const LLType* ptrty = DtoArrayType(totype)->getContainedType(1); |
|---|
| … | … | |
| 972 | 987 | |
|---|
| 973 | 988 | if (DSliceValue* usl = u->isSlice()) { |
|---|
| 974 | | Logger::println("from slice"); |
|---|
| 975 | | Logger::cout() << "from: " << *usl->ptr << " to: " << *ptrty << '\n'; |
|---|
| | 989 | if (Logger::enabled()) |
|---|
| | 990 | { |
|---|
| | 991 | Logger::println("from slice"); |
|---|
| | 992 | Logger::cout() << "from: " << *usl->ptr << " to: " << *ptrty << '\n'; |
|---|
| | 993 | } |
|---|
| 976 | 994 | rval = DtoBitCast(usl->ptr, ptrty); |
|---|
| 977 | 995 | if (fromtype->next->size() == totype->next->size()) |
|---|
| … | … | |
| 983 | 1001 | LLValue* uval = u->getRVal(); |
|---|
| 984 | 1002 | if (fromtype->ty == Tsarray) { |
|---|
| 985 | | Logger::cout() << "uvalTy = " << *uval->getType() << '\n'; |
|---|
| | 1003 | if (Logger::enabled()) |
|---|
| | 1004 | Logger::cout() << "uvalTy = " << *uval->getType() << '\n'; |
|---|
| 986 | 1005 | assert(isaPointer(uval->getType())); |
|---|
| 987 | 1006 | const LLArrayType* arrty = isaArray(uval->getType()->getContainedType(0)); |
|---|
| … | … | |
| 1013 | 1032 | } |
|---|
| 1014 | 1033 | else if (totype->ty == Tsarray) { |
|---|
| 1015 | | Logger::cout() << "to sarray" << '\n'; |
|---|
| | 1034 | if (Logger::enabled()) |
|---|
| | 1035 | Logger::cout() << "to sarray" << '\n'; |
|---|
| 1016 | 1036 | assert(0); |
|---|
| 1017 | 1037 | } |
|---|
| r584 |
r622 |
|
| 625 | 625 | types.insert(types.end(), intypes.begin(), intypes.end()); |
|---|
| 626 | 626 | llvm::FunctionType* fty = llvm::FunctionType::get(llvm::Type::VoidTy, types, false); |
|---|
| 627 | | Logger::cout() << "function type = " << *fty << '\n'; |
|---|
| | 627 | if (Logger::enabled()) |
|---|
| | 628 | Logger::cout() << "function type = " << *fty << '\n'; |
|---|
| 628 | 629 | llvm::InlineAsm* ia = llvm::InlineAsm::get(fty, code, out_c, true); |
|---|
| 629 | 630 | |
|---|
| r618 |
r622 |
|
| 95 | 95 | Logger::println("DtoResolveClass(%s): %s", cd->toPrettyChars(), cd->loc.toChars()); |
|---|
| 96 | 96 | LOG_SCOPE; |
|---|
| | 97 | |
|---|
| | 98 | //printf("resolve class: %s\n", cd->toPrettyChars()); |
|---|
| 97 | 99 | |
|---|
| 98 | 100 | // get the TypeClass |
|---|
| … | … | |
| 245 | 247 | const LLType* ivtblTy = itc->ir.vtblType->get(); |
|---|
| 246 | 248 | assert(ivtblTy); |
|---|
| 247 | | Logger::cout() << "interface vtbl type: " << *ivtblTy << '\n'; |
|---|
| | 249 | if (Logger::enabled()) |
|---|
| | 250 | Logger::cout() << "interface vtbl type: " << *ivtblTy << '\n'; |
|---|
| 248 | 251 | fieldtypes.push_back(getPtrToType(ivtblTy)); |
|---|
| 249 | 252 | |
|---|
| … | … | |
| 361 | 364 | LOG_SCOPE; |
|---|
| 362 | 365 | |
|---|
| | 366 | //printf("declare class: %s\n", cd->toPrettyChars()); |
|---|
| | 367 | |
|---|
| 363 | 368 | assert(cd->type->ty == Tclass); |
|---|
| 364 | 369 | TypeClass* ts = (TypeClass*)cd->type; |
|---|
| … | … | |
| 655 | 660 | for (int k=1; k < b->vtbl.dim; k++) |
|---|
| 656 | 661 | { |
|---|
| 657 | | Logger::println("interface vtbl const init nr. %d", k); |
|---|
| | 662 | // Logger::println("interface vtbl const init nr. %d", k); |
|---|
| 658 | 663 | Dsymbol* dsym = (Dsymbol*)b->vtbl.data[k]; |
|---|
| 659 | 664 | |
|---|
| … | … | |
| 675 | 680 | c = llvm::ConstantExpr::getBitCast(c, targetTy); |
|---|
| 676 | 681 | iinits.push_back(c); |
|---|
| 677 | | Logger::cout() << "c: " << *c << '\n'; |
|---|
| | 682 | // if (Logger::enabled()) |
|---|
| | 683 | // Logger::cout() << "c: " << *c << '\n'; |
|---|
| 678 | 684 | } |
|---|
| 679 | 685 | |
|---|
| 680 | 686 | #if OPAQUE_VTBLS |
|---|
| 681 | | Logger::cout() << "n: " << iinits.size() << " ivtbl_ty: " << *ivtbl_ty << '\n'; |
|---|
| | 687 | // if (Logger::enabled()) |
|---|
| | 688 | // Logger::cout() << "n: " << iinits.size() << " ivtbl_ty: " << *ivtbl_ty << '\n'; |
|---|
| 682 | 689 | LLConstant* civtblInit = llvm::ConstantArray::get(ivtbl_ty, iinits); |
|---|
| 683 | 690 | iri->vtblInit = llvm::cast<llvm::ConstantArray>(civtblInit); |
|---|
| … | … | |
| 826 | 833 | LLValue* src = thisval->getRVal(); |
|---|
| 827 | 834 | LLValue* dst = DtoGEPi(mem,0,idx,"tmp"); |
|---|
| 828 | | Logger::cout() << "dst: " << *dst << "\nsrc: " << *src << '\n'; |
|---|
| | 835 | if (Logger::enabled()) |
|---|
| | 836 | Logger::cout() << "dst: " << *dst << "\nsrc: " << *src << '\n'; |
|---|
| 829 | 837 | DtoStore(src, dst); |
|---|
| 830 | 838 | } |
|---|
| … | … | |
| 1176 | 1184 | |
|---|
| 1177 | 1185 | LLValue* vthis = inst->getRVal(); |
|---|
| 1178 | | Logger::cout() << "vthis: " << *vthis << '\n'; |
|---|
| | 1186 | if (Logger::enabled()) |
|---|
| | 1187 | Logger::cout() << "vthis: " << *vthis << '\n'; |
|---|
| 1179 | 1188 | |
|---|
| 1180 | 1189 | LLValue* funcval; |
|---|
| … | … | |
| 1184 | 1193 | funcval = DtoLoad(funcval); |
|---|
| 1185 | 1194 | |
|---|
| 1186 | | Logger::cout() << "funcval: " << *funcval << '\n'; |
|---|
| | 1195 | if (Logger::enabled()) |
|---|
| | 1196 | Logger::cout() << "funcval: " << *funcval << '\n'; |
|---|
| 1187 | 1197 | |
|---|
| 1188 | 1198 | #if OPAQUE_VTBLS |
|---|
| 1189 | 1199 | funcval = DtoBitCast(funcval, getPtrToType(DtoType(fdecl->type))); |
|---|
| 1190 | | Logger::cout() << "funcval casted: " << *funcval << '\n'; |
|---|
| | 1200 | if (Logger::enabled()) |
|---|
| | 1201 | Logger::cout() << "funcval casted: " << *funcval << '\n'; |
|---|
| 1191 | 1202 | #endif |
|---|
| 1192 | 1203 | |
|---|
| r585 |
r622 |
|
| 165 | 165 | if (arg->storageClass & STClazy) |
|---|
| 166 | 166 | { |
|---|
| 167 | | Logger::cout() << "for lazy got: " << *paramvec.back() << '\n'; |
|---|
| | 167 | if (Logger::enabled()) |
|---|
| | 168 | Logger::cout() << "for lazy got: " << *paramvec.back() << '\n'; |
|---|
| | 169 | |
|---|
| 168 | 170 | TypeFunction *ltf = new TypeFunction(NULL, arg->type, 0, LINKd); |
|---|
| 169 | 171 | TypeDelegate *ltd = new TypeDelegate(ltf); |
|---|
| 170 | 172 | at = getPtrToType(DtoType(ltd)); |
|---|
| 171 | | Logger::cout() << "lazy updated to: " << *at << '\n'; |
|---|
| | 173 | |
|---|
| | 174 | if (Logger::enabled()) |
|---|
| | 175 | Logger::cout() << "lazy updated to: " << *at << '\n'; |
|---|
| | 176 | |
|---|
| 172 | 177 | paramvec.back() = at; |
|---|
| 173 | 178 | // lazy doesn't need byval as the delegate is not visible to the user |
|---|
| … | … | |
| 290 | 295 | LOG_SCOPE; |
|---|
| 291 | 296 | |
|---|
| | 297 | //printf("resolve function: %s\n", fdecl->toPrettyChars()); |
|---|
| | 298 | |
|---|
| 292 | 299 | if (fdecl->parent) |
|---|
| 293 | 300 | if (TemplateInstance* tinst = fdecl->parent->isTemplateInstance()) |
|---|
| … | … | |
| 391 | 398 | Logger::println("DtoDeclareFunction(%s): %s", fdecl->toPrettyChars(), fdecl->loc.toChars()); |
|---|
| 392 | 399 | LOG_SCOPE; |
|---|
| | 400 | |
|---|
| | 401 | //printf("declare function: %s\n", fdecl->toPrettyChars()); |
|---|
| 393 | 402 | |
|---|
| 394 | 403 | // intrinsic sanity check |
|---|
| … | … | |
| 531 | 540 | assert(func->getLinkage() != llvm::GlobalValue::InternalLinkage); |
|---|
| 532 | 541 | |
|---|
| 533 | | Logger::cout() << "func decl: " << *func << '\n'; |
|---|
| | 542 | if (Logger::enabled()) |
|---|
| | 543 | Logger::cout() << "func decl: " << *func << '\n'; |
|---|
| 534 | 544 | } |
|---|
| 535 | 545 | |
|---|
| r611 |
r622 |
|
| 417 | 417 | void DtoAssign(Loc& loc, DValue* lhs, DValue* rhs) |
|---|
| 418 | 418 | { |
|---|
| 419 | | Logger::cout() << "DtoAssign(...);\n"; |
|---|
| | 419 | Logger::println("DtoAssign(...);\n"); |
|---|
| 420 | 420 | LOG_SCOPE; |
|---|
| 421 | 421 | |
|---|
| … | … | |
| 473 | 473 | LLValue* l = lhs->getLVal(); |
|---|
| 474 | 474 | LLValue* r = rhs->getRVal(); |
|---|
| 475 | | Logger::cout() << "assign\nlhs: " << *l << "rhs: " << *r << '\n'; |
|---|
| | 475 | if (Logger::enabled()) |
|---|
| | 476 | Logger::cout() << "assign\nlhs: " << *l << "rhs: " << *r << '\n'; |
|---|
| 476 | 477 | DtoAggrCopy(l, r); |
|---|
| 477 | 478 | } |
|---|
| … | … | |
| 481 | 482 | LLValue* l = lhs->getLVal(); |
|---|
| 482 | 483 | LLValue* r = rhs->getRVal(); |
|---|
| 483 | | Logger::cout() << "l : " << *l << '\n'; |
|---|
| 484 | | Logger::cout() << "r : " << *r << '\n'; |
|---|
| | 484 | if (Logger::enabled()) |
|---|
| | 485 | { |
|---|
| | 486 | Logger::cout() << "l : " << *l << '\n'; |
|---|
| | 487 | Logger::cout() << "r : " << *r << '\n'; |
|---|
| | 488 | } |
|---|
| 485 | 489 | r = DtoBitCast(r, l->getType()->getContainedType(0)); |
|---|
| 486 | 490 | DtoStore(r, l); |
|---|
| … | … | |
| 500 | 504 | LLValue* l = lhs->getLVal(); |
|---|
| 501 | 505 | LLValue* r = rhs->getRVal(); |
|---|
| 502 | | Logger::cout() << "assign\nlhs: " << *l << "rhs: " << *r << '\n'; |
|---|
| | 506 | if (Logger::enabled()) |
|---|
| | 507 | Logger::cout() << "assign\nlhs: " << *l << "rhs: " << *r << '\n'; |
|---|
| 503 | 508 | const LLType* lit = l->getType()->getContainedType(0); |
|---|
| 504 | 509 | if (r->getType() != lit) { |
|---|
| … | … | |
| 511 | 516 | r = DtoCast(loc, rhs, lhs->getType())->getRVal(); |
|---|
| 512 | 517 | } |
|---|
| 513 | | Logger::cout() << "really assign\nlhs: " << *l << "rhs: " << *r << '\n'; |
|---|
| | 518 | if (Logger::enabled()) |
|---|
| | 519 | Logger::cout() << "really assign\nlhs: " << *l << "rhs: " << *r << '\n'; |
|---|
| 514 | 520 | assert(r->getType() == l->getType()->getContainedType(0)); |
|---|
| 515 | 521 | } |
|---|
| … | … | |
| 585 | 591 | if (to->isintegral()) { |
|---|
| 586 | 592 | if (fromsz < tosz) { |
|---|
| 587 | | Logger::cout() << "cast to: " << *tolltype << '\n'; |
|---|
| | 593 | if (Logger::enabled()) |
|---|
| | 594 | Logger::cout() << "cast to: " << *tolltype << '\n'; |
|---|
| 588 | 595 | if (from->isunsigned() || from->ty == Tbool) { |
|---|
| 589 | 596 | rval = new llvm::ZExtInst(rval, tolltype, "tmp", gIR->scopebb()); |
|---|
| … | … | |
| 611 | 618 | } |
|---|
| 612 | 619 | else if (to->ty == Tpointer) { |
|---|
| 613 | | Logger::cout() << "cast pointer: " << *tolltype << '\n'; |
|---|
| | 620 | if (Logger::enabled()) |
|---|
| | 621 | Logger::cout() << "cast pointer: " << *tolltype << '\n'; |
|---|
| 614 | 622 | rval = gIR->ir->CreateIntToPtr(rval, tolltype, "tmp"); |
|---|
| 615 | 623 | } |
|---|
| … | … | |
| 634 | 642 | if (totype->ty == Tpointer || totype->ty == Tclass) { |
|---|
| 635 | 643 | LLValue* src = val->getRVal(); |
|---|
| 636 | | Logger::cout() << "src: " << *src << "to type: " << *tolltype << '\n'; |
|---|
| | 644 | if (Logger::enabled()) |
|---|
| | 645 | Logger::cout() << "src: " << *src << "to type: " << *tolltype << '\n'; |
|---|
| 637 | 646 | rval = DtoBitCast(src, tolltype); |
|---|
| 638 | 647 | } |
|---|
| … | … | |
| 911 | 920 | //Logger::cout() << "initializer: " << *_init << '\n'; |
|---|
| 912 | 921 | if (_type != _init->getType()) { |
|---|
| 913 | | Logger::cout() << "got type '" << *_init->getType() << "' expected '" << *_type << "'\n"; |
|---|
| | 922 | if (Logger::enabled()) |
|---|
| | 923 | Logger::cout() << "got type '" << *_init->getType() << "' expected '" << *_type << "'\n"; |
|---|
| | 924 | |
|---|
| 914 | 925 | // zero initalizer |
|---|
| 915 | 926 | if (_init->isNullValue()) |
|---|
| … | … | |
| 931 | 942 | } |
|---|
| 932 | 943 | else { |
|---|
| 933 | | Logger::cout() << "Unexpected initializer type: " << *_type << '\n'; |
|---|
| | 944 | if (Logger::enabled()) |
|---|
| | 945 | Logger::cout() << "Unexpected initializer type: " << *_type << '\n'; |
|---|
| 934 | 946 | //assert(0); |
|---|
| 935 | 947 | } |
|---|
| … | … | |
| 951 | 963 | if (!(vd->storage_class & STCextern) && (vd->getModule() == gIR->dmodule || istempl)) |
|---|
| 952 | 964 | { |
|---|
| 953 | | Logger::println("setting initializer"); |
|---|
| 954 | | Logger::cout() << "global: " << *gvar << '\n'; |
|---|
| 955 | | Logger::cout() << "init: " << *_init << '\n'; |
|---|
| | 965 | if (Logger::enabled()) |
|---|
| | 966 | { |
|---|
| | 967 | Logger::println("setting initializer"); |
|---|
| | 968 | Logger::cout() << "global: " << *gvar << '\n'; |
|---|
| | 969 | Logger::cout() << "init: " << *_init << '\n'; |
|---|
| | 970 | } |
|---|
| 956 | 971 | gvar->setInitializer(_init); |
|---|
| 957 | 972 | // do debug info |
|---|
| … | … | |
| 1169 | 1184 | } |
|---|
| 1170 | 1185 | |
|---|
| 1171 | | Logger::cout() << "llvm value for decl: " << *vd->ir.irLocal->value << '\n'; |
|---|
| | 1186 | if (Logger::enabled()) |
|---|
| | 1187 | Logger::cout() << "llvm value for decl: " << *vd->ir.irLocal->value << '\n'; |
|---|
| 1172 | 1188 | DValue* ie = DtoInitializer(vd->ir.irLocal->value, vd->init); |
|---|
| 1173 | 1189 | } |
|---|
| … | … | |
| 1293 | 1309 | if (_type != _init->getType()) |
|---|
| 1294 | 1310 | { |
|---|
| 1295 | | Logger::cout() << "field init is: " << *_init << " type should be " << *_type << '\n'; |
|---|
| | 1311 | if (Logger::enabled()) |
|---|
| | 1312 | Logger::cout() << "field init is: " << *_init << " type should be " << *_type << '\n'; |
|---|
| 1296 | 1313 | if (t->ty == Tsarray) |
|---|
| 1297 | 1314 | { |
|---|
| … | … | |
| 1380 | 1397 | Logger::println("building type %s from expression (%s) of type %s", base->toChars(), exp->toChars(), exp->type->toChars()); |
|---|
| 1381 | 1398 | const LLType* dstTy = DtoType(base); |
|---|
| 1382 | | Logger::cout() << "final llvm type requested: " << *dstTy << '\n'; |
|---|
| | 1399 | if (Logger::enabled()) |
|---|
| | 1400 | Logger::cout() << "final llvm type requested: " << *dstTy << '\n'; |
|---|
| 1383 | 1401 | |
|---|
| 1384 | 1402 | LLConstant* val = exp->toConstElem(gIR); |
|---|
| … | … | |
| 1511 | 1529 | LLValue* val = dval->getRVal(); |
|---|
| 1512 | 1530 | LLValue* zero = LLConstant::getNullValue(val->getType()); |
|---|
| 1513 | | Logger::cout() << "val: " << *val << '\n'; |
|---|
| 1514 | | Logger::cout() << "zero: " << *zero << '\n'; |
|---|
| | 1531 | if (Logger::enabled()) |
|---|
| | 1532 | { |
|---|
| | 1533 | Logger::cout() << "val: " << *val << '\n'; |
|---|
| | 1534 | Logger::cout() << "zero: " << *zero << '\n'; |
|---|
| | 1535 | } |
|---|
| 1515 | 1536 | return gIR->ir->CreateICmpNE(val, zero, "tmp"); |
|---|
| 1516 | 1537 | } |
|---|
| r611 |
r622 |
|
| 80 | 80 | LLValue* v = e->getRVal(); |
|---|
| 81 | 81 | delete e; |
|---|
| 82 | | Logger::cout() << "return value is '" <<*v << "'\n"; |
|---|
| | 82 | |
|---|
| | 83 | if (Logger::enabled()) |
|---|
| | 84 | Logger::cout() << "return value is '" <<*v << "'\n"; |
|---|
| 83 | 85 | |
|---|
| 84 | 86 | // can happen for classes |
|---|
| … | … | |
| 86 | 88 | { |
|---|
| 87 | 89 | v = gIR->ir->CreateBitCast(v, p->topfunc()->getReturnType(), "tmp"); |
|---|
| 88 | | Logger::cout() << "return value after cast: " << *v << '\n'; |
|---|
| | 90 | if (Logger::enabled()) |
|---|
| | 91 | Logger::cout() << "return value after cast: " << *v << '\n'; |
|---|
| 89 | 92 | } |
|---|
| 90 | 93 | |
|---|
| … | … | |
| 166 | 169 | |
|---|
| 167 | 170 | if (cond_val->getType() != LLType::Int1Ty) { |
|---|
| 168 | | Logger::cout() << "if conditional: " << *cond_val << '\n'; |
|---|
| | 171 | if (Logger::enabled()) |
|---|
| | 172 | Logger::cout() << "if conditional: " << *cond_val << '\n'; |
|---|
| 169 | 173 | cond_val = DtoBoolean(loc, cond_e); |
|---|
| 170 | 174 | } |
|---|
| … | … | |
| 678 | 682 | llvm::Function* fn = LLVM_D_GetRuntimeFunction(gIR->module, fname); |
|---|
| 679 | 683 | |
|---|
| 680 | | Logger::cout() << *table->getType() << '\n'; |
|---|
| 681 | | Logger::cout() << *fn->getFunctionType()->getParamType(0) << '\n'; |
|---|
| | 684 | if (Logger::enabled()) |
|---|
| | 685 | { |
|---|
| | 686 | Logger::cout() << *table->getType() << '\n'; |
|---|
| | 687 | Logger::cout() << *fn->getFunctionType()->getParamType(0) << '\n'; |
|---|
| | 688 | } |
|---|
| 682 | 689 | assert(table->getType() == fn->getFunctionType()->getParamType(0)); |
|---|
| 683 | 690 | |
|---|
| r585 |
r622 |
|
| 30 | 30 | |
|---|
| 31 | 31 | const llvm::StructType* structtype = isaStruct(ts->ir.type->get()); |
|---|
| 32 | | Logger::cout() << "llvm struct type: " << *structtype << '\n'; |
|---|
| | 32 | |
|---|
| | 33 | if (Logger::enabled()) |
|---|
| | 34 | Logger::cout() << "llvm struct type: " << *structtype << '\n'; |
|---|
| 33 | 35 | |
|---|
| 34 | 36 | assert(si->value.dim == si->vars.dim); |
|---|
| … | … | |
| 62 | 64 | const LLType* st = getPtrToType(DtoType(sd->type)); |
|---|
| 63 | 65 | |
|---|
| 64 | | Logger::cout() << "ptr = " << *ptr << '\n'; |
|---|
| 65 | | Logger::cout() << "st = " << *st << '\n'; |
|---|
| | 66 | if (Logger::enabled()) |
|---|
| | 67 | { |
|---|
| | 68 | Logger::cout() << "ptr = " << *ptr << '\n'; |
|---|
| | 69 | Logger::cout() << "st = " << *st << '\n'; |
|---|
| | 70 | } |
|---|
| 66 | 71 | |
|---|
| 67 | 72 | if (ptr->getType() != st) { |
|---|
| r585 |
r622 |
|
| 77 | 77 | { |
|---|
| 78 | 78 | LLValue* dg = fn->getRVal(); |
|---|
| 79 | | Logger::cout() << "delegate: " << *dg << '\n'; |
|---|
| | 79 | if (Logger::enabled()) |
|---|
| | 80 | Logger::cout() << "delegate: " << *dg << '\n'; |
|---|
| 80 | 81 | LLValue* funcptr = DtoGEPi(dg, 0, 1); |
|---|
| 81 | 82 | return DtoLoad(funcptr); |
|---|
| … | … | |
| 127 | 128 | } |
|---|
| 128 | 129 | const LLStructType* vtype = LLStructType::get(vtypes); |
|---|
| 129 | | Logger::cout() << "d-variadic argument struct type:\n" << *vtype << '\n'; |
|---|
| | 130 | |
|---|
| | 131 | if (Logger::enabled()) |
|---|
| | 132 | Logger::cout() << "d-variadic argument struct type:\n" << *vtype << '\n'; |
|---|
| | 133 | |
|---|
| 130 | 134 | LLValue* mem = DtoAlloca(vtype,"_argptr_storage"); |
|---|
| 131 | 135 | |
|---|
| … | … | |
| 148 | 152 | llvm::GlobalVariable* typeinfomem = |
|---|
| 149 | 153 | new llvm::GlobalVariable(typeinfoarraytype, true, llvm::GlobalValue::InternalLinkage, NULL, "._arguments.storage", gIR->module); |
|---|
| 150 | | Logger::cout() << "_arguments storage: " << *typeinfomem << '\n'; |
|---|
| | 154 | if (Logger::enabled()) |
|---|
| | 155 | Logger::cout() << "_arguments storage: " << *typeinfomem << '\n'; |
|---|
| 151 | 156 | |
|---|
| 152 | 157 | std::vector<LLConstant*> vtypeinfos; |
|---|
| … | … | |
| 315 | 320 | if (fnarg) // can fnarg ever be null in this block? |
|---|
| 316 | 321 | { |
|---|
| 317 | | Logger::cout() << "arg: " << *arg << '\n'; |
|---|
| 318 | | Logger::cout() << "expects: " << *callableTy->getParamType(j) << '\n'; |
|---|
| | 322 | // if (Logger::enabled()) |
|---|
| | 323 | // { |
|---|
| | 324 | // Logger::cout() << "arg: " << *arg << '\n'; |
|---|
| | 325 | // Logger::cout() << "expects: " << *callableTy->getParamType(j) << '\n'; |
|---|
| | 326 | // } |
|---|
| 319 | 327 | if (arg->getType() != callableTy->getParamType(j)) |
|---|
| 320 | 328 | arg = DtoBitCast(arg, callableTy->getParamType(j)); |
|---|
| r619 |
r622 |
|
| 133 | 133 | if (!vd->ir.isSet() || !vd->ir.getIrValue() || DtoType(vd->type)->isAbstract()) { |
|---|
| 134 | 134 | error("global variable %s not resolved", vd->toChars()); |
|---|
| 135 | | Logger::cout() << "unresolved global had type: " << *DtoType(vd->type) << '\n'; |
|---|
| | 135 | if (Logger::enabled()) |
|---|
| | 136 | Logger::cout() << "unresolved global had type: " << *DtoType(vd->type) << '\n'; |
|---|
| 136 | 137 | fatal(); |
|---|
| 137 | 138 | } |
|---|
| … | … | |
| 223 | 224 | LLConstant* c = llvm::ConstantInt::get(t,(uint64_t)value,!type->isunsigned()); |
|---|
| 224 | 225 | assert(c); |
|---|
| 225 | | Logger::cout() << "value = " << *c << '\n'; |
|---|
| | 226 | if (Logger::enabled()) |
|---|
| | 227 | Logger::cout() << "value = " << *c << '\n'; |
|---|
| 226 | 228 | return c; |
|---|
| 227 | 229 | } |
|---|
| … | … | |
| 354 | 356 | |
|---|
| 355 | 357 | llvm::GlobalValue::LinkageTypes _linkage = llvm::GlobalValue::InternalLinkage;//WeakLinkage; |
|---|
| 356 | | Logger::cout() << "type: " << *at << "\ninit: " << *_init << '\n'; |
|---|
| | 358 | if (Logger::enabled()) |
|---|
| | 359 | Logger::cout() << "type: " << *at << "\ninit: " << *_init << '\n'; |
|---|
| 357 | 360 | llvm::GlobalVariable* gvar = new llvm::GlobalVariable(at,true,_linkage,_init,".stringliteral",gIR->module); |
|---|
| 358 | 361 | |
|---|
| … | … | |
| 589 | 592 | LLValue* lv = l->getRVal(); |
|---|
| 590 | 593 | LLValue* rv = r->getRVal(); |
|---|
| 591 | | Logger::cout() << "lv: " << *lv << " rv: " << *rv << '\n'; |
|---|
| | 594 | if (Logger::enabled()) |
|---|
| | 595 | Logger::cout() << "lv: " << *lv << " rv: " << *rv << '\n'; |
|---|
| 592 | 596 | lv = p->ir->CreatePtrToInt(lv, DtoSize_t(), "tmp"); |
|---|
| 593 | 597 | rv = p->ir->CreatePtrToInt(rv, DtoSize_t(), "tmp"); |
|---|
| … | … | |
| 870 | 874 | Logger::println("is nothing special"); |
|---|
| 871 | 875 | LLValue* lval = v->getLVal(); |
|---|
| 872 | | Logger::cout() << "lval: " << *lval << '\n'; |
|---|
| | 876 | if (Logger::enabled()) |
|---|
| | 877 | Logger::cout() << "lval: " << *lval << '\n'; |
|---|
| 873 | 878 | return new DImValue(type, DtoBitCast(v->getLVal(), DtoType(type))); |
|---|
| 874 | 879 | } |
|---|
| … | … | |
| 1010 | 1015 | LLValue* zero = llvm::ConstantInt::get(LLType::Int32Ty, 0, false); |
|---|
| 1011 | 1016 | LLValue* vtblidx = llvm::ConstantInt::get(LLType::Int32Ty, (size_t)fdecl->vtblIndex, false); |
|---|
| 1012 | | Logger::cout() << "vthis: " << *vthis << '\n'; |
|---|
| | 1017 | if (Logger::enabled()) |
|---|
| | 1018 | Logger::cout() << "vthis: " << *vthis << '\n'; |
|---|
| 1013 | 1019 | funcval = DtoGEP(vthis, zero, zero); |
|---|
| 1014 | 1020 | funcval = DtoLoad(funcval); |
|---|
| … | … | |
| 1017 | 1023 | #if OPAQUE_VTBLS |
|---|
| 1018 | 1024 | funcval = DtoBitCast(funcval, getPtrToType(DtoType(fdecl->type))); |
|---|
| 1019 | | Logger::cout() << "funcval casted: " << *funcval << '\n'; |
|---|
| | 1025 | if (Logger::enabled()) |
|---|
| | 1026 | Logger::cout() << "funcval casted: " << *funcval << '\n'; |
|---|
| 1020 | 1027 | #endif |
|---|
| 1021 | 1028 | } |
|---|
| … | … | |
| 1249 | 1256 | LLValue* a = l->getRVal(); |
|---|
| 1250 | 1257 | LLValue* b = r->getRVal(); |
|---|
| 1251 | | Logger::cout() << "type 1: " << *a << '\n'; |
|---|
| 1252 | | Logger::cout() << "type 2: " << *b << '\n'; |
|---|
| | 1258 | if (Logger::enabled()) |
|---|
| | 1259 | { |
|---|
| | 1260 | Logger::cout() << "type 1: " << *a << '\n'; |
|---|
| | 1261 | Logger::cout() << "type 2: " << *b << '\n'; |
|---|
| | 1262 | } |
|---|
| 1253 | 1263 | if (a->getType() != b->getType()) |
|---|
| 1254 | 1264 | b = DtoBitCast(b, a->getType()); |
|---|
| … | … | |
| 1872 | 1882 | } |
|---|
| 1873 | 1883 | |
|---|
| 1874 | | Logger::cout() << "context = " << *uval << '\n'; |
|---|
| | 1884 | if (Logger::enabled()) |
|---|
| | 1885 | Logger::cout() << "context = " << *uval << '\n'; |
|---|
| 1875 | 1886 | |
|---|
| 1876 | 1887 | LLValue* context = DtoGEPi(lval,0,0); |
|---|
| … | … | |
| 2161 | 2172 | // llvm target type |
|---|
| 2162 | 2173 | const LLType* llType = DtoType(arrayType); |
|---|
| 2163 | | Logger::cout() << (dyn?"dynamic":"static") << " array literal with length " << len << " of D type: '" << arrayType->toChars() << "' has llvm type: '" << *llType << "'\n"; |
|---|
| | 2174 | if (Logger::enabled()) |
|---|
| | 2175 | Logger::cout() << (dyn?"dynamic":"static") << " array literal with length " << len << " of D type: '" << arrayType->toChars() << "' has llvm type: '" << *llType << "'\n"; |
|---|
| 2164 | 2176 | |
|---|
| 2165 | 2177 | // llvm storage type |
|---|
| 2166 | 2178 | const LLType* llElemType = DtoTypeNotVoid(elemType); |
|---|
| 2167 | 2179 | const LLType* llStoType = LLArrayType::get(llElemType, len); |
|---|
| 2168 | | Logger::cout() << "llvm storage type: '" << *llStoType << "'\n"; |
|---|
| | 2180 | if (Logger::enabled()) |
|---|
| | 2181 | Logger::cout() << "llvm storage type: '" << *llStoType << "'\n"; |
|---|
| 2169 | 2182 | |
|---|
| 2170 | 2183 | // don't allocate storage for zero length dynamic array literals |
|---|
| … | … | |
| 2286 | 2299 | if (t != llt) { |
|---|
| 2287 | 2300 | if (getABITypeSize(t) != getABITypeSize(llt)) { |
|---|
| 2288 | | Logger::cout() << "got size " << getABITypeSize(t) << ", expected " << getABITypeSize(llt) << '\n'; |
|---|
| | 2301 | if (Logger::enabled()) |
|---|
| | 2302 | Logger::cout() << "got size " << getABITypeSize(t) << ", expected " << getABITypeSize(llt) << '\n'; |
|---|
| 2289 | 2303 | assert(0 && "type size mismatch"); |
|---|
| 2290 | 2304 | } |
|---|
| 2291 | 2305 | sptr = DtoBitCast(sptr, getPtrToType(t)); |
|---|
| 2292 | | Logger::cout() << "sptr type is now: " << *t << '\n'; |
|---|
| | 2306 | if (Logger::enabled()) |
|---|
| | 2307 | Logger::cout() << "sptr type is now: " << *t << '\n'; |
|---|
| 2293 | 2308 | } |
|---|
| 2294 | 2309 | } |
|---|
| … | … | |
| 2301 | 2316 | if (!vx) continue; |
|---|
| 2302 | 2317 | |
|---|
| 2303 | | Logger::cout() << "getting index " << j << " of " << *sptr << '\n'; |
|---|
| | 2318 | if (Logger::enabled()) |
|---|
| | 2319 | Logger::cout() << "getting index " << j << " of " << *sptr << '\n'; |
|---|
| 2304 | 2320 | LLValue* arrptr = DtoGEPi(sptr,0,j); |
|---|
| 2305 | 2321 | DValue* darrptr = new DVarValue(vx->type, arrptr); |
|---|
| r618 |
r622 |
|
| 320 | 320 | else |
|---|
| 321 | 321 | { |
|---|
| 322 | | Logger::cout() << *ptrTy << '|' << *valTy << '\n'; |
|---|
| | 322 | if (Logger::enabled()) |
|---|
| | 323 | Logger::cout() << *ptrTy << '|' << *valTy << '\n'; |
|---|
| 323 | 324 | assert(0); |
|---|
| 324 | 325 | } |
|---|
| r605 |
r622 |
|
| 62 | 62 | } |
|---|
| 63 | 63 | |
|---|
| 64 | | Logger::cout() << "Generating module: " << (md ? md->toChars() : toChars()) << '\n'; |
|---|
| | 64 | Logger::println("Generating module: %s\n", (md ? md->toChars() : toChars())); |
|---|
| 65 | 65 | LOG_SCOPE; |
|---|
| 66 | 66 | |
|---|
| 67 | | //printf("codegen: %s\n", srcfile->toChars()); |
|---|
| | 67 | printf("codegen: %s\n", srcfile->toChars()); |
|---|
| 68 | 68 | |
|---|
| 69 | 69 | // start by deleting the old object file |
|---|
| … | … | |
| 653 | 653 | this->ir.irGlobal->value = gvar; |
|---|
| 654 | 654 | |
|---|
| 655 | | Logger::cout() << *gvar << '\n'; |
|---|
| | 655 | if (Logger::enabled()) |
|---|
| | 656 | Logger::cout() << *gvar << '\n'; |
|---|
| 656 | 657 | |
|---|
| 657 | 658 | if (static_local) |
|---|
| r522 |
r622 |
|
| 370 | 370 | |
|---|
| 371 | 371 | const LLStructType* stype = isaStruct(base->type->ir.type->get()); |
|---|
| 372 | | Logger::cout() << "got stype: " << *stype << '\n'; |
|---|
| | 372 | if (Logger::enabled()) |
|---|
| | 373 | Logger::cout() << "got stype: " << *stype << '\n'; |
|---|
| 373 | 374 | |
|---|
| 374 | 375 | // vtbl |
|---|