[llvm-commits] CVS: llvm/lib/Transforms/Utils/LowerInvoke.cpp
Changes in directory llvm/lib/Transforms/Utils: LowerInvoke.cpp updated: 1.40 - 1.41 --- Log message: Fix Duraid's changes to work when TLI is null. This fixes the failing lowerinvoke regtests. --- Diffs of the changes: (+7 -3) LowerInvoke.cpp | 10 +++--- 1 files changed, 7 insertions(+), 3 deletions(-) Index: llvm/lib/Transforms/Utils/LowerInvoke.cpp diff -u llvm/lib/Transforms/Utils/LowerInvoke.cpp:1.40 llvm/lib/Transforms/Utils/LowerInvoke.cpp:1.41 --- llvm/lib/Transforms/Utils/LowerInvoke.cpp:1.40 Mon Sep 4 01:21:35 2006 +++ llvm/lib/Transforms/Utils/LowerInvoke.cpp Tue Sep 5 12:48:07 2006 @@ -113,7 +113,9 @@ AbortMessage = 0; if (ExpensiveEHSupport) { // Insert a type for the linked list of jump buffers. -const Type *JmpBufTy = ArrayType::get(VoidPtrTy, TLI-getJumpBufSize()); +unsigned JBSize = TLI ? TLI-getJumpBufSize() : 0; +JBSize = JBSize ? JBSize : 200; +const Type *JmpBufTy = ArrayType::get(VoidPtrTy, JBSize); { // The type is recursive, so use a type holder. std::vectorconst Type* Elements; @@ -130,11 +132,12 @@ // Now that we've done that, insert the jmpbuf list head global, unless it // already exists. -if (!(JBListHead = M.getGlobalVariable(llvm.sjljeh.jblist, PtrJBList))) +if (!(JBListHead = M.getGlobalVariable(llvm.sjljeh.jblist, PtrJBList))) { JBListHead = new GlobalVariable(PtrJBList, false, GlobalValue::LinkOnceLinkage, Constant::getNullValue(PtrJBList), llvm.sjljeh.jblist, M); +} SetJmpFn = M.getOrInsertFunction(llvm.setjmp, Type::IntTy, PointerType::get(JmpBufTy), (Type *)0); LongJmpFn = M.getOrInsertFunction(llvm.longjmp, Type::VoidTy, @@ -452,8 +455,9 @@ // Create an alloca for the incoming jump buffer ptr and the new jump buffer // that needs to be restored on all exits from the function. This is an // alloca because the value needs to be live across invokes. +unsigned Align = TLI ? TLI-getJumpBufAlignment() : 0; AllocaInst *JmpBuf = - new AllocaInst(JBLinkTy, 0, TLI-getJumpBufAlignment(), jblink, F.begin()-begin()); + new AllocaInst(JBLinkTy, 0, Align, jblink, F.begin()-begin()); std::vectorValue* Idx; Idx.push_back(Constant::getNullValue(Type::IntTy)); ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/include/llvm/CodeGen/MachineInstr.h
Changes in directory llvm/include/llvm/CodeGen: MachineInstr.h updated: 1.185 - 1.186 --- Log message: Initialize IsDef of all non-register MachineOperand to false. --- Diffs of the changes: (+7 -0) MachineInstr.h |7 +++ 1 files changed, 7 insertions(+) Index: llvm/include/llvm/CodeGen/MachineInstr.h diff -u llvm/include/llvm/CodeGen/MachineInstr.h:1.185 llvm/include/llvm/CodeGen/MachineInstr.h:1.186 --- llvm/include/llvm/CodeGen/MachineInstr.h:1.185 Mon Sep 4 21:31:13 2006 +++ llvm/include/llvm/CodeGen/MachineInstr.hTue Sep 5 13:56:02 2006 @@ -295,6 +295,7 @@ void addImmOperand(int64_t Val) { MachineOperand Op = AddNewOperand(); Op.opType = MachineOperand::MO_Immediate; +Op.IsDef = false; Op.contents.immedVal = Val; Op.offset = 0; } @@ -302,6 +303,7 @@ void addMachineBasicBlockOperand(MachineBasicBlock *MBB) { MachineOperand Op = AddNewOperand(); Op.opType = MachineOperand::MO_MachineBasicBlock; +Op.IsDef = false; Op.contents.MBB = MBB; Op.offset = 0; } @@ -311,6 +313,7 @@ void addFrameIndexOperand(unsigned Idx) { MachineOperand Op = AddNewOperand(); Op.opType = MachineOperand::MO_FrameIndex; +Op.IsDef = false; Op.contents.immedVal = Idx; Op.offset = 0; } @@ -321,6 +324,7 @@ void addConstantPoolIndexOperand(unsigned Idx, int Offset) { MachineOperand Op = AddNewOperand(); Op.opType = MachineOperand::MO_ConstantPoolIndex; +Op.IsDef = false; Op.contents.immedVal = Idx; Op.offset = Offset; } @@ -331,6 +335,7 @@ void addJumpTableIndexOperand(unsigned Idx) { MachineOperand Op = AddNewOperand(); Op.opType = MachineOperand::MO_JumpTableIndex; +Op.IsDef = false; Op.contents.immedVal = Idx; Op.offset = 0; } @@ -338,6 +343,7 @@ void addGlobalAddressOperand(GlobalValue *GV, int Offset) { MachineOperand Op = AddNewOperand(); Op.opType = MachineOperand::MO_GlobalAddress; +Op.IsDef = false; Op.contents.GV = GV; Op.offset = Offset; } @@ -347,6 +353,7 @@ void addExternalSymbolOperand(const char *SymName) { MachineOperand Op = AddNewOperand(); Op.opType = MachineOperand::MO_ExternalSymbol; +Op.IsDef = false; Op.contents.SymbolName = SymName; Op.offset = 0; } ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/CodeGen/LiveVariables.cpp MachineInstr.cpp
Changes in directory llvm/lib/CodeGen: LiveVariables.cpp updated: 1.58 - 1.59 MachineInstr.cpp updated: 1.124 - 1.125 --- Log message: Only call isUse/isDef on register operands --- Diffs of the changes: (+7 -13) LiveVariables.cpp |4 ++-- MachineInstr.cpp | 16 +--- 2 files changed, 7 insertions(+), 13 deletions(-) Index: llvm/lib/CodeGen/LiveVariables.cpp diff -u llvm/lib/CodeGen/LiveVariables.cpp:1.58 llvm/lib/CodeGen/LiveVariables.cpp:1.59 --- llvm/lib/CodeGen/LiveVariables.cpp:1.58 Sat Sep 2 19:05:09 2006 +++ llvm/lib/CodeGen/LiveVariables.cpp Tue Sep 5 15:19:27 2006 @@ -248,7 +248,7 @@ // Process all explicit uses... for (unsigned i = 0; i != NumOperandsToProcess; ++i) { MachineOperand MO = MI-getOperand(i); -if (MO.isUse() MO.isRegister() MO.getReg()) { +if (MO.isRegister() MO.isUse() MO.getReg()) { if (MRegisterInfo::isVirtualRegister(MO.getReg())){ HandleVirtRegUse(getVarInfo(MO.getReg()), MBB, MI); } else if (MRegisterInfo::isPhysicalRegister(MO.getReg()) @@ -268,7 +268,7 @@ // Process all explicit defs... for (unsigned i = 0; i != NumOperandsToProcess; ++i) { MachineOperand MO = MI-getOperand(i); -if (MO.isDef() MO.isRegister() MO.getReg()) { +if (MO.isRegister() MO.isDef() MO.getReg()) { if (MRegisterInfo::isVirtualRegister(MO.getReg())) { VarInfo VRInfo = getVarInfo(MO.getReg()); Index: llvm/lib/CodeGen/MachineInstr.cpp diff -u llvm/lib/CodeGen/MachineInstr.cpp:1.124 llvm/lib/CodeGen/MachineInstr.cpp:1.125 --- llvm/lib/CodeGen/MachineInstr.cpp:1.124 Thu Jun 15 02:22:16 2006 +++ llvm/lib/CodeGen/MachineInstr.cpp Tue Sep 5 15:19:27 2006 @@ -158,7 +158,7 @@ unsigned StartOp = 0; // Specialize printing if op#0 is definition - if (getNumOperands() getOperand(0).isDef() !getOperand(0).isUse()) { + if (getNumOperands() getOperand(0).isReg() getOperand(0).isDef()) { ::print(getOperand(0), OS, TM); OS = ; ++StartOp; // Don't print this operand again! @@ -176,11 +176,8 @@ OS ; ::print(mop, OS, TM); -if (mop.isDef()) - if (mop.isUse()) -OS defuse; - else -OS def; +if (mop.isReg() mop.isDef()) + OS def; } OS \n; @@ -204,11 +201,8 @@ for (unsigned i = 0, N = MI.getNumOperands(); i N; i++) { os \t MI.getOperand(i); -if (MI.getOperand(i).isDef()) - if (MI.getOperand(i).isUse()) -os du; - else -os d; +if (MI.getOperand(i).isReg() MI.getOperand(i).isDef()) + os d; } return os \n; ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/include/llvm/CodeGen/MachineInstr.h
Changes in directory llvm/include/llvm/CodeGen: MachineInstr.h updated: 1.186 - 1.187 --- Log message: IsDef can only be accessed / set if operand is a register. --- Diffs of the changes: (+16 -11) MachineInstr.h | 27 --- 1 files changed, 16 insertions(+), 11 deletions(-) Index: llvm/include/llvm/CodeGen/MachineInstr.h diff -u llvm/include/llvm/CodeGen/MachineInstr.h:1.186 llvm/include/llvm/CodeGen/MachineInstr.h:1.187 --- llvm/include/llvm/CodeGen/MachineInstr.h:1.186 Tue Sep 5 13:56:02 2006 +++ llvm/include/llvm/CodeGen/MachineInstr.hTue Sep 5 15:20:04 2006 @@ -143,10 +143,22 @@ return contents.SymbolName; } - bool isUse() const { return !IsDef; } - bool isDef() const { return IsDef; } - void setIsUse() { IsDef = false; } - void setIsDef() { IsDef = true; } + bool isUse() const { +assert(isRegister() Wrong MachineOperand accessor); +return !IsDef; + } + bool isDef() const { +assert(isRegister() Wrong MachineOperand accessor); +return IsDef; + } + void setIsUse() { +assert(isRegister() Wrong MachineOperand accessor); +IsDef = false; + } + void setIsDef() { +assert(isRegister() Wrong MachineOperand accessor); +IsDef = true; + } /// getReg - Returns the register number. /// @@ -295,7 +307,6 @@ void addImmOperand(int64_t Val) { MachineOperand Op = AddNewOperand(); Op.opType = MachineOperand::MO_Immediate; -Op.IsDef = false; Op.contents.immedVal = Val; Op.offset = 0; } @@ -303,7 +314,6 @@ void addMachineBasicBlockOperand(MachineBasicBlock *MBB) { MachineOperand Op = AddNewOperand(); Op.opType = MachineOperand::MO_MachineBasicBlock; -Op.IsDef = false; Op.contents.MBB = MBB; Op.offset = 0; } @@ -313,7 +323,6 @@ void addFrameIndexOperand(unsigned Idx) { MachineOperand Op = AddNewOperand(); Op.opType = MachineOperand::MO_FrameIndex; -Op.IsDef = false; Op.contents.immedVal = Idx; Op.offset = 0; } @@ -324,7 +333,6 @@ void addConstantPoolIndexOperand(unsigned Idx, int Offset) { MachineOperand Op = AddNewOperand(); Op.opType = MachineOperand::MO_ConstantPoolIndex; -Op.IsDef = false; Op.contents.immedVal = Idx; Op.offset = Offset; } @@ -335,7 +343,6 @@ void addJumpTableIndexOperand(unsigned Idx) { MachineOperand Op = AddNewOperand(); Op.opType = MachineOperand::MO_JumpTableIndex; -Op.IsDef = false; Op.contents.immedVal = Idx; Op.offset = 0; } @@ -343,7 +350,6 @@ void addGlobalAddressOperand(GlobalValue *GV, int Offset) { MachineOperand Op = AddNewOperand(); Op.opType = MachineOperand::MO_GlobalAddress; -Op.IsDef = false; Op.contents.GV = GV; Op.offset = Offset; } @@ -353,7 +359,6 @@ void addExternalSymbolOperand(const char *SymName) { MachineOperand Op = AddNewOperand(); Op.opType = MachineOperand::MO_ExternalSymbol; -Op.IsDef = false; Op.contents.SymbolName = SymName; Op.offset = 0; } ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/Target/X86/X86FloatingPoint.cpp
Changes in directory llvm/lib/Target/X86: X86FloatingPoint.cpp updated: 1.53 - 1.54 --- Log message: Bugfix to work with the two-addr changes that have been made in the tree recently --- Diffs of the changes: (+2 -1) X86FloatingPoint.cpp |3 ++- 1 files changed, 2 insertions(+), 1 deletion(-) Index: llvm/lib/Target/X86/X86FloatingPoint.cpp diff -u llvm/lib/Target/X86/X86FloatingPoint.cpp:1.53 llvm/lib/Target/X86/X86FloatingPoint.cpp:1.54 --- llvm/lib/Target/X86/X86FloatingPoint.cpp:1.53 Sun Aug 27 07:54:01 2006 +++ llvm/lib/Target/X86/X86FloatingPoint.cppTue Sep 5 15:27:32 2006 @@ -752,7 +752,7 @@ MachineInstr *MI = I; unsigned Op0 = getFPReg(MI-getOperand(0)); - unsigned Op1 = getFPReg(MI-getOperand(1)); + unsigned Op1 = getFPReg(MI-getOperand(2)); // The first operand *must* be on the top of the stack. moveToTop(Op0, I); @@ -760,6 +760,7 @@ // Change the second operand to the stack register that the operand is in. // Change from the pseudo instruction to the concrete instruction. MI-RemoveOperand(0); + MI-RemoveOperand(1); MI-getOperand(0).setReg(getSTReg(Op1)); MI-setOpcode(getConcreteOpcode(MI-getOpcode())); ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/test/Regression/CodeGen/X86/select.ll
Changes in directory llvm/test/Regression/CodeGen/X86: select.ll updated: 1.3 - 1.4 --- Log message: make this harder --- Diffs of the changes: (+2 -1) select.ll |3 ++- 1 files changed, 2 insertions(+), 1 deletion(-) Index: llvm/test/Regression/CodeGen/X86/select.ll diff -u llvm/test/Regression/CodeGen/X86/select.ll:1.3 llvm/test/Regression/CodeGen/X86/select.ll:1.4 --- llvm/test/Regression/CodeGen/X86/select.ll:1.3 Wed Mar 31 21:47:56 2004 +++ llvm/test/Regression/CodeGen/X86/select.ll Tue Sep 5 15:27:06 2006 @@ -1,4 +1,5 @@ -; RUN: llvm-as %s | llc -march=x86 +; RUN: llvm-as %s | llc -march=x86 -mcpu=yonah +; RUN: llvm-as %s | llc -march=x86 -mcpu=pentium bool %boolSel(bool %A, bool %B, bool %C) { %X = select bool %A, bool %B, bool %C ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/CodeGen/RegAllocLocal.cpp
Changes in directory llvm/lib/CodeGen: RegAllocLocal.cpp updated: 1.88 - 1.89 --- Log message: Only call isUse/isDef on register operands --- Diffs of the changes: (+3 -3) RegAllocLocal.cpp |6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) Index: llvm/lib/CodeGen/RegAllocLocal.cpp diff -u llvm/lib/CodeGen/RegAllocLocal.cpp:1.88 llvm/lib/CodeGen/RegAllocLocal.cpp:1.89 --- llvm/lib/CodeGen/RegAllocLocal.cpp:1.88 Sun Sep 3 02:15:37 2006 +++ llvm/lib/CodeGen/RegAllocLocal.cpp Tue Sep 5 15:32:06 2006 @@ -552,7 +552,7 @@ for (unsigned i = 0; i != MI-getNumOperands(); ++i) { MachineOperand MO = MI-getOperand(i); // here we are looking for only used operands (never defuse) - if (!MO.isDef() MO.isRegister() MO.getReg() + if (MO.isRegister() !MO.isDef() MO.getReg() MRegisterInfo::isVirtualRegister(MO.getReg())) MI = reloadVirtReg(MBB, MI, i); } @@ -584,7 +584,7 @@ // are defined, and marking explicit destinations in the PhysRegsUsed map. for (unsigned i = 0, e = MI-getNumOperands(); i != e; ++i) { MachineOperand MO = MI-getOperand(i); - if (MO.isDef() MO.isRegister() MO.getReg() + if (MO.isRegister() MO.isDef() MO.getReg() MRegisterInfo::isPhysicalRegister(MO.getReg())) { unsigned Reg = MO.getReg(); PhysRegsEverUsed[Reg] = true; @@ -626,7 +626,7 @@ // for (unsigned i = 0, e = MI-getNumOperands(); i != e; ++i) { MachineOperand MO = MI-getOperand(i); - if (MO.isDef() MO.isRegister() MO.getReg() + if (MO.isRegister() MO.isDef() MO.getReg() MRegisterInfo::isVirtualRegister(MO.getReg())) { unsigned DestVirtReg = MO.getReg(); unsigned DestPhysReg; ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/tools/lto/lto.cpp
Changes in directory llvm/tools/lto: lto.cpp updated: 1.8 - 1.9 --- Log message: Extract target triplet from optimized module. Untabify. --- Diffs of the changes: (+4 -1) lto.cpp |5 - 1 files changed, 4 insertions(+), 1 deletion(-) Index: llvm/tools/lto/lto.cpp diff -u llvm/tools/lto/lto.cpp:1.8 llvm/tools/lto/lto.cpp:1.9 --- llvm/tools/lto/lto.cpp:1.8 Wed Aug 23 11:59:25 2006 +++ llvm/tools/lto/lto.cpp Tue Sep 5 19:28:22 2006 @@ -266,7 +266,8 @@ /// Return appropriate LTOStatus. enum LTOStatus LinkTimeOptimizer::optimizeModules(const std::string OutputFilename, - std::vectorconst char * exportList) + std::vectorconst char * exportList, + std::string targetTriple) { if (modules.empty()) return LTO_NO_WORK; @@ -316,6 +317,8 @@ return status; } + targetTriple = bigOne-getTargetTriple(); + // Run GCC to assemble and link the program into native code. // // Note: ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/include/llvm/LinkTimeOptimizer.h
Changes in directory llvm/include/llvm: LinkTimeOptimizer.h updated: 1.4 - 1.5 --- Log message: Extract target triplet from optimized module. Untabify. --- Diffs of the changes: (+7 -6) LinkTimeOptimizer.h | 13 +++-- 1 files changed, 7 insertions(+), 6 deletions(-) Index: llvm/include/llvm/LinkTimeOptimizer.h diff -u llvm/include/llvm/LinkTimeOptimizer.h:1.4 llvm/include/llvm/LinkTimeOptimizer.h:1.5 --- llvm/include/llvm/LinkTimeOptimizer.h:1.4 Mon Aug 14 18:27:36 2006 +++ llvm/include/llvm/LinkTimeOptimizer.h Tue Sep 5 19:28:22 2006 @@ -56,8 +56,8 @@ void mayBeNotUsed(); LLVMSymbol (enum LTOLinkageTypes lt, GlobalValue *g, const std::string n, - const std::string m) : linkage(lt), gv(g), name(n), - mangledName(m) {} +const std::string m) : linkage(lt), gv(g), name(n), +mangledName(m) {} const char *getName() { return name.c_str(); } const char *getMangledName() { return mangledName.c_str(); } @@ -82,13 +82,14 @@ public: typedef hash_mapconst char*, LLVMSymbol*, hashconst char*, -string_compare NameToSymbolMap; + string_compare NameToSymbolMap; enum LTOStatus readLLVMObjectFile(const std::string InputFilename, - NameToSymbolMap symbols, - std::setstd::string references); + NameToSymbolMap symbols, + std::setstd::string references); enum LTOStatus optimizeModules(const std::string OutputFilename, - std::vectorconst char* exportList); + std::vectorconst char* exportList, + std::string targetTriple); private: std::vectorModule * modules; ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/tools/lto/lto.cpp
Changes in directory llvm/tools/lto: lto.cpp updated: 1.9 - 1.10 --- Log message: Instead of demangling symbol name by hand, use original name, which was used to mangle symbol name, directly. --- Diffs of the changes: (+4 -2) lto.cpp |6 -- 1 files changed, 4 insertions(+), 2 deletions(-) Index: llvm/tools/lto/lto.cpp diff -u llvm/tools/lto/lto.cpp:1.9 llvm/tools/lto/lto.cpp:1.10 --- llvm/tools/lto/lto.cpp:1.9 Tue Sep 5 19:28:22 2006 +++ llvm/tools/lto/lto.cpp Tue Sep 5 19:45:52 2006 @@ -147,6 +147,7 @@ LLVMSymbol *newSymbol = new LLVMSymbol(lt, v, v-getName(), mangler.getValueName(v)); symbols[newSymbol-getMangledName()] = newSymbol; + allSymbols[newSymbol-getMangledName()] = newSymbol; for (unsigned count = 0, total = v-getNumOperands(); count != total; ++count) @@ -291,8 +292,9 @@ // seen by linker. for (unsigned i = 0, e = exportList.size(); i != e; ++i) { const char *name = exportList[i]; -if (strlen(name) 2 name[0] == '_') - exportList[i] = name[1]; +NameToSymbolMap::iterator itr = allSymbols.find(name); +if (itr != allSymbols.end()) + exportList[i] = allSymbols[name]-getName(); } sys::Path tmpAsmFilePath(/tmp/); ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits