Mercurial > projects > ldc
comparison gen/toir.cpp @ 918:a4fcc13da3cd
Changed templates and typeinfo to use linkonce linkage instead of weak linkage, this should fix inlining problems, fixing bug #197 . If problems show up, it's easy to change it back by changing the define in mars.h . I'm 95% sure this is safe, given how we handle templates.
author | Tomas Lindquist Olsen <tomas.l.olsen@gmail.com> |
---|---|
date | Mon, 02 Feb 2009 01:44:51 +0100 |
parents | a69941a2c470 |
children | 545f54041d91 |
comparison
equal
deleted
inserted
replaced
917:7e272f2b4fc3 | 918:a4fcc13da3cd |
---|---|
389 _init = llvm::ConstantArray::get(at,vals); | 389 _init = llvm::ConstantArray::get(at,vals); |
390 } | 390 } |
391 else | 391 else |
392 assert(0); | 392 assert(0); |
393 | 393 |
394 llvm::GlobalValue::LinkageTypes _linkage = llvm::GlobalValue::InternalLinkage;//WeakLinkage; | 394 llvm::GlobalValue::LinkageTypes _linkage = llvm::GlobalValue::InternalLinkage; |
395 if (Logger::enabled()) | 395 if (Logger::enabled()) |
396 Logger::cout() << "type: " << *at << "\ninit: " << *_init << '\n'; | 396 Logger::cout() << "type: " << *at << "\ninit: " << *_init << '\n'; |
397 llvm::GlobalVariable* gvar = new llvm::GlobalVariable(at,true,_linkage,_init,".str",gIR->module); | 397 llvm::GlobalVariable* gvar = new llvm::GlobalVariable(at,true,_linkage,_init,".str",gIR->module); |
398 | 398 |
399 llvm::ConstantInt* zero = llvm::ConstantInt::get(LLType::Int32Ty, 0, false); | 399 llvm::ConstantInt* zero = llvm::ConstantInt::get(LLType::Int32Ty, 0, false); |
465 if (t->ty == Tsarray) | 465 if (t->ty == Tsarray) |
466 { | 466 { |
467 return _init; | 467 return _init; |
468 } | 468 } |
469 | 469 |
470 llvm::GlobalValue::LinkageTypes _linkage = llvm::GlobalValue::InternalLinkage;//WeakLinkage; | 470 llvm::GlobalValue::LinkageTypes _linkage = llvm::GlobalValue::InternalLinkage; |
471 llvm::GlobalVariable* gvar = new llvm::GlobalVariable(_init->getType(),true,_linkage,_init,".str",gIR->module); | 471 llvm::GlobalVariable* gvar = new llvm::GlobalVariable(_init->getType(),true,_linkage,_init,".str",gIR->module); |
472 | 472 |
473 llvm::ConstantInt* zero = llvm::ConstantInt::get(LLType::Int32Ty, 0, false); | 473 llvm::ConstantInt* zero = llvm::ConstantInt::get(LLType::Int32Ty, 0, false); |
474 LLConstant* idxs[2] = { zero, zero }; | 474 LLConstant* idxs[2] = { zero, zero }; |
475 LLConstant* arrptr = llvm::ConstantExpr::getGetElementPtr(gvar,idxs,2); | 475 LLConstant* arrptr = llvm::ConstantExpr::getGetElementPtr(gvar,idxs,2); |