Changes in directory llvm/tools/lto:
lto.cpp updated: 1.23 -> 1.24 --- Log message: Supply alignment info to linker through LLVMSymbol. --- Diffs of the changes: (+12 -6) lto.cpp | 18 ++++++++++++------ 1 files changed, 12 insertions(+), 6 deletions(-) Index: llvm/tools/lto/lto.cpp diff -u llvm/tools/lto/lto.cpp:1.23 llvm/tools/lto/lto.cpp:1.24 --- llvm/tools/lto/lto.cpp:1.23 Tue Oct 24 13:41:02 2006 +++ llvm/tools/lto/lto.cpp Wed Oct 25 13:10:07 2006 @@ -36,6 +36,7 @@ #include "llvm/Transforms/IPO.h" #include "llvm/Transforms/Scalar.h" #include "llvm/Analysis/LoadValueNumbering.h" +#include "llvm/Support/MathExtras.h" #include "llvm/LinkTimeOptimizer.h" #include <fstream> #include <iostream> @@ -149,8 +150,7 @@ return LTO_READ_FAILURE; // Collect Target info - if (!Target) - getTarget(m); + getTarget(m); if (!Target) return LTO_READ_FAILURE; @@ -166,8 +166,10 @@ if (!f->isExternal() && lt != LTOInternalLinkage && strncmp (f->getName().c_str(), "llvm.", 5)) { + int alignment = ( 16 > f->getAlignment() ? 16 : f->getAlignment()); LLVMSymbol *newSymbol = new LLVMSymbol(lt, f, f->getName(), - mangler.getValueName(f)); + mangler.getValueName(f), + Log2_32(alignment)); symbols[newSymbol->getMangledName()] = newSymbol; allSymbols[newSymbol->getMangledName()] = newSymbol; } @@ -186,8 +188,10 @@ LTOLinkageTypes lt = getLTOLinkageType(v); if (!v->isExternal() && lt != LTOInternalLinkage && strncmp (v->getName().c_str(), "llvm.", 5)) { + const TargetData *TD = Target->getTargetData(); LLVMSymbol *newSymbol = new LLVMSymbol(lt, v, v->getName(), - mangler.getValueName(v)); + mangler.getValueName(v), + TD->getPreferredAlignmentLog(v)); symbols[newSymbol->getMangledName()] = newSymbol; allSymbols[newSymbol->getMangledName()] = newSymbol; @@ -206,6 +210,9 @@ void LTO::getTarget (Module *M) { + if (Target) + return; + std::string Err; const TargetMachineRegistry::Entry* March = TargetMachineRegistry::getClosestStaticTargetForModule(*M, Err); @@ -230,8 +237,7 @@ PassManager Passes; // Collect Target info - if (!Target) - getTarget(M); + getTarget(M); if (!Target) return LTO_NO_TARGET; _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits