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);