[llvm-commits] [release_18] CVS: llvm/docs/GettingStarted.html
Changes in directory llvm/docs: GettingStarted.html updated: 1.136.2.4 -> 1.136.2.5 --- Log message: Remove another merge conflict marker. --- Diffs of the changes: (+1 -5) GettingStarted.html |6 +- 1 files changed, 1 insertion(+), 5 deletions(-) Index: llvm/docs/GettingStarted.html diff -u llvm/docs/GettingStarted.html:1.136.2.4 llvm/docs/GettingStarted.html:1.136.2.5 --- llvm/docs/GettingStarted.html:1.136.2.4 Thu Jul 27 01:50:11 2006 +++ llvm/docs/GettingStarted.html Thu Jul 27 02:26:00 2006 @@ -31,11 +31,7 @@ Install the GCC Front End Local LLVM Configuration Compiling the LLVM Suite Source Code -<<< GettingStarted.html - Compiling LLVM As A Cross-Compiler -=== Cross-Compiling LLVM ->>> 1.139 The Location of LLVM Object Files Optional Configuration Items @@ -1599,7 +1595,7 @@ mailto:[EMAIL PROTECTED]">Chris Lattner http://llvm.x10sys.com/rspencer/";>Reid Spencer http://llvm.org";>The LLVM Compiler Infrastructure - Last modified: $Date: 2006/07/27 06:50:11 $ + Last modified: $Date: 2006/07/27 07:26:00 $ ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
Changes in directory llvm/lib/CodeGen/SelectionDAG: SelectionDAG.cpp updated: 1.312 -> 1.313 --- Log message: AssignNodeIds should return unsigned. --- Diffs of the changes: (+2 -2) SelectionDAG.cpp |4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) Index: llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp diff -u llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:1.312 llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:1.313 --- llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:1.312Thu Jul 27 01:39:06 2006 +++ llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp Thu Jul 27 02:36:47 2006 @@ -2700,8 +2700,8 @@ /// AssignNodeIds - Assign a unique node id for each node in the DAG. It returns /// the maximum id. -int SelectionDAG::AssignNodeIds() { - int Id = 0; +unsigned SelectionDAG::AssignNodeIds() { + unsigned Id = 0; for (allnodes_iterator I = allnodes_begin(), E = allnodes_end(); I != E; ++I){ SDNode *N = I; N->setNodeId(Id++); ___ 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/SelectionDAG.h
Changes in directory llvm/include/llvm/CodeGen: SelectionDAG.h updated: 1.103 -> 1.104 --- Log message: AssignNodeIds should return unsigned. --- Diffs of the changes: (+1 -1) SelectionDAG.h |2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/include/llvm/CodeGen/SelectionDAG.h diff -u llvm/include/llvm/CodeGen/SelectionDAG.h:1.103 llvm/include/llvm/CodeGen/SelectionDAG.h:1.104 --- llvm/include/llvm/CodeGen/SelectionDAG.h:1.103 Thu Jul 27 01:38:21 2006 +++ llvm/include/llvm/CodeGen/SelectionDAG.hThu Jul 27 02:36:47 2006 @@ -424,7 +424,7 @@ /// AssignNodeIds - Assign a unique node id for each node in the DAG. It /// returns the maximum id. - int AssignNodeIds(); + unsigned AssignNodeIds(); void dump() const; ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/Target/ARM/ARMAsmPrinter.cpp
Changes in directory llvm/lib/Target/ARM: ARMAsmPrinter.cpp updated: 1.6 -> 1.7 --- Log message: emit global constants --- Diffs of the changes: (+29 -0) ARMAsmPrinter.cpp | 29 + 1 files changed, 29 insertions(+) Index: llvm/lib/Target/ARM/ARMAsmPrinter.cpp diff -u llvm/lib/Target/ARM/ARMAsmPrinter.cpp:1.6 llvm/lib/Target/ARM/ARMAsmPrinter.cpp:1.7 --- llvm/lib/Target/ARM/ARMAsmPrinter.cpp:1.6 Sat Jul 15 20:02:57 2006 +++ llvm/lib/Target/ARM/ARMAsmPrinter.cpp Thu Jul 27 06:38:51 2006 @@ -23,6 +23,7 @@ #include "llvm/CodeGen/MachineFunctionPass.h" #include "llvm/CodeGen/MachineConstantPool.h" #include "llvm/CodeGen/MachineInstr.h" +#include "llvm/Target/TargetData.h" #include "llvm/Target/TargetMachine.h" #include "llvm/Support/Mangler.h" #include "llvm/ADT/Statistic.h" @@ -190,6 +191,34 @@ } bool ARMAsmPrinter::doFinalization(Module &M) { + const TargetData *TD = TM.getTargetData(); + + for (Module::const_global_iterator I = M.global_begin(), E = M.global_end(); + I != E; ++I) { +if (!I->hasInitializer()) // External global require no code + continue; + +if (EmitSpecialLLVMGlobal(I)) + continue; + +O << "\n\n"; +std::string name = Mang->getValueName(I); +Constant *C = I->getInitializer(); +unsigned Size = TD->getTypeSize(C->getType()); +unsigned Align = TD->getTypeAlignment(C->getType()); + +assert (I->getLinkage() == GlobalValue::ExternalLinkage); +O << "\t.globl " << name << "\n"; + +assert (!C->isNullValue()); +SwitchToDataSection(".data", I); + +EmitAlignment(Align, I); +O << "\t.type " << name << ", %object\n"; +O << "\t.size " << name << ", " << Size << "\n"; +O << name << ":\n"; +EmitGlobalConstant(C); + } AsmPrinter::doFinalization(M); return false; // success } ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
Changes in directory llvm/lib/ExecutionEngine/JIT: JITEmitter.cpp updated: 1.108 -> 1.109 --- Log message: Fixed a typo in Evan's submisson. --- Diffs of the changes: (+1 -1) JITEmitter.cpp |2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp diff -u llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp:1.108 llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp:1.109 --- llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp:1.108 Thu Jul 27 01:33:55 2006 +++ llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp Thu Jul 27 08:40:34 2006 @@ -526,7 +526,7 @@ static void synchronizeICache(const void *Addr, size_t len) { #if (defined(__POWERPC__) || defined (__ppc__) || defined(_POWER)) && \ defined(__APPLE__) - sys_icache_invalidate(Addr, Len); + sys_icache_invalidate(Addr, len); #endif } ___ 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/X86ISelDAGToDAG.cpp
Changes in directory llvm/lib/Target/X86: X86ISelDAGToDAG.cpp updated: 1.75 -> 1.76 --- Log message: Use reachbility information to determine whether a node can be folded into another during isel. --- Diffs of the changes: (+118 -3) X86ISelDAGToDAG.cpp | 121 ++-- 1 files changed, 118 insertions(+), 3 deletions(-) Index: llvm/lib/Target/X86/X86ISelDAGToDAG.cpp diff -u llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.75 llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.76 --- llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.75Wed Jun 28 18:27:49 2006 +++ llvm/lib/Target/X86/X86ISelDAGToDAG.cpp Thu Jul 27 11:44:36 2006 @@ -34,6 +34,7 @@ #include "llvm/Support/Visibility.h" #include "llvm/ADT/Statistic.h" #include +#include #include using namespace llvm; @@ -92,12 +93,13 @@ const X86Subtarget *Subtarget; unsigned GlobalBaseReg; + public: X86DAGToDAGISel(X86TargetMachine &TM) : SelectionDAGISel(X86Lowering), -X86Lowering(*TM.getTargetLowering()) { - Subtarget = &TM.getSubtarget(); -} +X86Lowering(*TM.getTargetLowering()), +Subtarget(&TM.getSubtarget()), +DAGSize(0), ReachibilityMatrix(NULL) {} virtual bool runOnFunction(Function &Fn) { // Make sure we re-emit a set of the global base reg if necessary @@ -115,10 +117,15 @@ virtual void EmitFunctionEntryCode(Function &Fn, MachineFunction &MF); +virtual bool IsFoldableBy(SDNode *N, SDNode *U); + // Include the pieces autogenerated from the target description. #include "X86GenDAGISel.inc" private: +void DetermineTopologicalOrdering(); +void DeterminReachibility(); + void Select(SDOperand &Result, SDOperand N); bool MatchAddress(SDOperand N, X86ISelAddressMode &AM, bool isRoot = true); @@ -173,12 +180,116 @@ /// base register. Return the virtual register that holds this value. SDOperand getGlobalBaseReg(); +/// DAGSize - Number of nodes in the DAG. +/// +unsigned DAGSize; + +/// TopOrder - Topological ordering of all nodes in the DAG. +/// +std::vector TopOrder; + +/// ReachibilityMatrix - A N x N matrix representing all pairs reachibility +/// information. One bit per potential edge. +unsigned char *ReachibilityMatrix; + +inline void setReachable(SDNode *f, SDNode *t) { + unsigned Idx = f->getNodeId() * DAGSize + t->getNodeId(); + ReachibilityMatrix[Idx / 8] |= 1 << (Idx % 8); +} + +inline bool isReachable(SDNode *f, SDNode *t) { + unsigned Idx = f->getNodeId() * DAGSize + t->getNodeId(); + return ReachibilityMatrix[Idx / 8] & (1 << (Idx % 8)); +} + #ifndef NDEBUG unsigned Indent; #endif }; } +bool X86DAGToDAGISel::IsFoldableBy(SDNode *N, SDNode *U) { + // If U use can somehow reach N through another path then U can't fold N or + // it will create a cycle. e.g. In the following diagram, U can reach N + // through X. If N is foled into into U, then X is both a predecessor and + // a successor of U. + // + // [ N ] + // ^ ^ + // | | + /// \--- + // /[X] + // | ^ + // [U]| + if (!ReachibilityMatrix) +DeterminReachibility(); + assert(isReachable(U, N) && "Attempting to fold a non-operand node?"); + for (SDNode::op_iterator I = U->op_begin(), E = U->op_end(); I != E; ++I) { +SDNode *P = I->Val; +if (P != N && isReachable(P, N)) + return false; + } + return true; +} + +/// DetermineTopologicalOrdering - Determine topological ordering of the nodes +/// in the DAG. +void X86DAGToDAGISel::DetermineTopologicalOrdering() { + DAGSize = CurDAG->AssignNodeIds(); + TopOrder.reserve(DAGSize); + + std::vector InDegree(DAGSize); + std::list Sources; + for (SelectionDAG::allnodes_iterator I = CurDAG->allnodes_begin(), + E = CurDAG->allnodes_end(); I != E; ++I) { +SDNode *N = I; +unsigned Degree = N->use_size(); +InDegree[N->getNodeId()] = Degree; +if (Degree == 0) + Sources.push_back(I); + } + + unsigned Order = 0; + while (!Sources.empty()) { +SDNode *N = Sources.front(); +Sources.pop_front(); +TopOrder[Order] = N; +Order++; +for (SDNode::op_iterator I = N->op_begin(), E = N->op_end(); I != E; ++I) { + SDNode *P = I->Val; + int PId = P->getNodeId(); + unsigned Degree = InDegree[PId] - 1; + if (Degree == 0) +Sources.push_back(P); + InDegree[PId] = Degree; +} + } +} + +void X86DAGToDAGISel::DeterminReachibility() { + DetermineTopologicalOrdering(); + ReachibilityMatrix = new unsigned char[DAGSize * DAGSize]; + memset(ReachibilityMatrix, 0, DAGSize * DAGSize * sizeof(unsigned char)); + + for (unsigned i = 0; i < DAGSize; ++i) { +SDNode *N = TopOrder[i]; +setReachable(N, N); +// If N is a leaf node, there is nothing more to do. +if (N->getNumOperands() == 0) + continue; + +for (unsi
[llvm-commits] CVS: llvm/lib/CodeGen/AsmPrinter.cpp
Changes in directory llvm/lib/CodeGen: AsmPrinter.cpp updated: 1.85 -> 1.86 --- Log message: Code cleanups, per review --- Diffs of the changes: (+7 -3) AsmPrinter.cpp | 10 +++--- 1 files changed, 7 insertions(+), 3 deletions(-) Index: llvm/lib/CodeGen/AsmPrinter.cpp diff -u llvm/lib/CodeGen/AsmPrinter.cpp:1.85 llvm/lib/CodeGen/AsmPrinter.cpp:1.86 --- llvm/lib/CodeGen/AsmPrinter.cpp:1.85Wed Jul 26 20:13:04 2006 +++ llvm/lib/CodeGen/AsmPrinter.cpp Thu Jul 27 11:46:58 2006 @@ -210,7 +210,11 @@ const std::vector &JT = MJTI->getJumpTables(); if (JT.empty()) return; const TargetData *TD = TM.getTargetData(); - const char *PtrDataDirective = Data32bitsDirective; + + // JTEntryDirective is a string to print sizeof(ptr) for non-PIC jump tables, + // and 32 bits for PIC since PIC jump table entries are differences, not + // pointers to blocks. + const char *JTEntryDirective = Data32bitsDirective; // Pick the directive to use to print the jump table entries, and switch to // the appropriate section. @@ -219,7 +223,7 @@ } else { SwitchToDataSection(JumpTableDataSection, 0); if (TD->getPointerSize() == 8) - PtrDataDirective = Data64bitsDirective; + JTEntryDirective = Data64bitsDirective; } EmitAlignment(Log2_32(TD->getPointerAlignment())); @@ -228,7 +232,7 @@ << ":\n"; const std::vector &JTBBs = JT[i].MBBs; for (unsigned ii = 0, ee = JTBBs.size(); ii != ee; ++ii) { - O << PtrDataDirective << ' '; + O << JTEntryDirective << ' '; printBasicBlockLabel(JTBBs[ii], false, false); if (TM.getRelocationModel() == Reloc::PIC_) { O << '-' << PrivateGlobalPrefix << "JTI" << getFunctionNumber() ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
Changes in directory llvm/lib/CodeGen/SelectionDAG: SelectionDAGISel.cpp updated: 1.260 -> 1.261 --- Log message: Code cleanups, per review --- Diffs of the changes: (+0 -2) SelectionDAGISel.cpp |2 -- 1 files changed, 2 deletions(-) Index: llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp diff -u llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1.260 llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1.261 --- llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1.260Wed Jul 26 20:13:04 2006 +++ llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp Thu Jul 27 11:46:58 2006 @@ -914,8 +914,6 @@ double Density = (double)Cases.size() / (double)((Last - First) + 1ULL); if (Density >= 0.3125) { - Reloc::Model Relocs = TLI.getTargetMachine().getRelocationModel(); - // Create a new basic block to hold the code for loading the address // of the jump table, and jumping to it. Update successor information; // we will either branch to the default case for the switch, or the jump ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/Target/PowerPC/PPCJITInfo.cpp PPCJITInfo.h
Changes in directory llvm/lib/Target/PowerPC: PPCJITInfo.cpp updated: 1.25 -> 1.26 PPCJITInfo.h updated: 1.10 -> 1.11 --- Log message: synchronizeICache removeed from TargetJITInfo. --- Diffs of the changes: (+0 -11) PPCJITInfo.cpp | 10 -- PPCJITInfo.h |1 - 2 files changed, 11 deletions(-) Index: llvm/lib/Target/PowerPC/PPCJITInfo.cpp diff -u llvm/lib/Target/PowerPC/PPCJITInfo.cpp:1.25 llvm/lib/Target/PowerPC/PPCJITInfo.cpp:1.26 --- llvm/lib/Target/PowerPC/PPCJITInfo.cpp:1.25 Tue Jul 25 15:40:54 2006 +++ llvm/lib/Target/PowerPC/PPCJITInfo.cpp Thu Jul 27 12:33:48 2006 @@ -268,13 +268,3 @@ } BBRefs.clear(); } - -#ifdef __APPLE__ -extern "C" void sys_icache_invalidate(const void *Addr, size_t len); -#endif - -void PPCJITInfo::synchronizeICache(const void *Addr, size_t Len) { -#ifdef __APPLE__ - sys_icache_invalidate(Addr, Len); -#endif -} Index: llvm/lib/Target/PowerPC/PPCJITInfo.h diff -u llvm/lib/Target/PowerPC/PPCJITInfo.h:1.10 llvm/lib/Target/PowerPC/PPCJITInfo.h:1.11 --- llvm/lib/Target/PowerPC/PPCJITInfo.h:1.10 Tue Jul 25 15:40:54 2006 +++ llvm/lib/Target/PowerPC/PPCJITInfo.hThu Jul 27 12:33:48 2006 @@ -44,7 +44,6 @@ virtual void replaceMachineCodeForFunction(void *Old, void *New); virtual void resolveBBRefs(MachineCodeEmitter &MCE); -virtual void synchronizeICache(const void *Addr, size_t Len); }; } ___ 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/MachineRelocation.h
Changes in directory llvm/include/llvm/CodeGen: MachineRelocation.h updated: 1.10 -> 1.11 --- Log message: Add basic block machine relocation. --- Diffs of the changes: (+35 -5) MachineRelocation.h | 40 +++- 1 files changed, 35 insertions(+), 5 deletions(-) Index: llvm/include/llvm/CodeGen/MachineRelocation.h diff -u llvm/include/llvm/CodeGen/MachineRelocation.h:1.10 llvm/include/llvm/CodeGen/MachineRelocation.h:1.11 --- llvm/include/llvm/CodeGen/MachineRelocation.h:1.10 Thu Jun 22 20:02:37 2006 +++ llvm/include/llvm/CodeGen/MachineRelocation.h Thu Jul 27 13:18:13 2006 @@ -19,6 +19,7 @@ namespace llvm { class GlobalValue; +class MachineBasicBlock; /// MachineRelocation - This represents a target-specific relocation value, /// produced by the code emitter. This relocation is resolved after the has @@ -38,6 +39,7 @@ enum AddressType { isResult, // Relocation has be transformed into its result pointer. isGV, // The Target.GV field is valid. +isBB, // Relocation of BB address. isExtSym, // The Target.ExtSym field is valid. isConstPool, // Relocation of constant pool address. isJumpTable, // Relocation of jump table address. @@ -52,11 +54,12 @@ intptr_t ConstantVal; union { -void *Result;// If this has been resolved to a resolved pointer -GlobalValue *GV; // If this is a pointer to an LLVM global -const char *ExtSym; // If this is a pointer to a named symbol -unsigned Index; // Constant pool / jump table index -unsigned GOTIndex; // Index in the GOT of this symbol/global +void *Result; // If this has been resolved to a resolved pointer +GlobalValue *GV;// If this is a pointer to an LLVM global +MachineBasicBlock *MBB; // If this is a pointer to a LLVM BB +const char *ExtSym; // If this is a pointer to a named symbol +unsigned Index; // Constant pool / jump table index +unsigned GOTIndex; // Index in the GOT of this symbol/global } Target; unsigned TargetReloType : 6; // The target relocation ID. @@ -83,6 +86,22 @@ return Result; } + /// MachineRelocation::getBB - Return a relocation entry for a BB. + /// + static MachineRelocation getBB(intptr_t offset,unsigned RelocationType, + MachineBasicBlock *MBB, intptr_t cst = 0) { +assert((RelocationType & ~63) == 0 && "Relocation type too large!"); +MachineRelocation Result; +Result.Offset = offset; +Result.ConstantVal = cst; +Result.TargetReloType = RelocationType; +Result.AddrType = isBB; +Result.DoesntNeedFnStub = false; +Result.GOTRelative = false; +Result.Target.MBB = MBB; +return Result; + } + /// MachineRelocation::getExtSym - Return a relocation entry for an external /// symbol, like "free". /// @@ -160,6 +179,12 @@ return AddrType == isGV; } + /// isBasicBlock - Return true if this relocation is a basic block reference. + /// + bool isBasicBlock() const { +return AddrType == isBB; + } + /// isString - Return true if this is a constant string. /// bool isString() const { @@ -200,6 +225,11 @@ return Target.GV; } + MachineBasicBlock *getBasicBlock() const { +assert(isBasicBlock() && "This is not a basic block reference!"); +return Target.MBB; + } + /// getString - If this is a string value, return the string reference. /// const char *getString() const { ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/include/llvm/Target/TargetJITInfo.h
Changes in directory llvm/include/llvm/Target: TargetJITInfo.h updated: 1.9 -> 1.10 --- Log message: Resolve BB references with relocation. --- Diffs of the changes: (+0 -14) TargetJITInfo.h | 14 -- 1 files changed, 14 deletions(-) Index: llvm/include/llvm/Target/TargetJITInfo.h diff -u llvm/include/llvm/Target/TargetJITInfo.h:1.9 llvm/include/llvm/Target/TargetJITInfo.h:1.10 --- llvm/include/llvm/Target/TargetJITInfo.h:1.9Thu Jul 27 01:33:55 2006 +++ llvm/include/llvm/Target/TargetJITInfo.hThu Jul 27 13:19:24 2006 @@ -83,26 +83,12 @@ assert(NumRelocs == 0 && "This target does not have relocations!"); } -/// resolveBBRefs - Resolve branches to BasicBlocks for the JIT emitted -/// function. -virtual void resolveBBRefs(MachineCodeEmitter &MCE) {} - -/// addBBRef - Add a BasicBlock reference to be resolved after the function -/// is emitted. -void addBBRef(MachineBasicBlock *BB, intptr_t PC) { - BBRefs.push_back(std::make_pair(BB, PC)); -} - /// needsGOT - Allows a target to specify that it would like the // JIT to manage a GOT for it. bool needsGOT() const { return useGOT; } protected: bool useGOT; - -// Tracks which instruction references which BasicBlock -std::vector > BBRefs; - }; } // End llvm namespace ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp
Changes in directory llvm/lib/ExecutionEngine/JIT: JITEmitter.cpp updated: 1.109 -> 1.110 --- Log message: Resolve BB references with relocation. --- Diffs of the changes: (+2 -5) JITEmitter.cpp |7 ++- 1 files changed, 2 insertions(+), 5 deletions(-) Index: llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp diff -u llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp:1.109 llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp:1.110 --- llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp:1.109 Thu Jul 27 08:40:34 2006 +++ llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp Thu Jul 27 13:19:24 2006 @@ -807,13 +807,13 @@ ResultPtr = getPointerToGlobal(MR.getGlobalValue(), BufferBegin+MR.getMachineCodeOffset(), MR.doesntNeedFunctionStub()); + } else if (MR.isBasicBlock()) { +ResultPtr = (void*)getMachineBasicBlockAddress(MR.getBasicBlock()); } else if (MR.isConstantPoolIndex()){ -assert(MR.isConstantPoolIndex()); ResultPtr=(void*)getConstantPoolEntryAddress(MR.getConstantPoolIndex()); } else { assert(MR.isJumpTableIndex()); ResultPtr=(void*)getJumpTableEntryAddress(MR.getJumpTableIndex()); - } MR.setResultPointer(ResultPtr); @@ -846,9 +846,6 @@ } } - // Resolve BasicaBlock references. - TheJIT->getJITInfo().resolveBBRefs(*this); - // Invalidate the icache if necessary. synchronizeICache(FnStart, FnEnd-FnStart); ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/Makefile.rules
Changes in directory llvm: Makefile.rules updated: 1.391 -> 1.392 --- Log message: Pass -fstrict-aliasing to the compiler when building a release build on darwin. Darwin doesn't default to it being on. --- Diffs of the changes: (+8 -3) Makefile.rules | 11 --- 1 files changed, 8 insertions(+), 3 deletions(-) Index: llvm/Makefile.rules diff -u llvm/Makefile.rules:1.391 llvm/Makefile.rules:1.392 --- llvm/Makefile.rules:1.391 Wed Jul 26 16:14:55 2006 +++ llvm/Makefile.rules Thu Jul 27 13:19:51 2006 @@ -214,13 +214,18 @@ else ifdef ENABLE_OPTIMIZED BuildMode := Release -# Don't use -fomit-frame-pointer on FreeBSD +# Don't use -fomit-frame-pointer on Darwin or FreeBSD. ifneq ($(OS),FreeBSD) -# Don't use -fomit-frame-pointer on Darwin, it breaks backtraces. ifneq ($(OS),Darwin) OmitFramePointer := -fomit-frame-pointer endif endif + +# Darwin requires -fstrict-aliasing to be explicitly enabled. +ifeq ($(OS),Darwin) + EXTRA_OPTIONS += -fstrict-aliasing +endif + CXX.Flags := $(OPTIMIZE_OPTION) $(OmitFramePointer) C.Flags := $(OPTIMIZE_OPTION) $(OmitFramePointer) LD.Flags := $(OPTIMIZE_OPTION) @@ -251,7 +256,7 @@ AR.Flags := cru LibTool.Flags := --tag=CXX -#Make Floating point ieee complient on alpha +# Make Floating point IEEE compliant on Alpha. ifeq ($(ARCH),Alpha) CXX.Flags += -mieee -fPIC CPP.BaseFlags += -mieee -fPIC ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/Target/Alpha/AlphaCodeEmitter.cpp AlphaJITInfo.cpp AlphaJITInfo.h
Changes in directory llvm/lib/Target/Alpha: AlphaCodeEmitter.cpp updated: 1.16 -> 1.17 AlphaJITInfo.cpp updated: 1.10 -> 1.11 AlphaJITInfo.h updated: 1.2 -> 1.3 --- Log message: Resolve BB references with relocation. --- Diffs of the changes: (+3 -20) AlphaCodeEmitter.cpp |5 +++-- AlphaJITInfo.cpp | 16 AlphaJITInfo.h |2 -- 3 files changed, 3 insertions(+), 20 deletions(-) Index: llvm/lib/Target/Alpha/AlphaCodeEmitter.cpp diff -u llvm/lib/Target/Alpha/AlphaCodeEmitter.cpp:1.16 llvm/lib/Target/Alpha/AlphaCodeEmitter.cpp:1.17 --- llvm/lib/Target/Alpha/AlphaCodeEmitter.cpp:1.16 Tue Jul 25 15:40:54 2006 +++ llvm/lib/Target/Alpha/AlphaCodeEmitter.cpp Thu Jul 27 13:20:17 2006 @@ -215,8 +215,9 @@ Reloc, MO.getConstantPoolIndex(), Offset)); } else if (MO.isMachineBasicBlock()) { -TM.getJITInfo()->addBBRef(MO.getMachineBasicBlock(), - MCE.getCurrentPCValue()); +MCE.addRelocation(MachineRelocation::getBB(MCE.getCurrentPCOffset(), + Alpha::reloc_bsr, + MO.getMachineBasicBlock())); }else { std::cerr << "ERROR: Unknown type of MachineOperand: " << MO << "\n"; abort(); Index: llvm/lib/Target/Alpha/AlphaJITInfo.cpp diff -u llvm/lib/Target/Alpha/AlphaJITInfo.cpp:1.10 llvm/lib/Target/Alpha/AlphaJITInfo.cpp:1.11 --- llvm/lib/Target/Alpha/AlphaJITInfo.cpp:1.10 Tue Jul 25 15:40:54 2006 +++ llvm/lib/Target/Alpha/AlphaJITInfo.cpp Thu Jul 27 13:20:17 2006 @@ -304,19 +304,3 @@ } } } - -void AlphaJITInfo::resolveBBRefs(MachineCodeEmitter &MCE) { - // Resolve all forward branches now... - for (unsigned i = 0, e = BBRefs.size(); i != e; ++i) { -unsigned* Location = - (unsigned*)MCE.getMachineBasicBlockAddress(BBRefs[i].first); -unsigned* Ref = (unsigned*)BBRefs[i].second; -intptr_t BranchTargetDisp = - (((unsigned char*)Location - (unsigned char*)Ref) >> 2) - 1; -DEBUG(std::cerr << "Fixup @ " << (void*)Ref << " to " << (void*)Location - << " Disp " << BranchTargetDisp - << " using " << (BranchTargetDisp & ((1 << 22)-1)) << "\n"); -*Ref |= (BranchTargetDisp & ((1 << 21)-1)); - } - BBRefs.clear(); -} Index: llvm/lib/Target/Alpha/AlphaJITInfo.h diff -u llvm/lib/Target/Alpha/AlphaJITInfo.h:1.2 llvm/lib/Target/Alpha/AlphaJITInfo.h:1.3 --- llvm/lib/Target/Alpha/AlphaJITInfo.h:1.2Tue Jul 25 15:40:54 2006 +++ llvm/lib/Target/Alpha/AlphaJITInfo.hThu Jul 27 13:20:17 2006 @@ -46,8 +46,6 @@ /// code. /// virtual void replaceMachineCodeForFunction(void *Old, void *New); - -virtual void resolveBBRefs(MachineCodeEmitter &MCE); private: static const unsigned GOToffset = 4096; ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/Target/PowerPC/PPCCodeEmitter.cpp PPCJITInfo.cpp PPCJITInfo.h PPCRelocations.h
Changes in directory llvm/lib/Target/PowerPC: PPCCodeEmitter.cpp updated: 1.64 -> 1.65 PPCJITInfo.cpp updated: 1.26 -> 1.27 PPCJITInfo.h updated: 1.11 -> 1.12 PPCRelocations.h updated: 1.8 -> 1.9 --- Log message: Resolve BB references with relocation. --- Diffs of the changes: (+22 -27) PPCCodeEmitter.cpp | 12 ++-- PPCJITInfo.cpp | 31 --- PPCJITInfo.h |2 -- PPCRelocations.h |4 4 files changed, 22 insertions(+), 27 deletions(-) Index: llvm/lib/Target/PowerPC/PPCCodeEmitter.cpp diff -u llvm/lib/Target/PowerPC/PPCCodeEmitter.cpp:1.64 llvm/lib/Target/PowerPC/PPCCodeEmitter.cpp:1.65 --- llvm/lib/Target/PowerPC/PPCCodeEmitter.cpp:1.64 Tue Jul 25 15:40:54 2006 +++ llvm/lib/Target/PowerPC/PPCCodeEmitter.cpp Thu Jul 27 13:20:32 2006 @@ -180,8 +180,16 @@ MCE.addRelocation(MachineRelocation::getExtSym(MCE.getCurrentPCOffset(), Reloc, MO.getSymbolName(), 0)); } else if (MO.isMachineBasicBlock()) { -unsigned* CurrPC = (unsigned*)(intptr_t)MCE.getCurrentPCValue(); -TM.getJITInfo()->addBBRef(MO.getMachineBasicBlock(), (intptr_t)CurrPC); +unsigned Reloc = 0; +unsigned Opcode = MI.getOpcode(); +if (Opcode == PPC::B || Opcode == PPC::BL || Opcode == PPC::BLA) + Reloc = PPC::reloc_pcrel_bx; +else + // BLT,BLE,BEQ,BGE,BGT,BNE, or other bcx instruction + Reloc = PPC::reloc_pcrel_bcx; +MCE.addRelocation(MachineRelocation::getBB(MCE.getCurrentPCOffset(), + Reloc, + MO.getMachineBasicBlock())); } else if (MO.isConstantPoolIndex() || MO.isJumpTableIndex()) { if (MO.isConstantPoolIndex()) rv = MCE.getConstantPoolEntryAddress(MO.getConstantPoolIndex()); Index: llvm/lib/Target/PowerPC/PPCJITInfo.cpp diff -u llvm/lib/Target/PowerPC/PPCJITInfo.cpp:1.26 llvm/lib/Target/PowerPC/PPCJITInfo.cpp:1.27 --- llvm/lib/Target/PowerPC/PPCJITInfo.cpp:1.26 Thu Jul 27 12:33:48 2006 +++ llvm/lib/Target/PowerPC/PPCJITInfo.cpp Thu Jul 27 13:20:32 2006 @@ -206,6 +206,14 @@ "Relocation out of range!"); *RelocPos |= (ResultPtr & ((1 << 24)-1)) << 2; break; +case PPC::reloc_pcrel_bcx: + // PC-relative relocation for BLT,BLE,BEQ,BGE,BGT,BNE, or other + // bcx instructions. + ResultPtr = (ResultPtr-(intptr_t)RelocPos) >> 2; + assert(ResultPtr >= -(1 << 13) && ResultPtr < (1 << 13) && + "Relocation out of range!"); + *RelocPos |= (ResultPtr & ((1 << 14)-1)) << 2; + break; case PPC::reloc_absolute_ptr_high: // Pointer relocations. case PPC::reloc_absolute_ptr_low: case PPC::reloc_absolute_high: // high bits of ref -> low 16 of instr @@ -245,26 +253,3 @@ void PPCJITInfo::replaceMachineCodeForFunction(void *Old, void *New) { EmitBranchToAt(Old, New, false); } - -void PPCJITInfo::resolveBBRefs(MachineCodeEmitter &MCE) { - // Resolve branches to BasicBlocks for the entire function - for (unsigned i = 0, e = BBRefs.size(); i != e; ++i) { -intptr_t Location = MCE.getMachineBasicBlockAddress(BBRefs[i].first); -unsigned *Ref = (unsigned *)BBRefs[i].second; -DEBUG(std::cerr << "Fixup @ " << (void*)Ref << " to " << (void*)Location -<< "\n"); -unsigned Instr = *Ref; -intptr_t BranchTargetDisp = (Location - (intptr_t)Ref) >> 2; - -switch (Instr >> 26) { -default: assert(0 && "Unknown branch user!"); -case 18: // This is B or BL - *Ref |= (BranchTargetDisp & ((1 << 24)-1)) << 2; - break; -case 16: // This is BLT,BLE,BEQ,BGE,BGT,BNE, or other bcx instruction - *Ref |= (BranchTargetDisp & ((1 << 14)-1)) << 2; - break; -} - } - BBRefs.clear(); -} Index: llvm/lib/Target/PowerPC/PPCJITInfo.h diff -u llvm/lib/Target/PowerPC/PPCJITInfo.h:1.11 llvm/lib/Target/PowerPC/PPCJITInfo.h:1.12 --- llvm/lib/Target/PowerPC/PPCJITInfo.h:1.11 Thu Jul 27 12:33:48 2006 +++ llvm/lib/Target/PowerPC/PPCJITInfo.hThu Jul 27 13:20:32 2006 @@ -42,8 +42,6 @@ /// code. /// virtual void replaceMachineCodeForFunction(void *Old, void *New); - -virtual void resolveBBRefs(MachineCodeEmitter &MCE); }; } Index: llvm/lib/Target/PowerPC/PPCRelocations.h diff -u llvm/lib/Target/PowerPC/PPCRelocations.h:1.8 llvm/lib/Target/PowerPC/PPCRelocations.h:1.9 --- llvm/lib/Target/PowerPC/PPCRelocations.h:1.8Wed Jul 12 16:23:20 2006 +++ llvm/lib/Target/PowerPC/PPCRelocations.hThu Jul 27 13:20:32 2006 @@ -28,6 +28,10 @@ // reloc_pcrel_bx - PC relative relocation, for the b or bl instructions. reloc_pcrel_bx, + // reloc_pcrel_bcx - PC relative relocation, for BLT,BLE,BEQ,BGE,BGT,BNE, + // and other bcx instructions. + reloc_pcrel_bcx, + // reloc_absolute_high - Absolute relocation, for the loadhi instruction // (which is really addis). Add the high 16-bits o
[llvm-commits] CVS: llvm/lib/Target/X86/X86CodeEmitter.cpp X86JITInfo.cpp X86JITInfo.h
Changes in directory llvm/lib/Target/X86: X86CodeEmitter.cpp updated: 1.111 -> 1.112 X86JITInfo.cpp updated: 1.24 -> 1.25 X86JITInfo.h updated: 1.9 -> 1.10 --- Log message: Resolve BB references with relocation. --- Diffs of the changes: (+2 -13) X86CodeEmitter.cpp |3 ++- X86JITInfo.cpp | 10 -- X86JITInfo.h |2 -- 3 files changed, 2 insertions(+), 13 deletions(-) Index: llvm/lib/Target/X86/X86CodeEmitter.cpp diff -u llvm/lib/Target/X86/X86CodeEmitter.cpp:1.111 llvm/lib/Target/X86/X86CodeEmitter.cpp:1.112 --- llvm/lib/Target/X86/X86CodeEmitter.cpp:1.111Tue Jul 25 15:40:54 2006 +++ llvm/lib/Target/X86/X86CodeEmitter.cpp Thu Jul 27 13:21:10 2006 @@ -111,7 +111,8 @@ void Emitter::emitPCRelativeBlockAddress(MachineBasicBlock *MBB) { // Remember where this reference was and where it is to so we can // deal with it later. - TM.getJITInfo()->addBBRef(MBB, MCE.getCurrentPCValue()); + MCE.addRelocation(MachineRelocation::getBB(MCE.getCurrentPCOffset(), + X86::reloc_pcrel_word, MBB)); MCE.emitWordLE(0); } Index: llvm/lib/Target/X86/X86JITInfo.cpp diff -u llvm/lib/Target/X86/X86JITInfo.cpp:1.24 llvm/lib/Target/X86/X86JITInfo.cpp:1.25 --- llvm/lib/Target/X86/X86JITInfo.cpp:1.24 Tue Jul 25 15:40:54 2006 +++ llvm/lib/Target/X86/X86JITInfo.cpp Thu Jul 27 13:21:10 2006 @@ -203,13 +203,3 @@ } } } - -void X86JITInfo::resolveBBRefs(MachineCodeEmitter &MCE) { - // Resolve all forward branches now. - for (unsigned i = 0, e = BBRefs.size(); i != e; ++i) { -unsigned Location = MCE.getMachineBasicBlockAddress(BBRefs[i].first); -intptr_t Ref = BBRefs[i].second; -*((unsigned*)Ref) = Location-Ref-4; - } - BBRefs.clear(); -} Index: llvm/lib/Target/X86/X86JITInfo.h diff -u llvm/lib/Target/X86/X86JITInfo.h:1.9 llvm/lib/Target/X86/X86JITInfo.h:1.10 --- llvm/lib/Target/X86/X86JITInfo.h:1.9Tue Jul 25 15:40:54 2006 +++ llvm/lib/Target/X86/X86JITInfo.hThu Jul 27 13:21:10 2006 @@ -51,8 +51,6 @@ /// referenced global symbols. virtual void relocate(void *Function, MachineRelocation *MR, unsigned NumRelocs, unsigned char* GOTBase); - -virtual void resolveBBRefs(MachineCodeEmitter &MCE); }; } ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/utils/NewNightlyTest.pl
Changes in directory llvm/utils: NewNightlyTest.pl updated: 1.29 -> 1.30 --- Log message: Removed some clutter that was left over from development. Changed how changedir worked. Hopefully now when it fails it will tell us why. --- Diffs of the changes: (+39 -48) NewNightlyTest.pl | 87 -- 1 files changed, 39 insertions(+), 48 deletions(-) Index: llvm/utils/NewNightlyTest.pl diff -u llvm/utils/NewNightlyTest.pl:1.29 llvm/utils/NewNightlyTest.pl:1.30 --- llvm/utils/NewNightlyTest.pl:1.29 Wed Jul 26 20:24:35 2006 +++ llvm/utils/NewNightlyTest.plThu Jul 27 13:28:50 2006 @@ -302,7 +302,11 @@ my ($dir,$name) = @_; chomp($dir); if ( $VERBOSE ) { print "Changing To: $name ($dir)\n"; } -chdir($dir) || (print "Cannot change directory to: $name ($dir) " && return -1); +$result = chdir($dir); +if(!$result){ + print "ERROR!!! Cannot change directory to: $name ($dir) because $!"; + return -1; +} return 0; } @@ -777,57 +781,44 @@ # ## sub TestDirectory { -my $SubDir = shift; - -ChangeDir( "projects/llvm-test/$SubDir", "Programs Test Subdirectory" ) || return ("", ""); - -my $ProgramTestLog = "$Prefix-$SubDir-ProgramTest.txt"; -#my $ProgramTestLog = "$Prefix-MultiSource-ProgramTest.txt"; #CHANGE ME! - -# Run the programs tests... creating a report.nightly.csv file -if (!$NOTEST) { - print "$MAKECMD -k $MAKEOPTS $PROGTESTOPTS report.nightly.csv " - . "TEST=nightly > $ProgramTestLog 2>&1\n"; - system "$MAKECMD -k $MAKEOPTS $PROGTESTOPTS report.nightly.csv " - . "TEST=nightly > $ProgramTestLog 2>&1"; - $llcbeta_options=`$MAKECMD print-llcbeta-option`; -} + my $SubDir = shift; + + ChangeDir( "projects/llvm-test/$SubDir", "Programs Test Subdirectory" ) || return ("", ""); + + my $ProgramTestLog = "$Prefix-$SubDir-ProgramTest.txt"; + + # Run the programs tests... creating a report.nightly.csv file + if (!$NOTEST) { + print "$MAKECMD -k $MAKEOPTS $PROGTESTOPTS report.nightly.csv ". + "TEST=nightly > $ProgramTestLog 2>&1\n"; + system "$MAKECMD -k $MAKEOPTS $PROGTESTOPTS report.nightly.csv ". + "TEST=nightly > $ProgramTestLog 2>&1"; + $llcbeta_options=`$MAKECMD print-llcbeta-option`; + } -my $ProgramsTable; -if (`grep '^$MAKECMD\[^:]: .*Error' $ProgramTestLog | wc -l` + 0){ - $TestError = 1; - $ProgramsTable="Error running test $SubDir\n"; - print "ERROR TESTING\n"; -} elsif (`grep '^$MAKECMD\[^:]: .*No rule to make target' $ProgramTestLog | wc -l` + 0) { - $TestError = 1; - $ProgramsTable="Makefile error running tests $SubDir!\n"; - print "ERROR TESTING\n"; -} else { - $TestError = 0; + my $ProgramsTable; + if (`grep '^$MAKECMD\[^:]: .*Error' $ProgramTestLog | wc -l` + 0){ +$TestError = 1; +$ProgramsTable="Error running test $SubDir\n"; +print "ERROR TESTING\n"; + } elsif (`grep '^$MAKECMD\[^:]: .*No rule to make target' $ProgramTestLog | wc -l` + 0) { +$TestError = 1; +$ProgramsTable="Makefile error running tests $SubDir!\n"; +print "ERROR TESTING\n"; + } else { +$TestError = 0; +# +# Create a list of the tests which were run... +# +system "egrep 'TEST-(PASS|FAIL)' < $ProgramTestLog ". + "| sort > $Prefix-multisourceprogramstable.txt"; + } + $ProgramsTable = ReadFile "report.nightly.csv"; - # - # Create a list of the tests which were run... - # - system "egrep 'TEST-(PASS|FAIL)' < $ProgramTestLog " - . "| sort > $Prefix-multisourceprogramstable.txt"; -} -$ProgramsTable = ReadFile "report.nightly.csv"; - -ChangeDir( "../../..", "Programs Test Parent Directory" ); -return ($ProgramsTable, $llcbeta_options); + ChangeDir( "../../..", "Programs Test Parent Directory" ); + return ($ProgramsTable, $llcbeta_options); } -$patrickjenkins=1; -if(!$patrickjenkins){ -if ( $VERBOSE ) { -print "Modified Multisource Olden test stage\n"; -} -($MultiSourceProgramsTable, $multisource_llcbeta_options) = TestDirectory("MultiSource/"); -ChangeDir( "../../..", "Programs Test Parent Directory" ); - - -WriteFile "$WebDir/multisourceprogramstable.txt", $MultiSourceProgramsTable; -} if (!$BuildError && $patrickjenkins) { if ( $VERBOSE ) { print "SingleSource TEST STAGE\n"; ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/utils/NewNightlyTest.pl
Changes in directory llvm/utils: NewNightlyTest.pl updated: 1.30 -> 1.31 --- Log message: Added more descriptive output to singlesource,multisource tests. --- Diffs of the changes: (+30 -24) NewNightlyTest.pl | 54 ++ 1 files changed, 30 insertions(+), 24 deletions(-) Index: llvm/utils/NewNightlyTest.pl diff -u llvm/utils/NewNightlyTest.pl:1.30 llvm/utils/NewNightlyTest.pl:1.31 --- llvm/utils/NewNightlyTest.pl:1.30 Thu Jul 27 13:28:50 2006 +++ llvm/utils/NewNightlyTest.plThu Jul 27 14:00:01 2006 @@ -819,34 +819,40 @@ return ($ProgramsTable, $llcbeta_options); } -if (!$BuildError && $patrickjenkins) { -if ( $VERBOSE ) { - print "SingleSource TEST STAGE\n"; -} -($SingleSourceProgramsTable, $llcbeta_options) = TestDirectory("SingleSource"); -WriteFile "$Prefix-singlesourceprogramstable.txt", $SingleSourceProgramsTable; -if ( $VERBOSE ) { - print "MultiSource TEST STAGE\n"; -} -($MultiSourceProgramsTable, $llcbeta_options) = TestDirectory("MultiSource"); -WriteFile "$Prefix-multisourceprogramstable.txt", $MultiSourceProgramsTable; -if ( ! $NOEXTERNALS ) { +if (!$BuildError) { if ( $VERBOSE ) { - print "External TEST STAGE\n"; +print "SingleSource TEST STAGE\n"; } - ($ExternalProgramsTable, $llcbeta_options) = TestDirectory("External"); - WriteFile "$Prefix-externalprogramstable.txt", $ExternalProgramsTable; - system "cat $Prefix-singlesourceprogramstable.txt $Prefix-multisourceprogramstable.txt ". - " $Prefix-externalprogramstable.txt | sort > $Prefix-Tests.txt"; -} else { - $ExternalProgramsTable = "External TEST STAGE SKIPPED\n"; + ($SingleSourceProgramsTable, $llcbeta_options) = TestDirectory("SingleSource"); if ( $VERBOSE ) { - print "External TEST STAGE SKIPPED\n"; +print "SingleSource returned $SingleSourceProgramsTable\n"; } - system "cat $Prefix-singlesourceprogramstable.txt $Prefix-multisourceprogramstable.txt ". - " | sort > $Prefix-Tests.txt"; -} -WriteFile "$Prefix-externalprogramstable.txt", $ExternalProgramsTable; + WriteFile "$Prefix-singlesourceprogramstable.txt", $SingleSourceProgramsTable; + if ( $VERBOSE ) { + print "MultiSource TEST STAGE\n"; + } + ($MultiSourceProgramsTable, $llcbeta_options) = TestDirectory("MultiSource"); + WriteFile "$Prefix-multisourceprogramstable.txt", $MultiSourceProgramsTable; + if ( $VERBOSE ) { + print "MultiSource returned $MultiSourceProgramsTable\n"; + } + if ( ! $NOEXTERNALS ) { + if ( $VERBOSE ) { + print "External TEST STAGE\n"; + } + ($ExternalProgramsTable, $llcbeta_options) = TestDirectory("External"); + WriteFile "$Prefix-externalprogramstable.txt", $ExternalProgramsTable; + system "cat $Prefix-singlesourceprogramstable.txt $Prefix-multisourceprogramstable.txt ". + " $Prefix-externalprogramstable.txt | sort > $Prefix-Tests.txt"; + } else { + $ExternalProgramsTable = "External TEST STAGE SKIPPED\n"; + if ( $VERBOSE ) { + print "External TEST STAGE SKIPPED\n"; + } + system "cat $Prefix-singlesourceprogramstable.txt $Prefix-multisourceprogramstable.txt ". + " | sort > $Prefix-Tests.txt"; + } + WriteFile "$Prefix-externalprogramstable.txt", $ExternalProgramsTable; } ## ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: nightlytest-serverside/test.php
Changes in directory nightlytest-serverside: test.php updated: 1.9 -> 1.10 --- Log message: Added some comments to clear up ambiguous code --- Diffs of the changes: (+6 -1) test.php |7 ++- 1 files changed, 6 insertions(+), 1 deletion(-) Index: nightlytest-serverside/test.php diff -u nightlytest-serverside/test.php:1.9 nightlytest-serverside/test.php:1.10 --- nightlytest-serverside/test.php:1.9 Wed Jul 26 13:51:36 2006 +++ nightlytest-serverside/test.php Thu Jul 27 14:10:30 2006 @@ -110,7 +110,7 @@ /* * - * Printing the times table + * Printing link to build log * **/ print"See Full Test Results\n"; @@ -121,6 +121,11 @@ "View Build Log\n"; } +/* + * + * Printing the times table + * + **/ if(strpos($today_row['buildstatus'], "OK")===FALSE){ $disp=""; $sign="(+)"; ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: nightlytest-serverside/fulltest.php
Changes in directory nightlytest-serverside: fulltest.php updated: 1.4 -> 1.5 --- Log message: Added link to build log --- Diffs of the changes: (+24 -0) fulltest.php | 24 1 files changed, 24 insertions(+) Index: nightlytest-serverside/fulltest.php diff -u nightlytest-serverside/fulltest.php:1.4 nightlytest-serverside/fulltest.php:1.5 --- nightlytest-serverside/fulltest.php:1.4 Wed Jul 19 11:13:30 2006 +++ nightlytest-serverside/fulltest.php Thu Jul 27 14:11:12 2006 @@ -96,6 +96,17 @@ /* * + * Printing link to build log + * + **/ +$buildfile=str_replace(" ", "_", $cur_date); +if(file_exists("machines/$machine_id/$buildfile-Build-Log.txt")){ + print "". + "View Build Log\n"; +} + +/* + * * Printing the times table * **/ @@ -455,6 +466,19 @@ /* * + * Printing file size information + * + **/ +print "(-) CVS information\n"; +print "\n"; + +print"File Size information:\n"; + +print "\n"; + + +/* + * * ending sidebar table here * **/ ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: nightlytest-serverside/machine.php
Changes in directory nightlytest-serverside: machine.php updated: 1.3 -> 1.4 --- Log message: Tweaked the coloring scheme so that we dont consider test submissions with failed builds --- Diffs of the changes: (+6 -1) machine.php |7 ++- 1 files changed, 6 insertions(+), 1 deletion(-) Index: nightlytest-serverside/machine.php diff -u nightlytest-serverside/machine.php:1.3 nightlytest-serverside/machine.php:1.4 --- nightlytest-serverside/machine.php:1.3 Mon Jul 10 14:27:51 2006 +++ nightlytest-serverside/machine.php Thu Jul 27 14:17:49 2006 @@ -360,7 +360,12 @@ print "View details\n"; echo ""; echo ""; - $row = $prev_row; + + #this is to ensure we dont compare a test's statistics against + #a test that failed and has bogus statistics + if($build_ok){ + $row = $prev_row; + } $x++; } #end while ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/utils/NewNightlyTest.pl
Changes in directory llvm/utils: NewNightlyTest.pl updated: 1.31 -> 1.32 --- Log message: Fixed a stupid error where changedir returned false upon success. --- Diffs of the changes: (+1 -2) NewNightlyTest.pl |3 +-- 1 files changed, 1 insertion(+), 2 deletions(-) Index: llvm/utils/NewNightlyTest.pl diff -u llvm/utils/NewNightlyTest.pl:1.31 llvm/utils/NewNightlyTest.pl:1.32 --- llvm/utils/NewNightlyTest.pl:1.31 Thu Jul 27 14:00:01 2006 +++ llvm/utils/NewNightlyTest.plThu Jul 27 14:22:06 2006 @@ -307,7 +307,6 @@ print "ERROR!!! Cannot change directory to: $name ($dir) because $!"; return -1; } -return 0; } #~ @@ -783,7 +782,7 @@ sub TestDirectory { my $SubDir = shift; - ChangeDir( "projects/llvm-test/$SubDir", "Programs Test Subdirectory" ) || return ("", ""); + ChangeDir( "$BuildDir/llvm/projects/llvm-test/$SubDir", "Programs Test Subdirectory" ) || return ("", ""); my $ProgramTestLog = "$Prefix-$SubDir-ProgramTest.txt"; ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: nightlytest-serverside/machine.php
Changes in directory nightlytest-serverside: machine.php updated: 1.4 -> 1.5 --- Log message: My last commit tried to fix the issue where the coloring of the machine's test table could be bsaed on a comparison to a failed test, and thus bogus data. However that fix didnt work. This one fixes my previous error and hopefully ignores tests that have a failed build. --- Diffs of the changes: (+138 -134) machine.php | 272 ++-- 1 files changed, 138 insertions(+), 134 deletions(-) Index: nightlytest-serverside/machine.php diff -u nightlytest-serverside/machine.php:1.4 nightlytest-serverside/machine.php:1.5 --- nightlytest-serverside/machine.php:1.4 Thu Jul 27 14:17:49 2006 +++ nightlytest-serverside/machine.php Thu Jul 27 14:29:35 2006 @@ -183,17 +183,15 @@ $line=1; $row = mysql_fetch_array($result); $x=0; -while($x<10 && $prev_row = mysql_fetch_array($result)){ -$warnings =""; -if(strcmp($row['warnings'],"")!=0){ - $warnings=$row['warnings']; -} +while($x<10 && $prev_row = mysql_fetch_array($result)){ + $warnings =""; + if(strcmp($row['warnings'],"")!=0){ + $warnings=$row['warnings']; + } + $num_warnings = preg_match_all('/warning/', $warnings, $match); -$num_warnings = preg_match_all('/warning/', $warnings, $match); - - if(strpos($row['buildstatus'],"OK")===FALSE){ print "\t\n"; $build_ok=0; @@ -207,165 +205,171 @@ $build_ok=1; } $line++; + + #this test is to test whether the test that precedes this failed, + #thus the test would have bogus data and we shouldnt color based on its + #results + if(strpos($prev_row['buildstatus'],"OK")===false){ + $prev_build_ok=0; + } + else{ + $prev_build_ok=1; + } - /* Date of test */ + /* Date of test */ - echo ""; - $date = preg_replace("/\s\d\d:\d\d:\d\d/","",$row['added']); - echo "$date"; - echo ""; + echo ""; + $date = preg_replace("/\s\d\d:\d\d:\d\d/","",$row['added']); + echo "$date"; + echo ""; - /* Get CVS Wall Time */ + /* Get CVS Wall Time */ - - echo ""; - echo $row['getcvstime_wall']; - echo ""; - - /* Configure Time CPU */ - if($prev_row['configuretime_cpu']!=0 && $build_ok){ - $delta = round(( ($prev_row['configuretime_cpu'] - $row['configuretime_cpu']) / $prev_row['configuretime_cpu'] ) * 100,2); - if ($delta > 20){ - print "{$row['configuretime_cpu']}"; - } - else if ($delta < -20){ - print "{$row['configuretime_cpu']}"; - } - else{ - print "{$row['configuretime_cpu']}"; - } + + echo ""; + echo $row['getcvstime_wall']; + echo ""; + + /* Configure Time CPU */ + if($prev_row['configuretime_cpu']!=0 && $build_ok && $prev_build_ok){ + $delta = round(( ($prev_row['configuretime_cpu'] - $row['configuretime_cpu']) / $prev_row['configuretime_cpu'] ) * 100,2); + if ($delta > 20){ + print "{$row['configuretime_cpu']}"; + } + else if ($delta < -20){ + print "{$row['configuretime_cpu']}"; } else{ print "{$row['configuretime_cpu']}"; } + } + else{ + print "{$row['configuretime_cpu']}"; + } + + /* Configure Time Wall */ - /* Configure Time Wall */ + echo ""; + echo $row['configuretime_wall']; + echo ""; - echo ""; - echo $row['configuretime_wall']; - echo ""; - - /* Build Time CPU */ - - if($prev_row['buildtime_cpu']!=0 && $build_ok){ - $delta = round(( ($prev_row['buildtime_cpu'] - $row['buildtime_cpu']) / $prev_row['buildtime_cpu'] ) * 100,2); - if ($delta > 10){ - print "{$row['buildtime_cpu']}"; - } - else if ($delta < -10){ - print "{$row['buildtime_cpu']}"; - } - else{ - print "{$row['bu
[llvm-commits] CVS: llvm/utils/TableGen/DAGISelEmitter.cpp
Changes in directory llvm/utils/TableGen: DAGISelEmitter.cpp updated: 1.227 -> 1.228 --- Log message: Remove dead code. --- Diffs of the changes: (+0 -29) DAGISelEmitter.cpp | 29 - 1 files changed, 29 deletions(-) Index: llvm/utils/TableGen/DAGISelEmitter.cpp diff -u llvm/utils/TableGen/DAGISelEmitter.cpp:1.227 llvm/utils/TableGen/DAGISelEmitter.cpp:1.228 --- llvm/utils/TableGen/DAGISelEmitter.cpp:1.227Thu Jul 27 01:36:11 2006 +++ llvm/utils/TableGen/DAGISelEmitter.cpp Thu Jul 27 14:59:34 2006 @@ -3644,35 +3644,6 @@ OS << "std::set InFlightSet;\n"; OS << "\n"; - OS << "static void findNonImmUse(SDNode* Use, SDNode* Def, bool &found, " - << "std::set &Visited) {\n"; - OS << " if (found || !Visited.insert(Use).second) return;\n"; - OS << " for (unsigned i = 0, e = Use->getNumOperands(); i != e; ++i) {\n"; - OS << "SDNode *N = Use->getOperand(i).Val;\n"; - OS << "if (N != Def) {\n"; - OS << " findNonImmUse(N, Def, found, Visited);\n"; - OS << "} else {\n"; - OS << " found = true;\n"; - OS << " break;\n"; - OS << "}\n"; - OS << " }\n"; - OS << "}\n"; - - OS << "\n"; - OS << "static bool isNonImmUse(SDNode* Use, SDNode* Def) {\n"; - OS << " std::set Visited;\n"; - OS << " bool found = false;\n"; - OS << " for (unsigned i = 0, e = Use->getNumOperands(); i != e; ++i) {\n"; - OS << "SDNode *N = Use->getOperand(i).Val;\n"; - OS << "if (N != Def) {\n"; - OS << " findNonImmUse(N, Def, found, Visited);\n"; - OS << " if (found) break;\n"; - OS << "}\n"; - OS << " }\n"; - OS << " return found;\n"; - OS << "}\n"; - - OS << "\n"; OS << "// AddHandleReplacement - Note the pending replacement node for a\n" << "// handle node in ReplaceMap.\n"; OS << "void AddHandleReplacement(SDNode *H, unsigned HNum, SDNode *R, " ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/include/llvm/PassSupport.h
Changes in directory llvm/include/llvm: PassSupport.h updated: 1.24 -> 1.25 --- Log message: Working toward registration of register allocators. --- Diffs of the changes: (+70 -0) PassSupport.h | 70 ++ 1 files changed, 70 insertions(+) Index: llvm/include/llvm/PassSupport.h diff -u llvm/include/llvm/PassSupport.h:1.24 llvm/include/llvm/PassSupport.h:1.25 --- llvm/include/llvm/PassSupport.h:1.24Wed Jul 26 11:18:00 2006 +++ llvm/include/llvm/PassSupport.h Thu Jul 27 15:04:59 2006 @@ -368,6 +368,76 @@ virtual void passEnumerate(const PassInfo *P) {} }; + +//===-===// +/// +/// RegisterRegAlloc class - Track the registration of register allocators. +/// +class RegisterRegAlloc { + +public: + + typedef FunctionPass *(*FunctionPassCtor)(); + +private: + + static RegisterRegAlloc *List;// Linked list of register allocators. + + RegisterRegAlloc *Next; // Next allocation scheme in list. + const char *Name; // Name of register allocator. + const char *Description; // Description string. + FunctionPassCtor Ctor;// Function to construct register +// allocator pass. +public: + + RegisterRegAlloc(const char *N, const char *D, FunctionPassCtor C) + : Name(N) + , Description(D) + , Ctor(C) { +Add(); + } + + ~RegisterRegAlloc() { +Remove(); + } + + + // Accessors + const char *getName()const { return Name; } + const char *getDescription() const { return Description; } + FunctionPassCtor getCtor() const { return Ctor; } + + + /// Add - Adds a register allocator to the registration list. + /// + void Add() { +Next = List; +List = this; + } + + + /// Remove - Removes a register allocator from the registration list. + /// + void Remove() { +for (RegisterRegAlloc **RA = &List; *RA; RA = &(*RA)->Next) { + if (*RA == this) { +*RA = Next; +break; + } +} + } + + + /// Find - Finds a register allocator in registration list. + /// + static FunctionPassCtor Find(const char *N); + +#ifndef NDEBUG + static void print(); +#endif +}; + + } // End llvm namespace #endif ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/CodeGen/Passes.cpp
Changes in directory llvm/lib/CodeGen: Passes.cpp updated: 1.17 -> 1.18 --- Log message: Working toward registration of register allocators. --- Diffs of the changes: (+47 -11) Passes.cpp | 58 +++--- 1 files changed, 47 insertions(+), 11 deletions(-) Index: llvm/lib/CodeGen/Passes.cpp diff -u llvm/lib/CodeGen/Passes.cpp:1.17 llvm/lib/CodeGen/Passes.cpp:1.18 --- llvm/lib/CodeGen/Passes.cpp:1.17Thu Jul 20 12:28:38 2006 +++ llvm/lib/CodeGen/Passes.cpp Thu Jul 27 15:05:00 2006 @@ -13,6 +13,7 @@ //===-===// #include "llvm/CodeGen/Passes.h" +#include "llvm/Pass.h" #include "llvm/Support/CommandLine.h" #include using namespace llvm; @@ -33,17 +34,52 @@ cl::init(linearscan)); } -FunctionPass *llvm::createRegisterAllocator() { - switch (RegAlloc) { - default: -std::cerr << "no register allocator selected"; -abort(); - case simple: -return createSimpleRegisterAllocator(); - case local: -return createLocalRegisterAllocator(); - case linearscan: -return createLinearScanRegisterAllocator(); + +RegisterRegAlloc *RegisterRegAlloc::List = NULL; + +/// Find - Finds a register allocator in registration list. +/// +RegisterRegAlloc::FunctionPassCtor RegisterRegAlloc::Find(const char *N) { + for (RegisterRegAlloc *RA = List; RA; RA = RA->Next) { +if (strcmp(N, RA->Name) == 0) return RA->Ctor; } + return NULL; } + +#ifndef NDEBUG +void RegisterRegAlloc::print() { + for (RegisterRegAlloc *RA = List; RA; RA = RA->Next) { +std::cerr << "RegAlloc:" << RA->Name << "\n"; + } +} +#endif + + +static RegisterRegAlloc + simpleRegAlloc("simple", " simple register allocator", + createSimpleRegisterAllocator); + +static RegisterRegAlloc + localRegAlloc("local", " local register allocator", +createLocalRegisterAllocator); + +static RegisterRegAlloc + linearscanRegAlloc("linearscan", "linear scan register allocator", + createLinearScanRegisterAllocator); + + +FunctionPass *llvm::createRegisterAllocator() { + const char *Names[] = {"simple", "local", "linearscan"}; + const char *DefltName = "linearscan"; + + RegisterRegAlloc::FunctionPassCtor Ctor = +RegisterRegAlloc::Find(Names[RegAlloc]); + if (!Ctor) Ctor = RegisterRegAlloc::Find(DefltName); + + assert(Ctor && "No register allocator found"); + + return Ctor(); +} + + ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/utils/NewNightlyTest.pl
Changes in directory llvm/utils: NewNightlyTest.pl updated: 1.32 -> 1.33 --- Log message: ChangeDir now returns the correct value --- Diffs of the changes: (+2 -1) NewNightlyTest.pl |3 ++- 1 files changed, 2 insertions(+), 1 deletion(-) Index: llvm/utils/NewNightlyTest.pl diff -u llvm/utils/NewNightlyTest.pl:1.32 llvm/utils/NewNightlyTest.pl:1.33 --- llvm/utils/NewNightlyTest.pl:1.32 Thu Jul 27 14:22:06 2006 +++ llvm/utils/NewNightlyTest.plThu Jul 27 15:21:26 2006 @@ -305,8 +305,9 @@ $result = chdir($dir); if(!$result){ print "ERROR!!! Cannot change directory to: $name ($dir) because $!"; - return -1; + return false; } +return true; } #~ ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/utils/NewNightlyTest.pl
Changes in directory llvm/utils: NewNightlyTest.pl updated: 1.33 -> 1.34 --- Log message: Removed some unneccesary print statemnts --- Diffs of the changes: (+0 -1) NewNightlyTest.pl |1 - 1 files changed, 1 deletion(-) Index: llvm/utils/NewNightlyTest.pl diff -u llvm/utils/NewNightlyTest.pl:1.33 llvm/utils/NewNightlyTest.pl:1.34 --- llvm/utils/NewNightlyTest.pl:1.33 Thu Jul 27 15:21:26 2006 +++ llvm/utils/NewNightlyTest.plThu Jul 27 16:01:39 2006 @@ -1043,7 +1043,6 @@ } else{ $gcc_version_long = `gcc --version`; - print "gcc --version\n"; } @GCC_VERSION = split '\n', $gcc_version_long; my $gcc_version = $GCC_VERSION[0]; ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: nightlytest-serverside/index.php
Changes in directory nightlytest-serverside: index.php updated: 1.7 -> 1.8 --- Log message: Changed date added column to read time submitted --- Diffs of the changes: (+1 -1) index.php |2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: nightlytest-serverside/index.php diff -u nightlytest-serverside/index.php:1.7 nightlytest-serverside/index.php:1.8 --- nightlytest-serverside/index.php:1.7Mon Jul 10 13:13:04 2006 +++ nightlytest-serverside/index.phpThu Jul 27 16:02:42 2006 @@ -29,7 +29,7 @@ print "Tests submitted in last 24 hours:"; print "\n"; print "\t"; -print "\t\tDate added\n"; +print "\t\tTime submitted\n"; print "\t\tMachine name\n"; print "\t\tBuild status\n"; print "\t\t# of expected test passes\n"; ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: nightlytest-serverside/NightlyTestAccept.cgi
Changes in directory nightlytest-serverside: NightlyTestAccept.cgi updated: 1.34 -> 1.35 --- Log message: the file size information shoudl be submitted to the database successfully --- Diffs of the changes: (+3 -7) NightlyTestAccept.cgi | 10 +++--- 1 files changed, 3 insertions(+), 7 deletions(-) Index: nightlytest-serverside/NightlyTestAccept.cgi diff -u nightlytest-serverside/NightlyTestAccept.cgi:1.34 nightlytest-serverside/NightlyTestAccept.cgi:1.35 --- nightlytest-serverside/NightlyTestAccept.cgi:1.34 Wed Jul 26 20:22:51 2006 +++ nightlytest-serverside/NightlyTestAccept.cgiThu Jul 27 16:12:36 2006 @@ -373,7 +373,7 @@ #~~ sub AddFile{ #$file, $size, $night, $type $query = "INSERT INTO file (file, size, night, type) VALUES (\"$_[0]\", ". -"\"$_[1]\", \"$_[2]\", $_[3])"; +"\"$_[1]\", \"$_[2]\", \"$_[3]\")"; my $d = $dbh->prepare($query); $d->execute; } @@ -448,10 +448,6 @@ $external_tests = "" unless $external_tests; my @EXTERNAL_TESTS = split $spliton, $external_tests; -my $olden_tests=param('olden_tests'); - $olden_tests="" unless $olden_tests; -my @OLDEN_TESTS = split $spliton, $singlesource_tests; - my $o_file_size = param('o_file_sizes'); $o_file_size="" unless $o_file_size; chomp($o_file_size); @@ -643,12 +639,12 @@ } foreach $x (@O_FILE_SIZE){ - $x =~ m/(.+)\s+(.+)\s+(.+)/gi; + $x =~ m/(.+)\s+(.+)\s+(.+)/; AddFile $2, $1, $night_id, $3; } foreach $x (@A_FILE_SIZE){ - $x =~ m/(.+)\s+(.+)\s+(.+)/gi; + $x =~ m/(.+)\s+(.+)\s+(.+)/; AddFile $2, $1, $night_id, $3; } ___ 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/X86ISelDAGToDAG.cpp
Changes in directory llvm/lib/Target/X86: X86ISelDAGToDAG.cpp updated: 1.76 -> 1.77 --- Log message: isNonImmUse is replaced by IsFoldableBy --- Diffs of the changes: (+1 -1) X86ISelDAGToDAG.cpp |2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/lib/Target/X86/X86ISelDAGToDAG.cpp diff -u llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.76 llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.77 --- llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.76Thu Jul 27 11:44:36 2006 +++ llvm/lib/Target/X86/X86ISelDAGToDAG.cpp Thu Jul 27 16:19:10 2006 @@ -640,7 +640,7 @@ if (N.getOpcode() == ISD::LOAD && N.hasOneUse() && !CodeGenMap.count(N.getValue(0)) && - (P.getNumOperands() == 1 || !isNonImmUse(P.Val, N.Val))) + !IsFoldableBy(N.Val, P.Val)) return SelectAddr(N.getOperand(1), Base, Scale, Index, Disp); return false; } ___ 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/X86ISelDAGToDAG.cpp
Changes in directory llvm/lib/Target/X86: X86ISelDAGToDAG.cpp updated: 1.77 -> 1.78 --- Log message: Calculate the portion of reachbility matrix on demand. --- Diffs of the changes: (+42 -11) X86ISelDAGToDAG.cpp | 53 +--- 1 files changed, 42 insertions(+), 11 deletions(-) Index: llvm/lib/Target/X86/X86ISelDAGToDAG.cpp diff -u llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.77 llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.78 --- llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.77Thu Jul 27 16:19:10 2006 +++ llvm/lib/Target/X86/X86ISelDAGToDAG.cpp Thu Jul 27 17:10:00 2006 @@ -124,7 +124,7 @@ private: void DetermineTopologicalOrdering(); -void DeterminReachibility(); +void DeterminReachibility(SDNode *f, SDNode *t); void Select(SDOperand &Result, SDOperand N); @@ -186,7 +186,15 @@ /// TopOrder - Topological ordering of all nodes in the DAG. /// -std::vector TopOrder; +SDNode* *TopOrder; + +/// IdToOrder - Node id to topological order map. +/// +unsigned *IdToOrder; + +/// RMRange - The range of reachibility information available for the +/// particular source node. +unsigned *RMRange; /// ReachibilityMatrix - A N x N matrix representing all pairs reachibility /// information. One bit per potential edge. @@ -221,8 +229,7 @@ // /[X] // | ^ // [U]| - if (!ReachibilityMatrix) -DeterminReachibility(); + DeterminReachibility(U, N); assert(isReachable(U, N) && "Attempting to fold a non-operand node?"); for (SDNode::op_iterator I = U->op_begin(), E = U->op_end(); I != E; ++I) { SDNode *P = I->Val; @@ -236,7 +243,11 @@ /// in the DAG. void X86DAGToDAGISel::DetermineTopologicalOrdering() { DAGSize = CurDAG->AssignNodeIds(); - TopOrder.reserve(DAGSize); + TopOrder = new SDNode*[DAGSize]; + IdToOrder = new unsigned[DAGSize]; + memset(IdToOrder, 0, DAGSize * sizeof(unsigned)); + RMRange = new unsigned[DAGSize]; + memset(RMRange, 0, DAGSize * sizeof(unsigned)); std::vector InDegree(DAGSize); std::list Sources; @@ -254,6 +265,7 @@ SDNode *N = Sources.front(); Sources.pop_front(); TopOrder[Order] = N; +IdToOrder[N->getNodeId()] = Order; Order++; for (SDNode::op_iterator I = N->op_begin(), E = N->op_end(); I != E; ++I) { SDNode *P = I->Val; @@ -266,19 +278,31 @@ } } -void X86DAGToDAGISel::DeterminReachibility() { - DetermineTopologicalOrdering(); - ReachibilityMatrix = new unsigned char[DAGSize * DAGSize]; - memset(ReachibilityMatrix, 0, DAGSize * DAGSize * sizeof(unsigned char)); +void X86DAGToDAGISel::DeterminReachibility(SDNode *f, SDNode *t) { + if (!ReachibilityMatrix) { +DetermineTopologicalOrdering(); +ReachibilityMatrix = new unsigned char[DAGSize * DAGSize]; +memset(ReachibilityMatrix, 0, DAGSize * DAGSize * sizeof(unsigned char)); + } - for (unsigned i = 0; i < DAGSize; ++i) { + int Idf = f->getNodeId(); + int Idt = t->getNodeId(); + unsigned Orderf = IdToOrder[Idf]; + unsigned Ordert = IdToOrder[Idt]; + unsigned Range = RMRange[Idf]; + if (Range >= Ordert) +return; + if (Range < Orderf) +Range = Orderf; + + for (unsigned i = Range; i < Ordert; ++i) { SDNode *N = TopOrder[i]; setReachable(N, N); // If N is a leaf node, there is nothing more to do. if (N->getNumOperands() == 0) continue; -for (unsigned i2 = 0; ; ++i2) { +for (unsigned i2 = Orderf; ; ++i2) { SDNode *M = TopOrder[i2]; if (isReachable(M, N)) { // Update reachibility from M to N's operands. @@ -288,6 +312,8 @@ if (M == N) break; } } + + RMRange[Idf] = Ordert; } /// InstructionSelectBasicBlock - This callback is invoked by SelectionDAGISel @@ -308,7 +334,12 @@ #endif if (ReachibilityMatrix) { delete[] ReachibilityMatrix; +delete[] TopOrder; +delete[] IdToOrder; +delete[] RMRange; ReachibilityMatrix = NULL; +TopOrder = NULL; +IdToOrder = RMRange = NULL; } CodeGenMap.clear(); HandleMap.clear(); ___ 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/X86ISelDAGToDAG.cpp
Changes in directory llvm/lib/Target/X86: X86ISelDAGToDAG.cpp updated: 1.78 -> 1.79 --- Log message: Allocating too large an array for ReachibilityMatrix. --- Diffs of the changes: (+5 -2) X86ISelDAGToDAG.cpp |7 +-- 1 files changed, 5 insertions(+), 2 deletions(-) Index: llvm/lib/Target/X86/X86ISelDAGToDAG.cpp diff -u llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.78 llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.79 --- llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.78Thu Jul 27 17:10:00 2006 +++ llvm/lib/Target/X86/X86ISelDAGToDAG.cpp Thu Jul 27 17:35:40 2006 @@ -281,8 +281,11 @@ void X86DAGToDAGISel::DeterminReachibility(SDNode *f, SDNode *t) { if (!ReachibilityMatrix) { DetermineTopologicalOrdering(); -ReachibilityMatrix = new unsigned char[DAGSize * DAGSize]; -memset(ReachibilityMatrix, 0, DAGSize * DAGSize * sizeof(unsigned char)); +unsigned RMSize = DAGSize * DAGSize / 8; +if ((DAGSize * DAGSize) % 8) + RMSize++; +ReachibilityMatrix = new unsigned char[RMSize]; +memset(ReachibilityMatrix, 0, RMSize); } int Idf = f->getNodeId(); ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/utils/GenLibDeps.pl
Changes in directory llvm/utils: GenLibDeps.pl updated: 1.9 -> 1.10 --- Log message: Changes to support cross-compiling LLVM. The GenLibDeps.pl script needs to have a compile-host version of "nm", not build-host. In order to effect this we must use autoconf to determine the correct "nm" to use and propagate that through the makefiles, through llvm-config and finally to GenLibDeps.pl as an optional argument. Patch contributed by Anton Korobeynikov. Thanks! --- Diffs of the changes: (+6 -3) GenLibDeps.pl |9 ++--- 1 files changed, 6 insertions(+), 3 deletions(-) Index: llvm/utils/GenLibDeps.pl diff -u llvm/utils/GenLibDeps.pl:1.9 llvm/utils/GenLibDeps.pl:1.10 --- llvm/utils/GenLibDeps.pl:1.9Tue Jul 25 14:12:06 2006 +++ llvm/utils/GenLibDeps.plThu Jul 27 18:00:30 2006 @@ -6,7 +6,7 @@ # libraries. The output of this script should periodically replace # the similar content in the UsingLibraries.html document. # -# Syntax: GenLibDeps.pl [-flat] +# Syntax: GenLibDeps.pl [-flat] [path_to_nm_binary] # # Parse arguments... @@ -24,6 +24,7 @@ # Give first option a name. my $Directory = $ARGV[0]; +my $nmPath = $ARGV[1]; # Find the "dot" program my $DotPath=""; @@ -32,8 +33,10 @@ die "Can't find 'dot'" if (! -x "$DotPath"); } -chomp(my $nmPath=`which nm`); -die "Can't find 'nm'" if (! -x "$nmPath"); +if ($nmPath eq "") { +chomp($nmPath=`which nm`); +die "Can't find 'nm'" if (! -x "$nmPath"); +} # Open the directory and read its contents, sorting by name and differentiating # by whether its a library (.a) or an object file (.o) ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/tools/llvm-config/Makefile llvm-config.in.in
Changes in directory llvm/tools/llvm-config: Makefile updated: 1.12 -> 1.13 llvm-config.in.in updated: 1.18 -> 1.19 --- Log message: Changes to support cross-compiling LLVM. The GenLibDeps.pl script needs to have a compile-host version of "nm", not build-host. In order to effect this we must use autoconf to determine the correct "nm" to use and propagate that through the makefiles, through llvm-config and finally to GenLibDeps.pl as an optional argument. Patch contributed by Anton Korobeynikov. Thanks! --- Diffs of the changes: (+3 -2) Makefile |2 +- llvm-config.in.in |3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) Index: llvm/tools/llvm-config/Makefile diff -u llvm/tools/llvm-config/Makefile:1.12 llvm/tools/llvm-config/Makefile:1.13 --- llvm/tools/llvm-config/Makefile:1.12Wed Jul 26 12:10:54 2006 +++ llvm/tools/llvm-config/Makefile Thu Jul 27 18:00:30 2006 @@ -33,7 +33,7 @@ $(LibDeps): $(GenLibDeps) $(LibDir) $(wildcard $(LibDir)/*.a $(LibDir)/*.o) $(Echo) "Regenerating LibDeps.txt" - $(Verb) $(GenLibDeps) -flat $(LibDir) | sort > $(LibDeps) + $(Verb) $(GenLibDeps) -flat $(LibDir) $(NM_PATH) | sort > $(LibDeps) # Find all the cyclic dependencies between various LLVM libraries, so we # don't have to process them at runtime. Index: llvm/tools/llvm-config/llvm-config.in.in diff -u llvm/tools/llvm-config/llvm-config.in.in:1.18 llvm/tools/llvm-config/llvm-config.in.in:1.19 --- llvm/tools/llvm-config/llvm-config.in.in:1.18 Tue Jun 6 19:43:18 2006 +++ llvm/tools/llvm-config/llvm-config.in.inThu Jul 27 18:00:30 2006 @@ -47,6 +47,7 @@ # begin Makefile values my $CXXFLAGS= [EMAIL PROTECTED]@}; my $LDFLAGS = [EMAIL PROTECTED]@}; +my $SYSTEM_LIBS = [EMAIL PROTECTED]@}; my $LLVM_BUILDMODE = [EMAIL PROTECTED]@}; # end Makefile values @@ -109,7 +110,7 @@ } elsif ($arg eq "--cxxflags") { $has_opt = 1; print "-I$INCLUDEDIR $CXXFLAGS\n"; } elsif ($arg eq "--ldflags") { -$has_opt = 1; print "-L$LIBDIR $LDFLAGS\n"; +$has_opt = 1; print "-L$LIBDIR $LDFLAGS $SYSTEM_LIBS\n"; } elsif ($arg eq "--libs") { $has_opt = 1; $want_libs = 1; } elsif ($arg eq "--libnames") { ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/tools/analyze/Makefile
Changes in directory llvm/tools/analyze: Makefile updated: 1.32 -> 1.33 --- Log message: Changes to support cross-compiling LLVM. The GenLibDeps.pl script needs to have a compile-host version of "nm", not build-host. In order to effect this we must use autoconf to determine the correct "nm" to use and propagate that through the makefiles, through llvm-config and finally to GenLibDeps.pl as an optional argument. Patch contributed by Anton Korobeynikov. Thanks! --- Diffs of the changes: (+2 -0) Makefile |2 ++ 1 files changed, 2 insertions(+) Index: llvm/tools/analyze/Makefile diff -u llvm/tools/analyze/Makefile:1.32 llvm/tools/analyze/Makefile:1.33 --- llvm/tools/analyze/Makefile:1.32Thu Jul 6 19:46:18 2006 +++ llvm/tools/analyze/Makefile Thu Jul 27 18:00:30 2006 @@ -8,6 +8,8 @@ ##===--===## LEVEL = ../.. TOOLNAME = analyze +#TOOLLINKOPTS = $(LINKALL) +#TOOLLINKOPTSB = $(NOLINKALL) USEDLIBS = LLVMAsmParser.a LLVMBCReader.a LLVMAnalysis.a LLVMipa.a \ LLVMDataStructure \ LLVMScalarOpts.a LLVMTransforms.a LLVMTarget.a LLVMScalarOpts.a \ ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/autoconf/configure.ac
Changes in directory llvm/autoconf: configure.ac updated: 1.239 -> 1.240 --- Log message: Changes to support cross-compiling LLVM. The GenLibDeps.pl script needs to have a compile-host version of "nm", not build-host. In order to effect this we must use autoconf to determine the correct "nm" to use and propagate that through the makefiles, through llvm-config and finally to GenLibDeps.pl as an optional argument. Patch contributed by Anton Korobeynikov. Thanks! --- Diffs of the changes: (+3 -0) configure.ac |3 +++ 1 files changed, 3 insertions(+) Index: llvm/autoconf/configure.ac diff -u llvm/autoconf/configure.ac:1.239 llvm/autoconf/configure.ac:1.240 --- llvm/autoconf/configure.ac:1.239Wed Jul 26 23:58:33 2006 +++ llvm/autoconf/configure.ac Thu Jul 27 18:00:30 2006 @@ -357,6 +357,9 @@ AC_PROG_FLEX AC_PROG_BISON +AC_PROG_NM +AC_SUBST(NM) + dnl Check for the tools that the makefiles require AC_CHECK_GNU_MAKE AC_PROG_LN_S ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/Makefile.config.in configure
Changes in directory llvm: Makefile.config.in updated: 1.60 -> 1.61 configure updated: 1.241 -> 1.242 --- Log message: Changes to support cross-compiling LLVM. The GenLibDeps.pl script needs to have a compile-host version of "nm", not build-host. In order to effect this we must use autoconf to determine the correct "nm" to use and propagate that through the makefiles, through llvm-config and finally to GenLibDeps.pl as an optional argument. Patch contributed by Anton Korobeynikov. Thanks! --- Diffs of the changes: (+91 -85) Makefile.config.in |3 configure | 173 ++--- 2 files changed, 91 insertions(+), 85 deletions(-) Index: llvm/Makefile.config.in diff -u llvm/Makefile.config.in:1.60 llvm/Makefile.config.in:1.61 --- llvm/Makefile.config.in:1.60Wed Jul 26 16:14:55 2006 +++ llvm/Makefile.config.in Thu Jul 27 18:00:30 2006 @@ -129,6 +129,9 @@ # Path to the library archiver program. AR_PATH = @AR@ +# Path to the nm program +NM_PATH = @NM@ + # The pathnames of the programs we require to build BISON := @BISON@ CMP:= @CMP@ Index: llvm/configure diff -u llvm/configure:1.241 llvm/configure:1.242 --- llvm/configure:1.241Wed Jul 26 16:14:55 2006 +++ llvm/configure Thu Jul 27 18:00:30 2006 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.59 for llvm 1.8cvs. +# Generated by GNU Autoconf 2.59 for llvm 1.9cvs. # # Report bugs to <[EMAIL PROTECTED]>. # @@ -425,8 +425,8 @@ # Identity of this package. PACKAGE_NAME='llvm' PACKAGE_TARNAME='-llvm-' -PACKAGE_VERSION='1.8cvs' -PACKAGE_STRING='llvm 1.8cvs' +PACKAGE_VERSION='1.9cvs' +PACKAGE_STRING='llvm 1.9cvs' PACKAGE_BUGREPORT='[EMAIL PROTECTED]' ac_unique_file="lib/VMCore/Module.cpp" @@ -477,7 +477,7 @@ # include #endif" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS LLVM_COPYRIGHT subdirs build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os OS LLVM_ON_UNIX LLVM_ON_WIN32 ARCH ENDIAN CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT LLVM_CROSS_COMPILING BUILD_CC BUILD_EXEEXT CVSBUILD ENABLE_OPTIMIZED DISABLE_ASSERTIONS DEBUG_RUNTIME JIT TARGET_HAS_JIT ENABLE_DOXYGEN ENABLE_THREADS TARGETS_TO_BUILD EXTRA_OPTIONS CPP CXX CXXFLAGS ac_ct_CXX LEX LEXLIB LEX_OUTPUT_ROOT FLEX YACC BISON ifGNUmake LN_S CMP CP DATE FIND GREP MKDIR MV RANLIB ac_ct_RANLIB RM SED TAR GRAPHVIZ DOT GV DOTTY PERL HAVE_PERL INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA BZIP2! DOXYGEN ETAGS GROFF GZIP POD2HTML POD2MAN RUNTEST TCLSH ZIP EGREP INSTALL_LTDL_TRUE INSTALL_LTDL_FALSE CONVENIENCE_LTDL_TRUE CONVENIENCE_LTDL_FALSE LIBADD_DL ECHO AR ac_ct_AR STRIP ac_ct_STRIP CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL ETAGSFLAGS LLVMGCC LLVMGXX ALLOCA MMAP_FILE LLVMCC1 LLVMCC1PLUS LLVMGCCDIR LLVMGCC_VERSION LLVMGCC_MAJVERS SHLIBEXT LLVM_PREFIX LLVM_BINDIR LLVM_LIBDIR LLVM_DATADIR LLVM_DOCSDIR LLVM_ETCDIR LLVM_INCLUDEDIR LLVM_INFODIR LLVM_MANDIR LLVM_CONFIGTIME LIBOBJS LTLIBOBJS' +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS LLVM_COPYRIGHT subdirs build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os OS LLVM_ON_UNIX LLVM_ON_WIN32 ARCH ENDIAN CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT LLVM_CROSS_COMPILING BUILD_CC BUILD_EXEEXT CVSBUILD ENABLE_OPTIMIZED DISABLE_ASSERTIONS DEBUG_RUNTIME JIT TARGET_HAS_JIT ENABLE_DOXYGEN ENABLE_THREADS TARGETS_TO_BUILD EXTRA_OPTIONS CPP CXX CXXFLAGS ac_ct_CXX LEX LEXLIB LEX_OUTPUT_ROOT FLEX YACC BISON NM ifGNUmake LN_S CMP CP DATE FIND GREP MKDIR MV RANLIB ac_ct_RANLIB RM SED TAR GRAPHVIZ DOT GV DOTTY PERL HAVE_PERL INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA BZ! IP2 DOXYGEN ETAGS GROFF GZIP POD2HTML POD2MAN RUNTEST TCLSH ZIP EGREP INSTALL_LTDL_TRUE INSTALL_LTDL_FALSE CONVENIENCE_LTDL_TRUE CONVENIENCE_LTDL_FALSE LIBADD_DL ECHO AR ac_ct_AR STRIP ac_ct_STRIP CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL ETAGSFLAGS LLVMGCC LLVMGXX ALLOCA MMAP_FILE LLVMCC1 LLVMCC1PLUS LLVMGCCDIR LLVMGCC_VERSION LLVMGCC_MAJVERS SHLIBEXT LLVM_PREFIX LLVM_BINDIR LLVM_LIBDIR LLVM_DATADIR LLVM_DOCSDIR LLVM_ETCDIR LLVM_INCLUDEDIR LLVM_INFODIR LLVM_MANDIR LLVM_CONFIGTIME LIBOBJS LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. @@ -966,7 +966,7 @@
[llvm-commits] CVS: llvm/tools/analyze/Makefile
Changes in directory llvm/tools/analyze: Makefile updated: 1.33 -> 1.34 --- Log message: Undo last commit, which was committed accidentally. --- Diffs of the changes: (+0 -2) Makefile |2 -- 1 files changed, 2 deletions(-) Index: llvm/tools/analyze/Makefile diff -u llvm/tools/analyze/Makefile:1.33 llvm/tools/analyze/Makefile:1.34 --- llvm/tools/analyze/Makefile:1.33Thu Jul 27 18:00:30 2006 +++ llvm/tools/analyze/Makefile Thu Jul 27 18:19:00 2006 @@ -8,8 +8,6 @@ ##===--===## LEVEL = ../.. TOOLNAME = analyze -#TOOLLINKOPTS = $(LINKALL) -#TOOLLINKOPTSB = $(NOLINKALL) USEDLIBS = LLVMAsmParser.a LLVMBCReader.a LLVMAnalysis.a LLVMipa.a \ LLVMDataStructure \ LLVMScalarOpts.a LLVMTransforms.a LLVMTarget.a LLVMScalarOpts.a \ ___ 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/X86ISelDAGToDAG.cpp
Changes in directory llvm/lib/Target/X86: X86ISelDAGToDAG.cpp updated: 1.79 -> 1.80 --- Log message: Brain cramp.. --- Diffs of the changes: (+1 -3) X86ISelDAGToDAG.cpp |4 +--- 1 files changed, 1 insertion(+), 3 deletions(-) Index: llvm/lib/Target/X86/X86ISelDAGToDAG.cpp diff -u llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.79 llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.80 --- llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.79Thu Jul 27 17:35:40 2006 +++ llvm/lib/Target/X86/X86ISelDAGToDAG.cpp Thu Jul 27 18:35:40 2006 @@ -281,9 +281,7 @@ void X86DAGToDAGISel::DeterminReachibility(SDNode *f, SDNode *t) { if (!ReachibilityMatrix) { DetermineTopologicalOrdering(); -unsigned RMSize = DAGSize * DAGSize / 8; -if ((DAGSize * DAGSize) % 8) - RMSize++; +unsigned RMSize = (DAGSize * DAGSize + 7) / 8; ReachibilityMatrix = new unsigned char[RMSize]; memset(ReachibilityMatrix, 0, RMSize); } ___ 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/X86ISelDAGToDAG.cpp
Changes in directory llvm/lib/Target/X86: X86ISelDAGToDAG.cpp updated: 1.80 -> 1.81 --- Log message: Another duh. Determine topological order before any target node is added. --- Diffs of the changes: (+13 -13) X86ISelDAGToDAG.cpp | 26 +- 1 files changed, 13 insertions(+), 13 deletions(-) Index: llvm/lib/Target/X86/X86ISelDAGToDAG.cpp diff -u llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.80 llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.81 --- llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.80Thu Jul 27 18:35:40 2006 +++ llvm/lib/Target/X86/X86ISelDAGToDAG.cpp Thu Jul 27 19:10:59 2006 @@ -99,7 +99,8 @@ : SelectionDAGISel(X86Lowering), X86Lowering(*TM.getTargetLowering()), Subtarget(&TM.getSubtarget()), -DAGSize(0), ReachibilityMatrix(NULL) {} +DAGSize(0), TopOrder(NULL), IdToOrder(NULL), +RMRange(NULL), ReachibilityMatrix(NULL) {} virtual bool runOnFunction(Function &Fn) { // Make sure we re-emit a set of the global base reg if necessary @@ -242,7 +243,6 @@ /// DetermineTopologicalOrdering - Determine topological ordering of the nodes /// in the DAG. void X86DAGToDAGISel::DetermineTopologicalOrdering() { - DAGSize = CurDAG->AssignNodeIds(); TopOrder = new SDNode*[DAGSize]; IdToOrder = new unsigned[DAGSize]; memset(IdToOrder, 0, DAGSize * sizeof(unsigned)); @@ -280,7 +280,6 @@ void X86DAGToDAGISel::DeterminReachibility(SDNode *f, SDNode *t) { if (!ReachibilityMatrix) { -DetermineTopologicalOrdering(); unsigned RMSize = (DAGSize * DAGSize + 7) / 8; ReachibilityMatrix = new unsigned char[RMSize]; memset(ReachibilityMatrix, 0, RMSize); @@ -323,25 +322,26 @@ DEBUG(BB->dump()); MachineFunction::iterator FirstMBB = BB; + DAGSize = DAG.AssignNodeIds(); + DetermineTopologicalOrdering(); + // Codegen the basic block. #ifndef NDEBUG DEBUG(std::cerr << "= Instruction selection begins:\n"); Indent = 0; #endif DAG.setRoot(SelectRoot(DAG.getRoot())); - assert(InFlightSet.empty() && "ISel InFlightSet has not been emptied!"); #ifndef NDEBUG DEBUG(std::cerr << "= Instruction selection ends:\n"); #endif - if (ReachibilityMatrix) { -delete[] ReachibilityMatrix; -delete[] TopOrder; -delete[] IdToOrder; -delete[] RMRange; -ReachibilityMatrix = NULL; -TopOrder = NULL; -IdToOrder = RMRange = NULL; - } + + delete[] ReachibilityMatrix; + delete[] TopOrder; + delete[] IdToOrder; + delete[] RMRange; + ReachibilityMatrix = NULL; + TopOrder = NULL; + IdToOrder = RMRange = NULL; CodeGenMap.clear(); HandleMap.clear(); ReplaceMap.clear(); ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/CodeGen/AsmPrinter.cpp
Changes in directory llvm/lib/CodeGen: AsmPrinter.cpp updated: 1.86 -> 1.87 --- Log message: Print empty inline asms as a blank line instead of: # InlineAsm Start # InlineAsm End --- Diffs of the changes: (+8 -1) AsmPrinter.cpp |9 - 1 files changed, 8 insertions(+), 1 deletion(-) Index: llvm/lib/CodeGen/AsmPrinter.cpp diff -u llvm/lib/CodeGen/AsmPrinter.cpp:1.86 llvm/lib/CodeGen/AsmPrinter.cpp:1.87 --- llvm/lib/CodeGen/AsmPrinter.cpp:1.86Thu Jul 27 11:46:58 2006 +++ llvm/lib/CodeGen/AsmPrinter.cpp Thu Jul 27 19:17:20 2006 @@ -615,7 +615,6 @@ /// printInlineAsm - This method formats and prints the specified machine /// instruction that is an inline asm. void AsmPrinter::printInlineAsm(const MachineInstr *MI) const { - O << InlineAsmStart << "\n\t"; unsigned NumOperands = MI->getNumOperands(); // Count the number of register definitions. @@ -628,6 +627,14 @@ // Disassemble the AsmStr, printing out the literal pieces, the operands, etc. const char *AsmStr = MI->getOperand(NumDefs).getSymbolName(); + // If this asmstr is empty, don't bother printing the #APP/#NOAPP markers. + if (AsmStr[0] == 0) { +O << "\n"; // Tab already printed, avoid double indenting next instr. +return; + } + + O << InlineAsmStart << "\n\t"; + // The variant of the current asmprinter: FIXME: change. int AsmPrinterVariant = 0; ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/utils/TableGen/DAGISelEmitter.cpp
Changes in directory llvm/utils/TableGen: DAGISelEmitter.cpp updated: 1.228 -> 1.229 --- Log message: Remove InFlightSet hack. No longer needed. --- Diffs of the changes: (+0 -46) DAGISelEmitter.cpp | 46 -- 1 files changed, 46 deletions(-) Index: llvm/utils/TableGen/DAGISelEmitter.cpp diff -u llvm/utils/TableGen/DAGISelEmitter.cpp:1.228 llvm/utils/TableGen/DAGISelEmitter.cpp:1.229 --- llvm/utils/TableGen/DAGISelEmitter.cpp:1.228Thu Jul 27 14:59:34 2006 +++ llvm/utils/TableGen/DAGISelEmitter.cpp Thu Jul 27 19:43:52 2006 @@ -2106,8 +2106,6 @@ // Names of all the folded nodes which produce chains. std::vector > FoldedChains; std::set Duplicates; - /// These nodes are being marked "in-flight" so they cannot be folded. - std::vector InflightNodes; /// GeneratedCode - This is the buffer that we emit code to. The first bool /// indicates whether this is an exit predicate (something that should be @@ -2231,8 +2229,6 @@ OpNo = 1; if (!isRoot) { const SDNodeInfo &CInfo = ISE.getSDNodeInfo(N->getOperator()); -// Not in flight? -emitCheck("InFlightSet.count(" + RootName + ".Val) == 0"); // Multiple uses of actual result? emitCheck(RootName + ".hasOneUse()"); EmittedUseCheck = true; @@ -2477,24 +2473,9 @@ for (unsigned i = 0; i < NumRes; i++) Code += ", CPTmp" + utostr(i + ResNo); emitCode(Code + ");"); -if (InflightNodes.size()) { - // Remove the in-flight nodes if the ComplexPattern does not match! - emitCode("if (!Match) {"); - for (std::vector::iterator AI = InflightNodes.begin(), - AE = InflightNodes.end(); AI != AE; ++AI) -emitCode(" SelectionDAG::RemoveInFlightSetEntry(InFlightSet, " + - *AI + ".Val);"); - emitCode("}"); -} - emitCheck("Match"); for (unsigned i = 0; i < NumRes; ++i) { - emitCode("SelectionDAG::InsertInFlightSetEntry(InFlightSet, CPTmp" + - utostr(i+ResNo) + ".Val);"); - InflightNodes.push_back("CPTmp" + utostr(i+ResNo)); -} -for (unsigned i = 0; i < NumRes; ++i) { emitDecl("Tmp" + utostr(i+ResNo)); emitCode("Select(Tmp" + utostr(i+ResNo) + ", CPTmp" + utostr(i+ResNo) + ");"); @@ -2608,22 +2589,6 @@ } } - // Make sure these operands which would be selected won't be folded while - // the isel traverses the DAG upward. - for (unsigned i = 0, e = EmitOrder.size(); i != e; ++i) { -TreePatternNode *Child = EmitOrder[i].second; -if (!Child->getName().empty()) { - std::string &Val = VariableMap[Child->getName()]; - assert(!Val.empty() && - "Variable referenced but not defined and not caught earlier!"); - if (Child->isLeaf() && !NodeGetComplexPattern(Child, ISE)) { -emitCode("SelectionDAG::InsertInFlightSetEntry(InFlightSet, " + - Val + ".Val);"); -InflightNodes.push_back(Val); - } -} - } - // Emit all of the operands. std::vector > NumTemps(EmitOrder.size()); for (unsigned i = 0, e = EmitOrder.size(); i != e; ++i) { @@ -2651,14 +2616,6 @@ emitCode(" Select(InFlag, N.getOperand(N.getNumOperands()-1));"); } - if (isRoot) { -// The operands have been selected. Remove them from InFlightSet. -for (std::vector::iterator AI = InflightNodes.begin(), - AE = InflightNodes.end(); AI != AE; ++AI) - emitCode("SelectionDAG::RemoveInFlightSetEntry(InFlightSet, " + - *AI + ".Val);"); - } - unsigned NumResults = Inst.getNumResults(); unsigned ResNo = TmpNo++; if (!isRoot || InputHasChain || NodeHasChain || NodeHasOutFlag || @@ -3639,9 +3596,6 @@ OS << "// Instance var to keep track of mapping of place handle nodes\n" << "// and their replacement nodes.\n"; OS << "std::map ReplaceMap;\n"; - OS << "// Keep track of nodes that are currently being selecte and therefore\n" - << "// should not be folded.\n"; - OS << "std::set InFlightSet;\n"; OS << "\n"; OS << "// AddHandleReplacement - Note the pending replacement node for a\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/SelectionDAG.h
Changes in directory llvm/include/llvm/CodeGen: SelectionDAG.h updated: 1.104 -> 1.105 --- Log message: Remove InFlightSet hack. No longer needed. --- Diffs of the changes: (+0 -10) SelectionDAG.h | 10 -- 1 files changed, 10 deletions(-) Index: llvm/include/llvm/CodeGen/SelectionDAG.h diff -u llvm/include/llvm/CodeGen/SelectionDAG.h:1.104 llvm/include/llvm/CodeGen/SelectionDAG.h:1.105 --- llvm/include/llvm/CodeGen/SelectionDAG.h:1.104 Thu Jul 27 02:36:47 2006 +++ llvm/include/llvm/CodeGen/SelectionDAG.hThu Jul 27 19:44:29 2006 @@ -435,16 +435,6 @@ SDNode *Key, unsigned KeyResNo, SDNode *Element, unsigned ElementResNo); - /// InsertInFlightSetEntry - A helper function to insert a SDNode* to a - /// SDNode* set. This is added to avoid the set insertion operator from being - /// inlined. - static void InsertInFlightSetEntry(std::set &Set, SDNode *N); - - /// RemoveInFlightSetEntry - A helper function to remove a SDNode* from a - /// SDNode* set. This is added to avoid the set removal operator from being - /// inlined. - static void RemoveInFlightSetEntry(std::set &Set, SDNode *N); - private: void RemoveNodeFromCSEMaps(SDNode *N); SDNode *AddNonLeafNodeToCSEMaps(SDNode *N); ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
Changes in directory llvm/lib/CodeGen/SelectionDAG: SelectionDAG.cpp updated: 1.313 -> 1.314 --- Log message: Remove InFlightSet hack. No longer needed. --- Diffs of the changes: (+0 -14) SelectionDAG.cpp | 14 -- 1 files changed, 14 deletions(-) Index: llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp diff -u llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:1.313 llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:1.314 --- llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:1.313Thu Jul 27 02:36:47 2006 +++ llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp Thu Jul 27 19:45:53 2006 @@ -3115,17 +3115,3 @@ Map.insert(std::make_pair(SDOperand(Key, KeyResNo), SDOperand(Element, ElementResNo))); } - -/// InsertInFlightSetEntry - A helper function to insert a SDNode* to a -/// SDNode* set. This is added to avoid the set insertion operator from being -/// inlined. -void SelectionDAG::InsertInFlightSetEntry(std::set &Set, SDNode *N) { - Set.insert(N); -} - -/// RemoveInFlightSetEntry - A helper function to remove a SDNode* from a -/// SDNode* set. This is added to avoid the set removal operator from being -/// inlined. -void SelectionDAG::RemoveInFlightSetEntry(std::set &Set, SDNode *N) { - Set.erase(N); -} ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp
Changes in directory llvm/lib/Target/ARM: ARMISelDAGToDAG.cpp updated: 1.17 -> 1.18 --- Log message: Remove InFlightSet hack. No longer needed. --- Diffs of the changes: (+0 -1) ARMISelDAGToDAG.cpp |1 - 1 files changed, 1 deletion(-) Index: llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp diff -u llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp:1.17 llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp:1.18 --- llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp:1.17Tue Jul 25 15:17:19 2006 +++ llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp Thu Jul 27 19:46:15 2006 @@ -282,7 +282,6 @@ DEBUG(BB->dump()); DAG.setRoot(SelectRoot(DAG.getRoot())); - assert(InFlightSet.empty() && "ISel InFlightSet has not been emptied!"); CodeGenMap.clear(); HandleMap.clear(); ReplaceMap.clear(); ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/Target/Alpha/AlphaISelDAGToDAG.cpp
Changes in directory llvm/lib/Target/Alpha: AlphaISelDAGToDAG.cpp updated: 1.47 -> 1.48 --- Log message: Remove InFlightSet hack. No longer needed. --- Diffs of the changes: (+0 -1) AlphaISelDAGToDAG.cpp |1 - 1 files changed, 1 deletion(-) Index: llvm/lib/Target/Alpha/AlphaISelDAGToDAG.cpp diff -u llvm/lib/Target/Alpha/AlphaISelDAGToDAG.cpp:1.47 llvm/lib/Target/Alpha/AlphaISelDAGToDAG.cpp:1.48 --- llvm/lib/Target/Alpha/AlphaISelDAGToDAG.cpp:1.47Tue Jul 11 12:58:07 2006 +++ llvm/lib/Target/Alpha/AlphaISelDAGToDAG.cpp Thu Jul 27 19:46:29 2006 @@ -172,7 +172,6 @@ // Select target instructions for the DAG. DAG.setRoot(SelectRoot(DAG.getRoot())); - assert(InFlightSet.empty() && "ISel InFlightSet has not been emptied!"); CodeGenMap.clear(); HandleMap.clear(); ReplaceMap.clear(); ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/Target/IA64/IA64ISelDAGToDAG.cpp
Changes in directory llvm/lib/Target/IA64: IA64ISelDAGToDAG.cpp updated: 1.45 -> 1.46 --- Log message: Remove InFlightSet hack. No longer needed. --- Diffs of the changes: (+0 -1) IA64ISelDAGToDAG.cpp |1 - 1 files changed, 1 deletion(-) Index: llvm/lib/Target/IA64/IA64ISelDAGToDAG.cpp diff -u llvm/lib/Target/IA64/IA64ISelDAGToDAG.cpp:1.45 llvm/lib/Target/IA64/IA64ISelDAGToDAG.cpp:1.46 --- llvm/lib/Target/IA64/IA64ISelDAGToDAG.cpp:1.45 Thu Jul 27 01:39:46 2006 +++ llvm/lib/Target/IA64/IA64ISelDAGToDAG.cpp Thu Jul 27 19:46:44 2006 @@ -142,7 +142,6 @@ // Select target instructions for the DAG. DAG.setRoot(SelectRoot(DAG.getRoot())); - assert(InFlightSet.empty() && "ISel InFlightSet has not been emptied!"); CodeGenMap.clear(); HandleMap.clear(); ReplaceMap.clear(); ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
Changes in directory llvm/lib/Target/PowerPC: PPCISelDAGToDAG.cpp updated: 1.198 -> 1.199 --- Log message: Remove InFlightSet hack. No longer needed. --- Diffs of the changes: (+0 -1) PPCISelDAGToDAG.cpp |1 - 1 files changed, 1 deletion(-) Index: llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp diff -u llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp:1.198 llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp:1.199 --- llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp:1.198 Thu Jul 27 01:40:15 2006 +++ llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp Thu Jul 27 19:47:04 2006 @@ -215,7 +215,6 @@ // Select target instructions for the DAG. DAG.setRoot(SelectRoot(DAG.getRoot())); - assert(InFlightSet.empty() && "ISel InFlightSet has not been emptied!"); CodeGenMap.clear(); HandleMap.clear(); ReplaceMap.clear(); ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/Target/Sparc/SparcISelDAGToDAG.cpp
Changes in directory llvm/lib/Target/Sparc: SparcISelDAGToDAG.cpp updated: 1.99 -> 1.100 --- Log message: Remove InFlightSet hack. No longer needed. --- Diffs of the changes: (+0 -1) SparcISelDAGToDAG.cpp |1 - 1 files changed, 1 deletion(-) Index: llvm/lib/Target/Sparc/SparcISelDAGToDAG.cpp diff -u llvm/lib/Target/Sparc/SparcISelDAGToDAG.cpp:1.99 llvm/lib/Target/Sparc/SparcISelDAGToDAG.cpp:1.100 --- llvm/lib/Target/Sparc/SparcISelDAGToDAG.cpp:1.99Thu Jun 15 03:18:06 2006 +++ llvm/lib/Target/Sparc/SparcISelDAGToDAG.cpp Thu Jul 27 19:47:19 2006 @@ -1001,7 +1001,6 @@ // Select target instructions for the DAG. DAG.setRoot(SelectRoot(DAG.getRoot())); - assert(InFlightSet.empty() && "ISel InFlightSet has not been emptied!"); CodeGenMap.clear(); HandleMap.clear(); ReplaceMap.clear(); ___ 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/X86ISelDAGToDAG.cpp
Changes in directory llvm/lib/Target/X86: X86ISelDAGToDAG.cpp updated: 1.81 -> 1.82 --- Log message: Node selected into address mode cannot be folded. --- Diffs of the changes: (+39 -0) X86ISelDAGToDAG.cpp | 39 +++ 1 files changed, 39 insertions(+) Index: llvm/lib/Target/X86/X86ISelDAGToDAG.cpp diff -u llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.81 llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.82 --- llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.81Thu Jul 27 19:10:59 2006 +++ llvm/lib/Target/X86/X86ISelDAGToDAG.cpp Thu Jul 27 19:49:31 2006 @@ -211,6 +211,21 @@ return ReachibilityMatrix[Idx / 8] & (1 << (Idx % 8)); } +/// UnfoldableSet - An boolean array representing nodes which have been +/// folded into addressing modes and therefore should not be folded in +/// another operation. +unsigned char *UnfoldableSet; + +inline void setUnfoldable(SDNode *N) { + unsigned Id = N->getNodeId(); + UnfoldableSet[Id / 8] |= 1 << (Id % 8); +} + +inline bool isUnfoldable(SDNode *N) { + unsigned Id = N->getNodeId(); + return UnfoldableSet[Id / 8] & (1 << (Id % 8)); +} + #ifndef NDEBUG unsigned Indent; #endif @@ -218,6 +233,10 @@ } bool X86DAGToDAGISel::IsFoldableBy(SDNode *N, SDNode *U) { + // Is it already folded by SelectAddr / SelectLEAAddr? + if (isUnfoldable(N)) +return false; + // If U use can somehow reach N through another path then U can't fold N or // it will create a cycle. e.g. In the following diagram, U can reach N // through X. If N is foled into into U, then X is both a predecessor and @@ -323,6 +342,10 @@ MachineFunction::iterator FirstMBB = BB; DAGSize = DAG.AssignNodeIds(); + unsigned NumBytes = (DAGSize+7) / 8; + UnfoldableSet = new unsigned char[NumBytes]; + memset(UnfoldableSet, 0, NumBytes); + DetermineTopologicalOrdering(); // Codegen the basic block. @@ -339,9 +362,11 @@ delete[] TopOrder; delete[] IdToOrder; delete[] RMRange; + delete[] UnfoldableSet; ReachibilityMatrix = NULL; TopOrder = NULL; IdToOrder = RMRange = NULL; + UnfoldableSet = NULL; CodeGenMap.clear(); HandleMap.clear(); ReplaceMap.clear(); @@ -615,6 +640,13 @@ getAddressOperands(AM, Base, Scale, Index, Disp); + int Id = Base.Val ? Base.Val->getNodeId() : -1; + if (Id != -1) +setUnfoldable(Base.Val); + Id = Index.Val ? Index.Val->getNodeId() : -1; + if (Id != -1) +setUnfoldable(Index.Val); + return true; } @@ -663,6 +695,13 @@ return true; } + int Id = Base.Val ? Base.Val->getNodeId() : -1; + if (Id != -1) +setUnfoldable(Base.Val); + Id = Index.Val ? Index.Val->getNodeId() : -1; + if (Id != -1) +setUnfoldable(Index.Val); + return false; } ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: nightlytest-serverside/NightlyTestAccept.cgi
Changes in directory nightlytest-serverside: NightlyTestAccept.cgi updated: 1.35 -> 1.36 --- Log message: Modified the search through the dejagnu logs for the number of unexpected failures --- Diffs of the changes: (+13 -8) NightlyTestAccept.cgi | 21 + 1 files changed, 13 insertions(+), 8 deletions(-) Index: nightlytest-serverside/NightlyTestAccept.cgi diff -u nightlytest-serverside/NightlyTestAccept.cgi:1.35 nightlytest-serverside/NightlyTestAccept.cgi:1.36 --- nightlytest-serverside/NightlyTestAccept.cgi:1.35 Thu Jul 27 16:12:36 2006 +++ nightlytest-serverside/NightlyTestAccept.cgiThu Jul 27 19:54:48 2006 @@ -511,7 +511,7 @@ $dejagnutests_log =~ m/\# of expected passes\s*([0-9]+)/; $dejagnu_exp_passes=$1; -$dejagnutests_log =~ m/\# of unexpected failures\s*([0-9]+)/; +$dejagnutests_log =~ m/unexpected failures\s*([0-9]+)/; $dejagnu_unexp_failures=$1; $dejagnutests_log =~ m/\# of expected failures\s*([0-9]+)/; $dejagnu_exp_failures=$1; @@ -638,17 +638,22 @@ AddProgram $x, $external_processed{$x}, "external", $night_id; } -foreach $x (@O_FILE_SIZE){ - $x =~ m/(.+)\s+(.+)\s+(.+)/; - AddFile $2, $1, $night_id, $3; [EMAIL PROTECTED]; +if($len>1){ + foreach $x (@O_FILE_SIZE){ + $x =~ m/(.+)\s+(.+)\s+(.+)/; + AddFile $2, $1, $night_id, $3; + } } -foreach $x (@A_FILE_SIZE){ - $x =~ m/(.+)\s+(.+)\s+(.+)/; - AddFile $2, $1, $night_id, $3; [EMAIL PROTECTED]; +if($len>1){ + foreach $x (@A_FILE_SIZE){ + $x =~ m/(.+)\s+(.+)\s+(.+)/; + AddFile $2, $1, $night_id, $3; + } } - # # Adding lines of code ___ 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/SelectionDAGISel.h
Changes in directory llvm/include/llvm/CodeGen: SelectionDAGISel.h updated: 1.19 -> 1.20 --- Log message: Rename IsFoldableBy to CanBeFoldedleBy --- Diffs of the changes: (+2 -2) SelectionDAGISel.h |4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) Index: llvm/include/llvm/CodeGen/SelectionDAGISel.h diff -u llvm/include/llvm/CodeGen/SelectionDAGISel.h:1.19 llvm/include/llvm/CodeGen/SelectionDAGISel.h:1.20 --- llvm/include/llvm/CodeGen/SelectionDAGISel.h:1.19 Thu Jul 27 01:36:49 2006 +++ llvm/include/llvm/CodeGen/SelectionDAGISel.hThu Jul 27 20:03:48 2006 @@ -63,9 +63,9 @@ return true; } - /// IsFoldableBy - Returns true if the specific operand node N of U can be + /// CanBeFoldedBy - Returns true if the specific operand node N of U can be /// folded during instruction selection? - virtual bool IsFoldableBy(SDNode *N, SDNode *U) { return true; } + virtual bool CanBeFoldedBy(SDNode *N, SDNode *U) { return true; } /// CreateTargetHazardRecognizer - Return a newly allocated hazard recognizer /// to use for this target when scheduling the DAG. ___ 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/X86ISelDAGToDAG.cpp
Changes in directory llvm/lib/Target/X86: X86ISelDAGToDAG.cpp updated: 1.82 -> 1.83 --- Log message: Rename IsFoldableBy to CanBeFoldedleBy --- Diffs of the changes: (+3 -3) X86ISelDAGToDAG.cpp |6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) Index: llvm/lib/Target/X86/X86ISelDAGToDAG.cpp diff -u llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.82 llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.83 --- llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.82Thu Jul 27 19:49:31 2006 +++ llvm/lib/Target/X86/X86ISelDAGToDAG.cpp Thu Jul 27 20:03:48 2006 @@ -118,7 +118,7 @@ virtual void EmitFunctionEntryCode(Function &Fn, MachineFunction &MF); -virtual bool IsFoldableBy(SDNode *N, SDNode *U); +virtual bool CanBeFoldedBy(SDNode *N, SDNode *U); // Include the pieces autogenerated from the target description. #include "X86GenDAGISel.inc" @@ -232,7 +232,7 @@ }; } -bool X86DAGToDAGISel::IsFoldableBy(SDNode *N, SDNode *U) { +bool X86DAGToDAGISel::CanBeFoldedBy(SDNode *N, SDNode *U) { // Is it already folded by SelectAddr / SelectLEAAddr? if (isUnfoldable(N)) return false; @@ -711,7 +711,7 @@ if (N.getOpcode() == ISD::LOAD && N.hasOneUse() && !CodeGenMap.count(N.getValue(0)) && - !IsFoldableBy(N.Val, P.Val)) + !CanBeFoldedBy(N.Val, P.Val)) return SelectAddr(N.getOperand(1), Base, Scale, Index, Disp); return false; } ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/utils/TableGen/DAGISelEmitter.cpp
Changes in directory llvm/utils/TableGen: DAGISelEmitter.cpp updated: 1.229 -> 1.230 --- Log message: Rename IsFoldableBy to CanBeFoldedleBy --- Diffs of the changes: (+1 -1) DAGISelEmitter.cpp |2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/utils/TableGen/DAGISelEmitter.cpp diff -u llvm/utils/TableGen/DAGISelEmitter.cpp:1.229 llvm/utils/TableGen/DAGISelEmitter.cpp:1.230 --- llvm/utils/TableGen/DAGISelEmitter.cpp:1.229Thu Jul 27 19:43:52 2006 +++ llvm/utils/TableGen/DAGISelEmitter.cpp Thu Jul 27 20:03:48 2006 @@ -2276,7 +2276,7 @@ PInfo.hasProperty(SDNodeInfo::SDNPHasChain) || PInfo.hasProperty(SDNodeInfo::SDNPInFlag) || PInfo.hasProperty(SDNodeInfo::SDNPOptInFlag)) -emitCheck("IsFoldableBy(" + RootName + ".Val, " + ParentName + +emitCheck("CanBeFoldedBy(" + RootName + ".Val, " + ParentName + ".Val)"); } } ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/utils/NewNightlyTest.pl
Changes in directory llvm/utils: NewNightlyTest.pl updated: 1.34 -> 1.35 --- Log message: Removed some unneccesary printing from the nightly tester. --- Diffs of the changes: (+0 -6) NewNightlyTest.pl |6 -- 1 files changed, 6 deletions(-) Index: llvm/utils/NewNightlyTest.pl diff -u llvm/utils/NewNightlyTest.pl:1.34 llvm/utils/NewNightlyTest.pl:1.35 --- llvm/utils/NewNightlyTest.pl:1.34 Thu Jul 27 16:01:39 2006 +++ llvm/utils/NewNightlyTest.plThu Jul 27 20:06:18 2006 @@ -824,13 +824,7 @@ print "SingleSource TEST STAGE\n"; } ($SingleSourceProgramsTable, $llcbeta_options) = TestDirectory("SingleSource"); - if ( $VERBOSE ) { -print "SingleSource returned $SingleSourceProgramsTable\n"; - } WriteFile "$Prefix-singlesourceprogramstable.txt", $SingleSourceProgramsTable; - if ( $VERBOSE ) { - print "MultiSource TEST STAGE\n"; - } ($MultiSourceProgramsTable, $llcbeta_options) = TestDirectory("MultiSource"); WriteFile "$Prefix-multisourceprogramstable.txt", $MultiSourceProgramsTable; if ( $VERBOSE ) { ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/tools/bugpoint/ExtractFunction.cpp
Changes in directory llvm/tools/bugpoint: ExtractFunction.cpp updated: 1.48 -> 1.49 --- Log message: This commit improves bugpoints speed. On my G4 this changed caused kimwitu++ to run through bugpoint in 1091.15 seconds (user + system time). The time it took to run this on my G4 before I made these changes is 1420.82 seconds (user + system time). This is a speedup of about 5.5 minutes. This is faster because SplitFunctionsOutOfModule no longer calls Clone Module and then removes the functions it doesnt want from the module returned. Instead it creates a module and copies over the specified functions, making changes to the new and old module where neccessary. This reduces the memory demand. --- Diffs of the changes: (+133 -16) ExtractFunction.cpp | 149 ++-- 1 files changed, 133 insertions(+), 16 deletions(-) Index: llvm/tools/bugpoint/ExtractFunction.cpp diff -u llvm/tools/bugpoint/ExtractFunction.cpp:1.48 llvm/tools/bugpoint/ExtractFunction.cpp:1.49 --- llvm/tools/bugpoint/ExtractFunction.cpp:1.48Fri Jun 16 13:23:48 2006 +++ llvm/tools/bugpoint/ExtractFunction.cpp Thu Jul 27 20:19:28 2006 @@ -18,6 +18,7 @@ #include "llvm/Module.h" #include "llvm/PassManager.h" #include "llvm/Pass.h" +#include "llvm/SymbolTable.h" #include "llvm/Analysis/Verifier.h" #include "llvm/Transforms/IPO.h" #include "llvm/Transforms/Scalar.h" @@ -247,6 +248,67 @@ } } + RewriteUsesInNewModule - takes a Module and a reference to a globalvalue + (OrigVal) in that module and changes the reference to a different + globalvalue (NewVal) in a seperate module. +static void RewriteUsesInNewModule(Constant *OrigVal, Constant *NewVal, + Module *TargetMod) { + assert(OrigVal->getType() == NewVal->getType() && + "Can't replace something with a different type"); + for (Value::use_iterator UI = OrigVal->use_begin(), E = OrigVal->use_end(); + UI != E; ) { +Value::use_iterator TmpUI = UI++; +User *U = *TmpUI; +if (Instruction *Inst = dyn_cast(U)) { + Module *InstM = Inst->getParent()->getParent()->getParent(); + if (InstM != TargetMod) { + TmpUI.getUse() = NewVal; + } +} else if (GlobalVariable *GV = dyn_cast(U)) { + if (GV->getParent() != TargetMod) { +TmpUI.getUse() = NewVal; + } +} else if (ConstantExpr *CE = dyn_cast(U)) { + // If nothing uses this, don't bother making a copy. + if (CE->use_empty()) continue; + Constant *NewCE = CE->getWithOperandReplaced(TmpUI.getOperandNo(), + NewVal); + RewriteUsesInNewModule(CE, NewCE, TargetMod); +} else if (ConstantStruct *CS = dyn_cast(U)) { + // If nothing uses this, don't bother making a copy. + if (CS->use_empty()) continue; + unsigned OpNo = TmpUI.getOperandNo(); + std::vector Ops; + for (unsigned i = 0, e = CS->getNumOperands(); i != e; ++i) +Ops.push_back(i == OpNo ? NewVal : CS->getOperand(i)); + Constant *NewStruct = ConstantStruct::get(Ops); + RewriteUsesInNewModule(CS, NewStruct, TargetMod); + } else if (ConstantPacked *CP = dyn_cast(U)) { + // If nothing uses this, don't bother making a copy. + if (CP->use_empty()) continue; + unsigned OpNo = TmpUI.getOperandNo(); + std::vector Ops; + for (unsigned i = 0, e = CP->getNumOperands(); i != e; ++i) +Ops.push_back(i == OpNo ? NewVal : CP->getOperand(i)); + Constant *NewPacked = ConstantPacked::get(Ops); + RewriteUsesInNewModule(CP, NewPacked, TargetMod); +} else if (ConstantArray *CA = dyn_cast(U)) { + // If nothing uses this, don't bother making a copy. + if (CA->use_empty()) continue; + unsigned OpNo = TmpUI.getOperandNo(); + std::vector Ops; + for (unsigned i = 0, e = CA->getNumOperands(); i != e; ++i) { +Ops.push_back(i == OpNo ? NewVal : CA->getOperand(i)); + } + Constant *NewArray = ConstantArray::get(CA->getType(), Ops); + RewriteUsesInNewModule(CA, NewArray, TargetMod); +} else { + assert(0 && "Unexpected user"); +} + } +} + + /// SplitFunctionsOutOfModule - Given a module and a list of functions in the /// module, split the functions OUT of the specified module, and place them in /// the new module. @@ -265,28 +327,83 @@ I != E; ++I) I->setLinkage(GlobalValue::ExternalLinkage); - Module *New = CloneModule(M); + // First off, we need to create the new module... + Module *New = new Module(M->getModuleIdentifier()); + New->setEndianness(M->getEndianness()); + New->setPointerSize(M->getPointerSize()); + New->setTargetTriple(M->getTargetTriple()); + New->setModuleInlineAsm(M->getModuleInlineAsm()); + + // Copy all of the dependent libraries over. + for (Module::lib_iterator I = M->lib_begin(), E = M->lib_end(); I != E; ++I) +New->addLibrary(*I); - // Make sure global initi
[llvm-commits] CVS: llvm/utils/TableGen/DAGISelEmitter.cpp
Changes in directory llvm/utils/TableGen: DAGISelEmitter.cpp updated: 1.230 -> 1.231 --- Log message: Clean up. --- Diffs of the changes: (+2 -3) DAGISelEmitter.cpp |5 ++--- 1 files changed, 2 insertions(+), 3 deletions(-) Index: llvm/utils/TableGen/DAGISelEmitter.cpp diff -u llvm/utils/TableGen/DAGISelEmitter.cpp:1.230 llvm/utils/TableGen/DAGISelEmitter.cpp:1.231 --- llvm/utils/TableGen/DAGISelEmitter.cpp:1.230Thu Jul 27 20:03:48 2006 +++ llvm/utils/TableGen/DAGISelEmitter.cpp Thu Jul 27 20:19:22 2006 @@ -2469,11 +2469,10 @@ for (unsigned i = 0; i < NumRes; ++i) emitDecl("CPTmp" + utostr(i+ResNo)); -std::string Code = "bool Match = " + Fn + "(" + Val; +std::string Code = Fn + "(" + Val; for (unsigned i = 0; i < NumRes; i++) Code += ", CPTmp" + utostr(i + ResNo); -emitCode(Code + ");"); -emitCheck("Match"); +emitCheck(Code + ")"); for (unsigned i = 0; i < NumRes; ++i) { emitDecl("Tmp" + utostr(i+ResNo)); ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/include/llvm/ADT/SmallVector.h
Changes in directory llvm/include/llvm/ADT: SmallVector.h updated: 1.2 -> 1.3 --- Log message: The smallvector dtor should destroy the elements. Implement pop_back. Chage some code to use 'iterator' instead of T*. This unbreaks operators=. --- Diffs of the changes: (+12 -2) SmallVector.h | 14 -- 1 files changed, 12 insertions(+), 2 deletions(-) Index: llvm/include/llvm/ADT/SmallVector.h diff -u llvm/include/llvm/ADT/SmallVector.h:1.2 llvm/include/llvm/ADT/SmallVector.h:1.3 --- llvm/include/llvm/ADT/SmallVector.h:1.2 Wed Jul 26 22:38:08 2006 +++ llvm/include/llvm/ADT/SmallVector.h Fri Jul 28 00:03:42 2006 @@ -66,6 +66,10 @@ std::uninitialized_copy(RHS.begin(), RHS.end(), Begin); } ~SmallVector() { +// Destroy the constructed elements in the vector. +for (iterator I = Begin, E = End; I != E; ++I) + I->~T(); + // If this wasn't grown from the inline copy, deallocate the old space. if ((void*)Begin != (void*)InlineElts) delete[] (char*)Begin; @@ -115,6 +119,12 @@ goto Retry; } + void pop_back() { +assert(!empty() && "SmallVector is empty!"); +--End; +End->~T(); + } + /// append - Add the specified range to the end of the SmallVector. /// template @@ -154,7 +164,7 @@ // This allows us to avoid copying them during the grow. if (Capacity-Begin < RHSSize) { // Destroy current elements. - for (T *I = Begin, E = End; I != E; ++I) + for (iterator I = Begin, E = End; I != E; ++I) I->~T(); End = Begin; CurSize = 0; @@ -192,7 +202,7 @@ std::uninitialized_copy(Begin, End, NewElts); // Destroy the original elements. -for (T *I = Begin, *E = End; I != E; ++I) +for (iterator I = Begin, E = End; I != E; ++I) I->~T(); // If this wasn't grown from the inline copy, deallocate the old space. ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/Makefile.config.in configure
Changes in directory llvm: Makefile.config.in updated: 1.61 -> 1.62 configure updated: 1.242 -> 1.243 --- Log message: For PR848: http://llvm.org/PR848 : 1. Get the path to the pwd binary (/bin/pwd usually) from configure. 2. Use that path to run pwd in all path variables set in Makefile.config.in The hope is that these changes will resolve symlinks to physical paths. This should work on all platforms where the binary pwd defaults to printing physical paths. The shell version of pwd generally doesn't (it will print the symlink path). --- Diffs of the changes: (+79 -37) Makefile.config.in | 15 --- configure | 101 + 2 files changed, 79 insertions(+), 37 deletions(-) Index: llvm/Makefile.config.in diff -u llvm/Makefile.config.in:1.61 llvm/Makefile.config.in:1.62 --- llvm/Makefile.config.in:1.61Thu Jul 27 18:00:30 2006 +++ llvm/Makefile.config.in Fri Jul 28 00:05:00 2006 @@ -33,19 +33,20 @@ # ### +PWD := @BINPWD@ # Set the project name to LLVM if its not defined ifndef PROJECT_NAME PROJECT_NAME := LLVM endif -PROJ_OBJ_DIR := $(shell pwd) -PROJ_OBJ_ROOT := $(subst //,/,$(shell cd $(PROJ_OBJ_DIR)/$(LEVEL); pwd)) +PROJ_OBJ_DIR := $(shell $(PWD)) +PROJ_OBJ_ROOT := $(shell cd $(PROJ_OBJ_DIR)/$(LEVEL); $(PWD)) ifeq ($(PROJECT_NAME),LLVM) -LLVM_SRC_ROOT := @abs_top_srcdir@ -LLVM_OBJ_ROOT := @abs_top_builddir@ -PROJ_SRC_ROOT := $(LLVM_SRC_ROOT) -PROJ_SRC_DIR:= $(subst //,/,$(LLVM_SRC_ROOT)/$(patsubst $(PROJ_OBJ_ROOT)%,%,$(PROJ_OBJ_DIR))) +LLVM_SRC_ROOT := $(shell cd @abs_top_srcdir@; $(PWD)) +LLVM_OBJ_ROOT := $(shell cd @abs_top_builddir@; $(PWD)) +PROJ_SRC_ROOT := $(shell cd $(LLVM_SRC_ROOT); $(PWD)) +PROJ_SRC_DIR:= $(shell cd $(LLVM_SRC_ROOT)/$(patsubst $(PROJ_OBJ_ROOT)%,%,$(PROJ_OBJ_DIR)); $(PWD)) PROJ_prefix := @prefix@ PROJ_bindir := @prefix@/bin PROJ_libdir := @prefix@/lib @@ -72,7 +73,7 @@ ifndef LLVM_OBJ_ROOT $(error Projects must define LLVM_OBJ_ROOT) endif -PROJ_SRC_DIR := $(subst //,/,$(PROJ_SRC_ROOT)/$(patsubst $(PROJ_OBJ_ROOT)%,%,$(PROJ_OBJ_DIR))) +PROJ_SRC_DIR := $(shell cd $(PROJ_SRC_ROOT)/$(patsubst $(PROJ_OBJ_ROOT)%,%,$(PROJ_OBJ_DIR)); $(PWD)) PROJ_prefix := $(PROJ_INSTALL_ROOT) PROJ_bindir := $(PROJ_INSTALL_ROOT)/bin PROJ_libdir := $(PROJ_INSTALL_ROOT)/lib Index: llvm/configure diff -u llvm/configure:1.242 llvm/configure:1.243 --- llvm/configure:1.242Thu Jul 27 18:00:30 2006 +++ llvm/configure Fri Jul 28 00:05:00 2006 @@ -477,7 +477,7 @@ # include #endif" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS LLVM_COPYRIGHT subdirs build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os OS LLVM_ON_UNIX LLVM_ON_WIN32 ARCH ENDIAN CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT LLVM_CROSS_COMPILING BUILD_CC BUILD_EXEEXT CVSBUILD ENABLE_OPTIMIZED DISABLE_ASSERTIONS DEBUG_RUNTIME JIT TARGET_HAS_JIT ENABLE_DOXYGEN ENABLE_THREADS TARGETS_TO_BUILD EXTRA_OPTIONS CPP CXX CXXFLAGS ac_ct_CXX LEX LEXLIB LEX_OUTPUT_ROOT FLEX YACC BISON NM ifGNUmake LN_S CMP CP DATE FIND GREP MKDIR MV RANLIB ac_ct_RANLIB RM SED TAR GRAPHVIZ DOT GV DOTTY PERL HAVE_PERL INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA BZ! IP2 DOXYGEN ETAGS GROFF GZIP POD2HTML POD2MAN RUNTEST TCLSH ZIP EGREP INSTALL_LTDL_TRUE INSTALL_LTDL_FALSE CONVENIENCE_LTDL_TRUE CONVENIENCE_LTDL_FALSE LIBADD_DL ECHO AR ac_ct_AR STRIP ac_ct_STRIP CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL ETAGSFLAGS LLVMGCC LLVMGXX ALLOCA MMAP_FILE LLVMCC1 LLVMCC1PLUS LLVMGCCDIR LLVMGCC_VERSION LLVMGCC_MAJVERS SHLIBEXT LLVM_PREFIX LLVM_BINDIR LLVM_LIBDIR LLVM_DATADIR LLVM_DOCSDIR LLVM_ETCDIR LLVM_INCLUDEDIR LLVM_INFODIR LLVM_MANDIR LLVM_CONFIGTIME LIBOBJS LTLIBOBJS' +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS LLVM_COPYRIGHT subdirs build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os OS LLVM_ON_UNIX LLVM_ON_WIN32 ARCH ENDIAN CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT LLVM_CROSS_COMPILING BUILD_CC BUILD_EXEEXT CVSBUILD ENABLE_OPTIMIZED DISABLE_ASSERTIONS DEBUG_RUNTIME JIT TARGET_HAS_JIT ENABLE_DOXYGEN ENABLE_THREADS TARGETS_TO_BUILD EXTRA_OPTIONS CPP CXX CXXFLAGS ac_ct_CXX LEX LEXLIB LEX_OUTPUT_ROOT FLEX
[llvm-commits] CVS: llvm/autoconf/configure.ac
Changes in directory llvm/autoconf: configure.ac updated: 1.240 -> 1.241 --- Log message: For PR848: http://llvm.org/PR848 : 1. Get the path to the pwd binary (/bin/pwd usually) from configure. 2. Use that path to run pwd in all path variables set in Makefile.config.in The hope is that these changes will resolve symlinks to physical paths. This should work on all platforms where the binary pwd defaults to printing physical paths. The shell version of pwd generally doesn't (it will print the symlink path). --- Diffs of the changes: (+1 -0) configure.ac |1 + 1 files changed, 1 insertion(+) Index: llvm/autoconf/configure.ac diff -u llvm/autoconf/configure.ac:1.240 llvm/autoconf/configure.ac:1.241 --- llvm/autoconf/configure.ac:1.240Thu Jul 27 18:00:30 2006 +++ llvm/autoconf/configure.ac Fri Jul 28 00:05:00 2006 @@ -374,6 +374,7 @@ AC_PATH_PROG(RM, [rm], [rm]) AC_PATH_PROG(SED, [sed], [sed]) AC_PATH_PROG(TAR, [tar], [gtar]) +AC_PATH_PROG(BINPWD,[pwd], [pwd]) dnl Looking for misc. graph plotting software AC_PATH_PROG(GRAPHVIZ, [Graphviz], [echo Graphviz]) ___ 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/X86ISelDAGToDAG.cpp
Changes in directory llvm/lib/Target/X86: X86ISelDAGToDAG.cpp updated: 1.83 -> 1.84 --- Log message: Some clean up. --- Diffs of the changes: (+8 -6) X86ISelDAGToDAG.cpp | 14 -- 1 files changed, 8 insertions(+), 6 deletions(-) Index: llvm/lib/Target/X86/X86ISelDAGToDAG.cpp diff -u llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.83 llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.84 --- llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.83Thu Jul 27 20:03:48 2006 +++ llvm/lib/Target/X86/X86ISelDAGToDAG.cpp Fri Jul 28 01:05:06 2006 @@ -33,8 +33,8 @@ #include "llvm/Support/Debug.h" #include "llvm/Support/Visibility.h" #include "llvm/ADT/Statistic.h" +#include #include -#include #include using namespace llvm; @@ -125,7 +125,7 @@ private: void DetermineTopologicalOrdering(); -void DeterminReachibility(SDNode *f, SDNode *t); +void DetermineReachibility(SDNode *f, SDNode *t); void Select(SDOperand &Result, SDOperand N); @@ -239,7 +239,7 @@ // If U use can somehow reach N through another path then U can't fold N or // it will create a cycle. e.g. In the following diagram, U can reach N - // through X. If N is foled into into U, then X is both a predecessor and + // through X. If N is foledd into into U, then X is both a predecessor and // a successor of U. // // [ N ] @@ -249,7 +249,7 @@ // /[X] // | ^ // [U]| - DeterminReachibility(U, N); + DetermineReachibility(U, N); assert(isReachable(U, N) && "Attempting to fold a non-operand node?"); for (SDNode::op_iterator I = U->op_begin(), E = U->op_end(); I != E; ++I) { SDNode *P = I->Val; @@ -269,7 +269,7 @@ memset(RMRange, 0, DAGSize * sizeof(unsigned)); std::vector InDegree(DAGSize); - std::list Sources; + std::deque Sources; for (SelectionDAG::allnodes_iterator I = CurDAG->allnodes_begin(), E = CurDAG->allnodes_end(); I != E; ++I) { SDNode *N = I; @@ -297,7 +297,9 @@ } } -void X86DAGToDAGISel::DeterminReachibility(SDNode *f, SDNode *t) { +/// DetermineReachibility - Determine reachibility between all pairs of nodes +/// between f and t in topological order. +void X86DAGToDAGISel::DetermineReachibility(SDNode *f, SDNode *t) { if (!ReachibilityMatrix) { unsigned RMSize = (DAGSize * DAGSize + 7) / 8; ReachibilityMatrix = new unsigned char[RMSize]; ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
Re: [llvm-commits] CVS: llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
On Fri, 2006-07-28 at 01:05 -0500, Evan Cheng wrote: > +void DetermineReachibility(SDNode *f, SDNode *t); Hate to be pedantic about this, but its "Reachability" (a between h and b) Reid. ___ 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/X86ISelDAGToDAG.cpp
Changes in directory llvm/lib/Target/X86: X86ISelDAGToDAG.cpp updated: 1.84 -> 1.85 --- Log message: Can't spell. --- Diffs of the changes: (+15 -15) X86ISelDAGToDAG.cpp | 30 +++--- 1 files changed, 15 insertions(+), 15 deletions(-) Index: llvm/lib/Target/X86/X86ISelDAGToDAG.cpp diff -u llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.84 llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.85 --- llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.84Fri Jul 28 01:05:06 2006 +++ llvm/lib/Target/X86/X86ISelDAGToDAG.cpp Fri Jul 28 01:33:41 2006 @@ -100,7 +100,7 @@ X86Lowering(*TM.getTargetLowering()), Subtarget(&TM.getSubtarget()), DAGSize(0), TopOrder(NULL), IdToOrder(NULL), -RMRange(NULL), ReachibilityMatrix(NULL) {} +RMRange(NULL), ReachabilityMatrix(NULL) {} virtual bool runOnFunction(Function &Fn) { // Make sure we re-emit a set of the global base reg if necessary @@ -125,7 +125,7 @@ private: void DetermineTopologicalOrdering(); -void DetermineReachibility(SDNode *f, SDNode *t); +void DetermineReachability(SDNode *f, SDNode *t); void Select(SDOperand &Result, SDOperand N); @@ -197,18 +197,18 @@ /// particular source node. unsigned *RMRange; -/// ReachibilityMatrix - A N x N matrix representing all pairs reachibility +/// ReachabilityMatrix - A N x N matrix representing all pairs reachibility /// information. One bit per potential edge. -unsigned char *ReachibilityMatrix; +unsigned char *ReachabilityMatrix; inline void setReachable(SDNode *f, SDNode *t) { unsigned Idx = f->getNodeId() * DAGSize + t->getNodeId(); - ReachibilityMatrix[Idx / 8] |= 1 << (Idx % 8); + ReachabilityMatrix[Idx / 8] |= 1 << (Idx % 8); } inline bool isReachable(SDNode *f, SDNode *t) { unsigned Idx = f->getNodeId() * DAGSize + t->getNodeId(); - return ReachibilityMatrix[Idx / 8] & (1 << (Idx % 8)); + return ReachabilityMatrix[Idx / 8] & (1 << (Idx % 8)); } /// UnfoldableSet - An boolean array representing nodes which have been @@ -239,7 +239,7 @@ // If U use can somehow reach N through another path then U can't fold N or // it will create a cycle. e.g. In the following diagram, U can reach N - // through X. If N is foledd into into U, then X is both a predecessor and + // through X. If N is folded into into U, then X is both a predecessor and // a successor of U. // // [ N ] @@ -249,7 +249,7 @@ // /[X] // | ^ // [U]| - DetermineReachibility(U, N); + DetermineReachability(U, N); assert(isReachable(U, N) && "Attempting to fold a non-operand node?"); for (SDNode::op_iterator I = U->op_begin(), E = U->op_end(); I != E; ++I) { SDNode *P = I->Val; @@ -297,13 +297,13 @@ } } -/// DetermineReachibility - Determine reachibility between all pairs of nodes +/// DetermineReachability - Determine reachibility between all pairs of nodes /// between f and t in topological order. -void X86DAGToDAGISel::DetermineReachibility(SDNode *f, SDNode *t) { - if (!ReachibilityMatrix) { +void X86DAGToDAGISel::DetermineReachability(SDNode *f, SDNode *t) { + if (!ReachabilityMatrix) { unsigned RMSize = (DAGSize * DAGSize + 7) / 8; -ReachibilityMatrix = new unsigned char[RMSize]; -memset(ReachibilityMatrix, 0, RMSize); +ReachabilityMatrix = new unsigned char[RMSize]; +memset(ReachabilityMatrix, 0, RMSize); } int Idf = f->getNodeId(); @@ -360,12 +360,12 @@ DEBUG(std::cerr << "= Instruction selection ends:\n"); #endif - delete[] ReachibilityMatrix; + delete[] ReachabilityMatrix; delete[] TopOrder; delete[] IdToOrder; delete[] RMRange; delete[] UnfoldableSet; - ReachibilityMatrix = NULL; + ReachabilityMatrix = NULL; TopOrder = NULL; IdToOrder = RMRange = NULL; UnfoldableSet = NULL; ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits