[llvm-commits] CVS: llvm/lib/Target/ARM/ARMRegisterInfo.cpp
Changes in directory llvm/lib/Target/ARM: ARMRegisterInfo.cpp updated: 1.11 -> 1.12 --- Log message: fix the loading of the link register in emitepilogue --- Diffs of the changes: (+3 -1) ARMRegisterInfo.cpp |4 +++- 1 files changed, 3 insertions(+), 1 deletion(-) Index: llvm/lib/Target/ARM/ARMRegisterInfo.cpp diff -u llvm/lib/Target/ARM/ARMRegisterInfo.cpp:1.11 llvm/lib/Target/ARM/ARMRegisterInfo.cpp:1.12 --- llvm/lib/Target/ARM/ARMRegisterInfo.cpp:1.11Tue Aug 8 15:35:03 2006 +++ llvm/lib/Target/ARM/ARMRegisterInfo.cpp Wed Aug 9 08:15:47 2006 @@ -129,6 +129,8 @@ // entry to the current function. This eliminates the need for add/sub // brackets around call sites. NumBytes += MFI->getMaxCallFrameSize(); + } else { +NumBytes += 4; } MFI->setStackSize(NumBytes); @@ -149,7 +151,7 @@ int NumBytes = (int) MFI->getStackSize(); //ldr lr, [sp] - BuildMI(MBB, MBBI, ARM::ldr, 2, ARM::R14).addImm(0).addReg(ARM::R13); + BuildMI(MBB, MBBI, ARM::ldr, 2, ARM::R14).addImm(NumBytes - 4).addReg(ARM::R13); //add sp, sp, #NumBytes BuildMI(MBB, MBBI, ARM::addri, 2, ARM::R13).addReg(ARM::R13).addImm(NumBytes); } ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
Re: [llvm-commits] CVS: llvm/autoconf/m4/libtool.m4
Could you please make a note of this in the autoconf/README.TXT file. These deviations from the standard libtool need to be documented so they can be applied in the next update of libtool. Thanks, Reid. On Wed, 2006-08-09 at 00:39 -0500, Evan Cheng wrote: > > Changes in directory llvm/autoconf/m4: > > libtool.m4 updated: 1.7 -> 1.8 > --- > Log message: > > Recover the lost diff between 1.5 and 1.6. > > --- > Diffs of the changes: (+1 -1) > > libtool.m4 |2 +- > 1 files changed, 1 insertion(+), 1 deletion(-) > > > Index: llvm/autoconf/m4/libtool.m4 > diff -u llvm/autoconf/m4/libtool.m4:1.7 llvm/autoconf/m4/libtool.m4:1.8 > --- llvm/autoconf/m4/libtool.m4:1.7 Fri Aug 4 13:18:08 2006 > +++ llvm/autoconf/m4/libtool.m4 Wed Aug 9 00:38:51 2006 > @@ -2234,7 +2234,7 @@ > case $host_os in >darwin*) > if test "$GCC" = yes; then > - reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' > + reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r $compiler_flags -o > $output$reload_objs' > else >reload_cmds='$LD$reload_flag -o $output$reload_objs' > fi > > > > ___ > llvm-commits mailing list > llvm-commits@cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] [release_18] CVS: llvm/utils/TableGen/DAGISelEmitter.cpp
Changes in directory llvm/utils/TableGen: DAGISelEmitter.cpp updated: 1.226 -> 1.226.2.1 --- Log message: Merging in from mainline --- Diffs of the changes: (+398 -503) DAGISelEmitter.cpp | 901 +++-- 1 files changed, 398 insertions(+), 503 deletions(-) Index: llvm/utils/TableGen/DAGISelEmitter.cpp diff -u llvm/utils/TableGen/DAGISelEmitter.cpp:1.226 llvm/utils/TableGen/DAGISelEmitter.cpp:1.226.2.1 --- llvm/utils/TableGen/DAGISelEmitter.cpp:1.226Wed Jul 26 18:06:27 2006 +++ llvm/utils/TableGen/DAGISelEmitter.cpp Wed Aug 9 11:24:13 2006 @@ -1829,9 +1829,22 @@ // If this node is commutative, consider the commuted order. if (NodeInfo.hasProperty(SDNodeInfo::SDNPCommutative)) { assert(N->getNumChildren()==2 &&"Commutative but doesn't have 2 children!"); +// Don't count children which are actually register references. +unsigned NC = 0; +for (unsigned i = 0, e = N->getNumChildren(); i != e; ++i) { + TreePatternNode *Child = N->getChild(i); + if (Child->isLeaf()) +if (DefInit *DI = dynamic_cast(Child->getLeafValue())) { + Record *RR = DI->getDef(); + if (RR->isSubClassOf("Register")) +continue; +} + NC++; +} // Consider the commuted order. -CombineChildVariants(N, ChildVariants[1], ChildVariants[0], - OutVariants, ISE); +if (NC == 2) + CombineChildVariants(N, ChildVariants[1], ChildVariants[0], + OutVariants, ISE); } } @@ -2106,8 +2119,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 @@ -2123,7 +2134,6 @@ std::vector &TargetVTs; std::string ChainName; - bool DoReplace; unsigned TmpNo; unsigned OpcNo; unsigned VTNo; @@ -2154,11 +2164,10 @@ std::vector > &gc, std::set > &gd, std::vector &to, - std::vector &tv, - bool dorep) + std::vector &tv) : ISE(ise), Predicates(preds), Pattern(pattern), Instruction(instr), GeneratedCode(gc), GeneratedDecl(gd), TargetOpcodes(to), TargetVTs(tv), -DoReplace(dorep), TmpNo(0), OpcNo(0), VTNo(0) {} +TmpNo(0), OpcNo(0), VTNo(0) {} /// EmitMatchCode - Emit a matcher for N, going to the label for PatternNo /// if the match fails. At this point, we already know that the opcode for N @@ -2225,24 +2234,14 @@ bool HasChain = PatternHasProperty(N, SDNodeInfo::SDNPHasChain, ISE); bool HasOutFlag = PatternHasProperty(N, SDNodeInfo::SDNPOutFlag, ISE); bool EmittedUseCheck = false; -bool EmittedSlctedCheck = false; if (HasChain) { if (NodeHasChain) 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; -// hasOneUse() check is not strong enough. If the original node has -// already been selected, it may have been replaced with another. -for (unsigned j = 0; j != CInfo.getNumResults(); j++) - emitCheck("!CodeGenMap.count(" + RootName + ".getValue(" + utostr(j) + -"))"); - -EmittedSlctedCheck = true; if (NodeHasChain) { // FIXME: Don't fold if 1) the parent node writes a flag, 2) the node // has a chain use. @@ -2280,14 +2279,8 @@ PInfo.hasProperty(SDNodeInfo::SDNPHasChain) || PInfo.hasProperty(SDNodeInfo::SDNPInFlag) || PInfo.hasProperty(SDNodeInfo::SDNPOptInFlag)) -if (PInfo.getNumOperands() > 1) { - emitCheck("!isNonImmUse(" + ParentName + ".Val, " + RootName + -".Val)"); -} else { - emitCheck("(" + ParentName + ".getNumOperands() == 1 || !" + -"isNonImmUse(" + ParentName + ".Val, " + RootName + -".Val))"); -} +emitCheck("CanBeFoldedBy(" + RootName + ".Val, " + ParentName + + ".Val)"); } } @@ -2317,12 +2310,6 @@ // Multiple uses of actual result? emitCheck(RootName + ".hasOneUse()"); } - if (!EmittedSlctedCheck) -// hasOneUse() check is not strong enough. If the original node has -// already been selected, it may have been replaced with another. -for (unsigned j = 0; j < CInfo.getNumR
[llvm-commits] [release_18] CVS: llvm/utils/TableGen/DAGISelEmitter.cpp
Changes in directory llvm/utils/TableGen: DAGISelEmitter.cpp updated: 1.226.2.1 -> 1.226.2.2 --- Log message: Merge in correct version from mainline --- Diffs of the changes: (+246 -127) DAGISelEmitter.cpp | 373 ++--- 1 files changed, 246 insertions(+), 127 deletions(-) Index: llvm/utils/TableGen/DAGISelEmitter.cpp diff -u llvm/utils/TableGen/DAGISelEmitter.cpp:1.226.2.1 llvm/utils/TableGen/DAGISelEmitter.cpp:1.226.2.2 --- llvm/utils/TableGen/DAGISelEmitter.cpp:1.226.2.1Wed Aug 9 11:24:13 2006 +++ llvm/utils/TableGen/DAGISelEmitter.cpp Wed Aug 9 11:33:15 2006 @@ -2134,6 +2134,7 @@ std::vector &TargetVTs; std::string ChainName; + bool DoReplace; unsigned TmpNo; unsigned OpcNo; unsigned VTNo; @@ -2164,10 +2165,11 @@ std::vector > &gc, std::set > &gd, std::vector &to, - std::vector &tv) + std::vector &tv, + bool dorep) : ISE(ise), Predicates(preds), Pattern(pattern), Instruction(instr), GeneratedCode(gc), GeneratedDecl(gd), TargetOpcodes(to), TargetVTs(tv), -TmpNo(0), OpcNo(0), VTNo(0) {} +DoReplace(dorep), TmpNo(0), OpcNo(0), VTNo(0) {} /// EmitMatchCode - Emit a matcher for N, going to the label for PatternNo /// if the match fails. At this point, we already know that the opcode for N @@ -2234,6 +2236,7 @@ bool HasChain = PatternHasProperty(N, SDNodeInfo::SDNPHasChain, ISE); bool HasOutFlag = PatternHasProperty(N, SDNodeInfo::SDNPOutFlag, ISE); bool EmittedUseCheck = false; +bool EmittedSlctedCheck = false; if (HasChain) { if (NodeHasChain) OpNo = 1; @@ -2242,6 +2245,13 @@ // Multiple uses of actual result? emitCheck(RootName + ".hasOneUse()"); EmittedUseCheck = true; +// hasOneUse() check is not strong enough. If the original node has +// already been selected, it may have been replaced with another. +for (unsigned j = 0; j != CInfo.getNumResults(); j++) + emitCheck("!CodeGenMap.count(" + RootName + ".getValue(" + utostr(j) + +"))"); + +EmittedSlctedCheck = true; if (NodeHasChain) { // FIXME: Don't fold if 1) the parent node writes a flag, 2) the node // has a chain use. @@ -2310,6 +2320,12 @@ // Multiple uses of actual result? emitCheck(RootName + ".hasOneUse()"); } + if (!EmittedSlctedCheck) +// hasOneUse() check is not strong enough. If the original node has +// already been selected, it may have been replaced with another. +for (unsigned j = 0; j < CInfo.getNumResults(); j++) + emitCheck("!CodeGenMap.count(" + RootName + ".getValue(" + utostr(j) + +"))"); } for (unsigned i = 0, e = N->getNumChildren(); i != e; ++i, ++OpNo) { @@ -2473,7 +2489,7 @@ for (unsigned i = 0; i < NumRes; ++i) { emitDecl("Tmp" + utostr(i+ResNo)); - emitCode("AddToQueue(Tmp" + utostr(i+ResNo) + ", CPTmp" + + emitCode("Select(Tmp" + utostr(i+ResNo) + ", CPTmp" + utostr(i+ResNo) + ");"); } @@ -2485,12 +2501,12 @@ if (LikeLeaf) emitCode("Tmp" + utostr(ResNo) + " = " + Val + ";"); else { - emitCode("AddToQueue(Tmp" + utostr(ResNo) + ", " + Val + ");"); - if (isRoot && N->isLeaf()) { -emitCode("ReplaceUses(N, Tmp" + utostr(ResNo) + ");"); -emitCode("Result = Tmp" + utostr(ResNo) + ";"); -emitCode("return;"); - } + emitCode("Select(Tmp" + utostr(ResNo) + ", " + Val + ");"); +} + +if (isRoot && N->isLeaf()) { + emitCode("Result = Tmp" + utostr(ResNo) + ";"); + emitCode("return;"); } } // Add Tmp to VariableMap, so that we don't multiply select this @@ -2604,12 +2620,12 @@ // Emit all the chain and CopyToReg stuff. bool ChainEmitted = NodeHasChain; if (NodeHasChain) -emitCode("AddToQueue(" + ChainName + ", " + ChainName + ");"); +emitCode("Select(" + ChainName + ", " + ChainName + ");"); if (NodeHasInFlag || HasImpInputs) EmitInFlagSelectCode(Pattern, "N", ChainEmitted, true); if (NodeHasOptInFlag) { emitCode("if (HasInFlag)"); -emitCode(" AddToQueue(InFlag, N.getOperand(N.getNumOperands()-1));"); +emitCode(" Select(InFlag, N.getOperand(N.getNumOperands()-1));"); } unsigned NumResults = Inst.getNumResults(); @@ -2661,7 +2677,7 @@ emitCode("for (unsigned i = 2, e = N.getNumOperands(); " "i != e; ++i) {"); emitCode(" SDOperand VarOp(0, 0);"); - emitCode(" AddToQueue(VarOp, N.getOperand(i));"); + emitCode(" Select(VarOp, N.getOperand(i));");
[llvm-commits] CVS: llvm-www/releases/1.8/docs/ReleaseNotes.html
Changes in directory llvm-www/releases/1.8/docs: ReleaseNotes.html updated: 1.1 -> 1.2 --- Log message: Updates from the list. --- Diffs of the changes: (+7 -7) ReleaseNotes.html | 14 +++--- 1 files changed, 7 insertions(+), 7 deletions(-) Index: llvm-www/releases/1.8/docs/ReleaseNotes.html diff -u llvm-www/releases/1.8/docs/ReleaseNotes.html:1.1 llvm-www/releases/1.8/docs/ReleaseNotes.html:1.2 --- llvm-www/releases/1.8/docs/ReleaseNotes.html:1.1Wed Aug 9 00:56:40 2006 +++ llvm-www/releases/1.8/docs/ReleaseNotes.htmlWed Aug 9 11:32:30 2006 @@ -109,7 +109,7 @@ -The loop optimizer passes now uses "Loop-Closed SSA Form", which makes it +The loop optimizer passes now use "Loop-Closed SSA Form", which makes it easier to update SSA form as loop transformations change the code. An immediate benefit of this is that the loop unswitching pass can now unswitch loops in more cases. @@ -168,10 +168,10 @@ The PowerPC backend now pattern matches the 'rlwimi' instruction more aggressively. Most of LLVM is now built with "-pedantic", ensuring better portability -to more C++ Compilers. +to more C++ compilers. The PowerPC backend now includes initial 64-bit support. The JIT is not complete, and the static compiler has a couple of known bugs, but support -is mostly in place. LLVM 1.9 will include completed PPC-64 support. +is mostly in place. LLVM 1.9 will include complete PPC-64 support. @@ -251,7 +251,7 @@ components, please contact us on the http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev";>LLVMdev list. -The -cee pass is known to be buggy, and may be removed in in a +The -cee pass is known to be buggy, and may be removed in a future release. The IA64 code generator is experimental. The Alpha JIT is experimental. @@ -336,7 +336,7 @@ support for floating point data types of any size other than 32 and 64 bits. -The following Unix system functionality has not been tested and may not +The following Unix system features have not been tested and may not work: sigsetjmp, siglongjmp - These are not turned into the @@ -537,7 +537,7 @@ problem probably cannot be fixed. http://llvm.org/PR56";>Zero arg vararg functions are not -supported. This should not affect LLVM produced by the C or C++ +supported. This should not affect programs produced by the C or C++ frontends. The C backend does not correctly implement the http://www.w3.org/Icons/valid-html401"; alt="Valid HTML 4.01!" /> http://llvm.org/";>The LLVM Compiler Infrastructure - Last modified: $Date: 2006/08/09 05:56:40 $ + Last modified: $Date: 2006/08/09 16:32:30 $ ___ 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 ARMRegisterInfo.cpp
Changes in directory llvm/lib/Target/ARM: ARMISelDAGToDAG.cpp updated: 1.24 -> 1.25 ARMRegisterInfo.cpp updated: 1.12 -> 1.13 --- Log message: fix the spill code --- Diffs of the changes: (+15 -7) ARMISelDAGToDAG.cpp |6 ++ ARMRegisterInfo.cpp | 16 +--- 2 files changed, 15 insertions(+), 7 deletions(-) Index: llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp diff -u llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp:1.24 llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp:1.25 --- llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp:1.24Tue Aug 8 08:02:29 2006 +++ llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp Wed Aug 9 11:41:12 2006 @@ -148,6 +148,12 @@ Ops.push_back(Chain); Ops.push_back(Callee); + // Add argument registers to the end of the list so that they are known live + // into the call. + for (unsigned i = 0, e = RegsToPass.size(); i != e; ++i) +Ops.push_back(DAG.getRegister(RegsToPass[i].first, + RegsToPass[i].second.getValueType())); + unsigned CallOpc = ARMISD::CALL; if (InFlag.Val) Ops.push_back(InFlag); Index: llvm/lib/Target/ARM/ARMRegisterInfo.cpp diff -u llvm/lib/Target/ARM/ARMRegisterInfo.cpp:1.12 llvm/lib/Target/ARM/ARMRegisterInfo.cpp:1.13 --- llvm/lib/Target/ARM/ARMRegisterInfo.cpp:1.12Wed Aug 9 08:15:47 2006 +++ llvm/lib/Target/ARM/ARMRegisterInfo.cpp Wed Aug 9 11:41:12 2006 @@ -31,9 +31,8 @@ storeRegToStackSlot(MachineBasicBlock &MBB, MachineBasicBlock::iterator I, unsigned SrcReg, int FI, const TargetRegisterClass *RC) const { - // On the order of operands here: think "[FI + 0] = SrcReg". assert (RC == ARM::IntRegsRegisterClass); - BuildMI(MBB, I, ARM::str, 3).addFrameIndex(FI).addImm(0).addReg(SrcReg); + BuildMI(MBB, I, ARM::str, 3).addReg(SrcReg).addImm(0).addFrameIndex(FI); } void ARMRegisterInfo:: @@ -41,7 +40,7 @@ unsigned DestReg, int FI, const TargetRegisterClass *RC) const { assert (RC == ARM::IntRegsRegisterClass); - BuildMI(MBB, I, ARM::ldr, 2, DestReg).addFrameIndex(FI).addImm(0); + BuildMI(MBB, I, ARM::ldr, 2, DestReg).addImm(0).addFrameIndex(FI); } void ARMRegisterInfo::copyRegToReg(MachineBasicBlock &MBB, @@ -81,7 +80,8 @@ MachineBasicBlock &MBB = *MI.getParent(); MachineFunction &MF = *MBB.getParent(); - assert (MI.getOpcode() == ARM::ldr); + assert (MI.getOpcode() == ARM::ldr || + MI.getOpcode() == ARM::str); unsigned FrameIdx = 2; unsigned OffIdx = 1; @@ -93,6 +93,11 @@ unsigned StackSize = MF.getFrameInfo()->getStackSize(); + // + if (Offset < 0) +Offset -= 4; + // + Offset += StackSize; assert (Offset >= 0); @@ -121,9 +126,6 @@ MachineFrameInfo *MFI = MF.getFrameInfo(); int NumBytes = (int) MFI->getStackSize(); - //hack - assert(NumBytes == 0); - if (MFI->hasCalls()) { // We reserve argument space for call sites in the function immediately on // entry to the current function. This eliminates the need for add/sub ___ 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.238 -> 1.239 --- Log message: Reverting back to original 1.8 version so I can manually merge in patch. --- Diffs of the changes: (+503 -398) DAGISelEmitter.cpp | 901 + 1 files changed, 503 insertions(+), 398 deletions(-) Index: llvm/utils/TableGen/DAGISelEmitter.cpp diff -u llvm/utils/TableGen/DAGISelEmitter.cpp:1.238 llvm/utils/TableGen/DAGISelEmitter.cpp:1.239 --- llvm/utils/TableGen/DAGISelEmitter.cpp:1.238Mon Aug 7 21:23:42 2006 +++ llvm/utils/TableGen/DAGISelEmitter.cpp Wed Aug 9 11:41:21 2006 @@ -1829,22 +1829,9 @@ // If this node is commutative, consider the commuted order. if (NodeInfo.hasProperty(SDNodeInfo::SDNPCommutative)) { assert(N->getNumChildren()==2 &&"Commutative but doesn't have 2 children!"); -// Don't count children which are actually register references. -unsigned NC = 0; -for (unsigned i = 0, e = N->getNumChildren(); i != e; ++i) { - TreePatternNode *Child = N->getChild(i); - if (Child->isLeaf()) -if (DefInit *DI = dynamic_cast(Child->getLeafValue())) { - Record *RR = DI->getDef(); - if (RR->isSubClassOf("Register")) -continue; -} - NC++; -} // Consider the commuted order. -if (NC == 2) - CombineChildVariants(N, ChildVariants[1], ChildVariants[0], - OutVariants, ISE); +CombineChildVariants(N, ChildVariants[1], ChildVariants[0], + OutVariants, ISE); } } @@ -2119,6 +2106,8 @@ // 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 @@ -2134,6 +2123,7 @@ std::vector &TargetVTs; std::string ChainName; + bool DoReplace; unsigned TmpNo; unsigned OpcNo; unsigned VTNo; @@ -2164,10 +2154,11 @@ std::vector > &gc, std::set > &gd, std::vector &to, - std::vector &tv) + std::vector &tv, + bool dorep) : ISE(ise), Predicates(preds), Pattern(pattern), Instruction(instr), GeneratedCode(gc), GeneratedDecl(gd), TargetOpcodes(to), TargetVTs(tv), -TmpNo(0), OpcNo(0), VTNo(0) {} +DoReplace(dorep), TmpNo(0), OpcNo(0), VTNo(0) {} /// EmitMatchCode - Emit a matcher for N, going to the label for PatternNo /// if the match fails. At this point, we already know that the opcode for N @@ -2234,14 +2225,24 @@ bool HasChain = PatternHasProperty(N, SDNodeInfo::SDNPHasChain, ISE); bool HasOutFlag = PatternHasProperty(N, SDNodeInfo::SDNPOutFlag, ISE); bool EmittedUseCheck = false; +bool EmittedSlctedCheck = false; if (HasChain) { if (NodeHasChain) 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; +// hasOneUse() check is not strong enough. If the original node has +// already been selected, it may have been replaced with another. +for (unsigned j = 0; j != CInfo.getNumResults(); j++) + emitCheck("!CodeGenMap.count(" + RootName + ".getValue(" + utostr(j) + +"))"); + +EmittedSlctedCheck = true; if (NodeHasChain) { // FIXME: Don't fold if 1) the parent node writes a flag, 2) the node // has a chain use. @@ -2279,8 +2280,14 @@ PInfo.hasProperty(SDNodeInfo::SDNPHasChain) || PInfo.hasProperty(SDNodeInfo::SDNPInFlag) || PInfo.hasProperty(SDNodeInfo::SDNPOptInFlag)) -emitCheck("CanBeFoldedBy(" + RootName + ".Val, " + ParentName + - ".Val)"); +if (PInfo.getNumOperands() > 1) { + emitCheck("!isNonImmUse(" + ParentName + ".Val, " + RootName + +".Val)"); +} else { + emitCheck("(" + ParentName + ".getNumOperands() == 1 || !" + +"isNonImmUse(" + ParentName + ".Val, " + RootName + +".Val))"); +} } } @@ -2310,6 +2317,12 @@ // Multiple uses of actual result? emitCheck(RootName + ".hasOneUse()"); } + if (!EmittedSlctedCheck) +// hasOneUse() check is not strong enough. If the original node has +// already been selected, it may have been replaced with another. +
[llvm-commits] CVS: llvm/test/Regression/CodeGen/ARM/vargs.ll
Changes in directory llvm/test/Regression/CodeGen/ARM: vargs.ll updated: 1.1 -> 1.2 --- Log message: fix the spill code --- Diffs of the changes: (+3 -2) vargs.ll |5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) Index: llvm/test/Regression/CodeGen/ARM/vargs.ll diff -u llvm/test/Regression/CodeGen/ARM/vargs.ll:1.1 llvm/test/Regression/CodeGen/ARM/vargs.ll:1.2 --- llvm/test/Regression/CodeGen/ARM/vargs.ll:1.1 Tue Aug 8 08:02:29 2006 +++ llvm/test/Regression/CodeGen/ARM/vargs.ll Wed Aug 9 11:41:12 2006 @@ -1,4 +1,4 @@ -; RUN: llvm-as < %s | llc -march=arm +; RUN: llvm-as < %s | llc -march=arm %str = internal constant [43 x sbyte] c"Hello World %d %d %d %d %d %d %d %d %d %d\0A\00" ; <[43 x sbyte]*> [#uses=1] implementation ; Functions: @@ -6,7 +6,8 @@ int %main() { entry: %tmp = call int (sbyte*, ...)* %printf( sbyte* getelementptr ([43 x sbyte]* %str, int 0, uint 0), int 1, int 2, int 3, int 4, int 5, int 6, int 7, int 8, int 9, int 10 ) ; [#uses=0] - ret int 0 + %tmp2 = call int (sbyte*, ...)* %printf( sbyte* getelementptr ([43 x sbyte]* %str, int 0, uint 0), int 10, int 9, int 8, int 7, int 6, int 5, int 4, int 3, int 2, int 1 ) ; [#uses=0] + ret int 11 } declare int %printf(sbyte*, ...) ___ 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.239 -> 1.240 --- Log message: Revert previous patch --- Diffs of the changes: (+398 -503) DAGISelEmitter.cpp | 901 +++-- 1 files changed, 398 insertions(+), 503 deletions(-) Index: llvm/utils/TableGen/DAGISelEmitter.cpp diff -u llvm/utils/TableGen/DAGISelEmitter.cpp:1.239 llvm/utils/TableGen/DAGISelEmitter.cpp:1.240 --- llvm/utils/TableGen/DAGISelEmitter.cpp:1.239Wed Aug 9 11:41:21 2006 +++ llvm/utils/TableGen/DAGISelEmitter.cpp Wed Aug 9 11:44:44 2006 @@ -1829,9 +1829,22 @@ // If this node is commutative, consider the commuted order. if (NodeInfo.hasProperty(SDNodeInfo::SDNPCommutative)) { assert(N->getNumChildren()==2 &&"Commutative but doesn't have 2 children!"); +// Don't count children which are actually register references. +unsigned NC = 0; +for (unsigned i = 0, e = N->getNumChildren(); i != e; ++i) { + TreePatternNode *Child = N->getChild(i); + if (Child->isLeaf()) +if (DefInit *DI = dynamic_cast(Child->getLeafValue())) { + Record *RR = DI->getDef(); + if (RR->isSubClassOf("Register")) +continue; +} + NC++; +} // Consider the commuted order. -CombineChildVariants(N, ChildVariants[1], ChildVariants[0], - OutVariants, ISE); +if (NC == 2) + CombineChildVariants(N, ChildVariants[1], ChildVariants[0], + OutVariants, ISE); } } @@ -2106,8 +2119,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 @@ -2123,7 +2134,6 @@ std::vector &TargetVTs; std::string ChainName; - bool DoReplace; unsigned TmpNo; unsigned OpcNo; unsigned VTNo; @@ -2154,11 +2164,10 @@ std::vector > &gc, std::set > &gd, std::vector &to, - std::vector &tv, - bool dorep) + std::vector &tv) : ISE(ise), Predicates(preds), Pattern(pattern), Instruction(instr), GeneratedCode(gc), GeneratedDecl(gd), TargetOpcodes(to), TargetVTs(tv), -DoReplace(dorep), TmpNo(0), OpcNo(0), VTNo(0) {} +TmpNo(0), OpcNo(0), VTNo(0) {} /// EmitMatchCode - Emit a matcher for N, going to the label for PatternNo /// if the match fails. At this point, we already know that the opcode for N @@ -2225,24 +2234,14 @@ bool HasChain = PatternHasProperty(N, SDNodeInfo::SDNPHasChain, ISE); bool HasOutFlag = PatternHasProperty(N, SDNodeInfo::SDNPOutFlag, ISE); bool EmittedUseCheck = false; -bool EmittedSlctedCheck = false; if (HasChain) { if (NodeHasChain) 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; -// hasOneUse() check is not strong enough. If the original node has -// already been selected, it may have been replaced with another. -for (unsigned j = 0; j != CInfo.getNumResults(); j++) - emitCheck("!CodeGenMap.count(" + RootName + ".getValue(" + utostr(j) + -"))"); - -EmittedSlctedCheck = true; if (NodeHasChain) { // FIXME: Don't fold if 1) the parent node writes a flag, 2) the node // has a chain use. @@ -2280,14 +2279,8 @@ PInfo.hasProperty(SDNodeInfo::SDNPHasChain) || PInfo.hasProperty(SDNodeInfo::SDNPInFlag) || PInfo.hasProperty(SDNodeInfo::SDNPOptInFlag)) -if (PInfo.getNumOperands() > 1) { - emitCheck("!isNonImmUse(" + ParentName + ".Val, " + RootName + -".Val)"); -} else { - emitCheck("(" + ParentName + ".getNumOperands() == 1 || !" + -"isNonImmUse(" + ParentName + ".Val, " + RootName + -".Val))"); -} +emitCheck("CanBeFoldedBy(" + RootName + ".Val, " + ParentName + + ".Val)"); } } @@ -2317,12 +2310,6 @@ // Multiple uses of actual result? emitCheck(RootName + ".hasOneUse()"); } - if (!EmittedSlctedCheck) -// hasOneUse() check is not strong enough. If the original node has -// already been selected, it may have been replaced with another. -for (unsigned j = 0; j < CInfo.getNumResults();
[llvm-commits] [release_18] CVS: llvm/utils/TableGen/DAGISelEmitter.cpp
Changes in directory llvm/utils/TableGen: DAGISelEmitter.cpp updated: 1.226.2.2 -> 1.226.2.3 --- Log message: Revert. --- Diffs of the changes: (+272 -286) DAGISelEmitter.cpp | 558 + 1 files changed, 272 insertions(+), 286 deletions(-) Index: llvm/utils/TableGen/DAGISelEmitter.cpp diff -u llvm/utils/TableGen/DAGISelEmitter.cpp:1.226.2.2 llvm/utils/TableGen/DAGISelEmitter.cpp:1.226.2.3 --- llvm/utils/TableGen/DAGISelEmitter.cpp:1.226.2.2Wed Aug 9 11:33:15 2006 +++ llvm/utils/TableGen/DAGISelEmitter.cpp Wed Aug 9 11:46:19 2006 @@ -1829,22 +1829,9 @@ // If this node is commutative, consider the commuted order. if (NodeInfo.hasProperty(SDNodeInfo::SDNPCommutative)) { assert(N->getNumChildren()==2 &&"Commutative but doesn't have 2 children!"); -// Don't count children which are actually register references. -unsigned NC = 0; -for (unsigned i = 0, e = N->getNumChildren(); i != e; ++i) { - TreePatternNode *Child = N->getChild(i); - if (Child->isLeaf()) -if (DefInit *DI = dynamic_cast(Child->getLeafValue())) { - Record *RR = DI->getDef(); - if (RR->isSubClassOf("Register")) -continue; -} - NC++; -} // Consider the commuted order. -if (NC == 2) - CombineChildVariants(N, ChildVariants[1], ChildVariants[0], - OutVariants, ISE); +CombineChildVariants(N, ChildVariants[1], ChildVariants[0], + OutVariants, ISE); } } @@ -2119,6 +2106,8 @@ // 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 @@ -2242,6 +2231,8 @@ 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; @@ -2289,8 +2280,14 @@ PInfo.hasProperty(SDNodeInfo::SDNPHasChain) || PInfo.hasProperty(SDNodeInfo::SDNPInFlag) || PInfo.hasProperty(SDNodeInfo::SDNPOptInFlag)) -emitCheck("CanBeFoldedBy(" + RootName + ".Val, " + ParentName + - ".Val)"); +if (PInfo.getNumOperands() > 1) { + emitCheck("!isNonImmUse(" + ParentName + ".Val, " + RootName + +".Val)"); +} else { + emitCheck("(" + ParentName + ".getNumOperands() == 1 || !" + +"isNonImmUse(" + ParentName + ".Val, " + RootName + +".Val))"); +} } } @@ -2482,11 +2479,27 @@ for (unsigned i = 0; i < NumRes; ++i) emitDecl("CPTmp" + utostr(i+ResNo)); -std::string Code = Fn + "(" + Val; +std::string Code = "bool Match = " + Fn + "(" + Val; for (unsigned i = 0; i < NumRes; i++) Code += ", CPTmp" + utostr(i + ResNo); -emitCheck(Code + ")"); +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" + @@ -2601,6 +2614,22 @@ } } + // 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 + ".Va
[llvm-commits] [release_18] CVS: llvm/utils/TableGen/DAGISelEmitter.cpp
Changes in directory llvm/utils/TableGen: DAGISelEmitter.cpp updated: 1.226.2.3 -> 1.226.2.4 --- Log message: Apply patch from mainline for GCC 3.3 compatibility. --- Diffs of the changes: (+2 -0) DAGISelEmitter.cpp |2 ++ 1 files changed, 2 insertions(+) Index: llvm/utils/TableGen/DAGISelEmitter.cpp diff -u llvm/utils/TableGen/DAGISelEmitter.cpp:1.226.2.3 llvm/utils/TableGen/DAGISelEmitter.cpp:1.226.2.4 --- llvm/utils/TableGen/DAGISelEmitter.cpp:1.226.2.3Wed Aug 9 11:46:19 2006 +++ llvm/utils/TableGen/DAGISelEmitter.cpp Wed Aug 9 11:55:25 2006 @@ -3633,6 +3633,8 @@ OS << "#if defined(__GNUC__) && \\\n"; OS << "((__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 4)))\n"; OS << "#define NOINLINE __attribute__((noinline))\n"; + OS << "#else\n\n"; + OS << "#define NOINLINE\n\n"; OS << "#endif\n\n"; OS << "// Instance var to keep track of multiply used nodes that have \n" ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-www/releases/1.8/llvm-1.8a.tar.gz
Changes in directory llvm-www/releases/1.8: llvm-1.8a.tar.gz added (r1.1) --- Log message: New tar ball with ISelEmitter.cpp patch for GCC 3.3 compatibility. --- Diffs of the changes: (+0 -0) llvm-1.8a.tar.gz |0 1 files changed Index: llvm-www/releases/1.8/llvm-1.8a.tar.gz ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-www/releases/download.html
Changes in directory llvm-www/releases: download.html updated: 1.35 -> 1.36 --- Log message: Adjust link to new tar for 1.8a --- Diffs of the changes: (+1 -1) download.html |2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm-www/releases/download.html diff -u llvm-www/releases/download.html:1.35 llvm-www/releases/download.html:1.36 --- llvm-www/releases/download.html:1.35Wed Aug 9 01:02:21 2006 +++ llvm-www/releases/download.html Wed Aug 9 12:00:24 2006 @@ -39,7 +39,7 @@ downloading: -LLVM source code (4.5M) +LLVM source code (4.5M) LLVM Test Suite (11.6M) LLVM-GCC 3.4 Front End Binaries for Linux/x86 (6.4M) LLVM-GCC 3.4 Front End Binaries for MacOS X/PowerPC (6.5M) ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/docs/ReleaseNotes.html
Changes in directory llvm/docs: ReleaseNotes.html updated: 1.361 -> 1.362 --- Log message: Fixed misspelling --- Diffs of the changes: (+2 -2) ReleaseNotes.html |4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) Index: llvm/docs/ReleaseNotes.html diff -u llvm/docs/ReleaseNotes.html:1.361 llvm/docs/ReleaseNotes.html:1.362 --- llvm/docs/ReleaseNotes.html:1.361 Tue Aug 8 23:10:32 2006 +++ llvm/docs/ReleaseNotes.html Wed Aug 9 12:08:27 2006 @@ -61,7 +61,7 @@ -This is the nineth public release of the LLVM Compiler Infrastructure. This +This is the ninth public release of the LLVM Compiler Infrastructure. This release incorporates a large number of enhancements and new features, including DWARF debugging support (C and C++ on Darwin/PPC), improved inline assembly support, a new http://llvm.org/nightlytest/";>nightly @@ -684,7 +684,7 @@ src="http://www.w3.org/Icons/valid-html401"; alt="Valid HTML 4.01!" /> http://llvm.org/";>The LLVM Compiler Infrastructure - Last modified: $Date: 2006/08/09 04:10:32 $ + Last modified: $Date: 2006/08/09 17:08:27 $ ___ 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/ARMRegisterInfo.cpp ARMTargetMachine.cpp
Changes in directory llvm/lib/Target/ARM: ARMRegisterInfo.cpp updated: 1.13 -> 1.14 ARMTargetMachine.cpp updated: 1.3 -> 1.4 --- Log message: correctly set LocalAreaOffset of TargetFrameInfo --- Diffs of the changes: (+1 -6) ARMRegisterInfo.cpp |5 - ARMTargetMachine.cpp |2 +- 2 files changed, 1 insertion(+), 6 deletions(-) Index: llvm/lib/Target/ARM/ARMRegisterInfo.cpp diff -u llvm/lib/Target/ARM/ARMRegisterInfo.cpp:1.13 llvm/lib/Target/ARM/ARMRegisterInfo.cpp:1.14 --- llvm/lib/Target/ARM/ARMRegisterInfo.cpp:1.13Wed Aug 9 11:41:12 2006 +++ llvm/lib/Target/ARM/ARMRegisterInfo.cpp Wed Aug 9 12:37:45 2006 @@ -93,11 +93,6 @@ unsigned StackSize = MF.getFrameInfo()->getStackSize(); - // - if (Offset < 0) -Offset -= 4; - // - Offset += StackSize; assert (Offset >= 0); Index: llvm/lib/Target/ARM/ARMTargetMachine.cpp diff -u llvm/lib/Target/ARM/ARMTargetMachine.cpp:1.3 llvm/lib/Target/ARM/ARMTargetMachine.cpp:1.4 --- llvm/lib/Target/ARM/ARMTargetMachine.cpp:1.3Fri Jun 16 13:22:52 2006 +++ llvm/lib/Target/ARM/ARMTargetMachine.cppWed Aug 9 12:37:45 2006 @@ -33,7 +33,7 @@ /// ARMTargetMachine::ARMTargetMachine(const Module &M, const std::string &FS) : TargetMachine("ARM"), DataLayout("E-p:32:32"), -FrameInfo(TargetFrameInfo::StackGrowsDown, 8, 0) { +FrameInfo(TargetFrameInfo::StackGrowsDown, 8, -4) { } unsigned ARMTargetMachine::getModuleMatchQuality(const Module &M) { ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/utils/findsym.pl
Changes in directory llvm/utils: findsym.pl updated: 1.1 -> 1.2 --- Log message: Fix a comment. --- Diffs of the changes: (+1 -2) findsym.pl |3 +-- 1 files changed, 1 insertion(+), 2 deletions(-) Index: llvm/utils/findsym.pl diff -u llvm/utils/findsym.pl:1.1 llvm/utils/findsym.pl:1.2 --- llvm/utils/findsym.pl:1.1 Thu Mar 23 17:04:50 2006 +++ llvm/utils/findsym.pl Wed Aug 9 14:40:13 2006 @@ -5,14 +5,13 @@ # Synopsis: Generate a list of the libraries in which a symbol is defined or # referenced. # -# Syntax: GenLibDeps.pl +# Syntax: findsym.pl # # Give first option a name. my $Directory = $ARGV[0]; my $Symbol = $ARGV[1]; - # Open the directory and read its contents, sorting by name and differentiating # by whether its a library (.a) or an object file (.o) opendir DIR,$Directory; ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-www/demo/index.cgi
Changes in directory llvm-www/demo: index.cgi updated: 1.59 -> 1.60 --- Log message: Add the invocation of llvm2cpp to the demo page. Also, rearrange the "what to do" options to make it more legible. --- Diffs of the changes: (+41 -33) index.cgi | 74 ++ 1 files changed, 41 insertions(+), 33 deletions(-) Index: llvm-www/demo/index.cgi diff -u llvm-www/demo/index.cgi:1.59 llvm-www/demo/index.cgi:1.60 --- llvm-www/demo/index.cgi:1.59Sat Jul 16 00:46:08 2005 +++ llvm-www/demo/index.cgi Wed Aug 9 17:28:57 2006 @@ -5,13 +5,13 @@ # doing remote web JO99C compilations. (It could still be used for that # purpose, though the two scripts have diverged somewhat.) # -# Last modified $Date: 2005/07/16 05:46:08 $ +# Last modified $Date: 2006/08/09 22:28:57 $ # use strict; use CGI; use POSIX; -use Mail::Send; +# use Mail::Send; $| = 1; @@ -105,8 +105,8 @@ sub mailto { my ( $recipient, $body ) = @_; -my $msg = - new Mail::Send( Subject => "LLVM Demo Page Run", To => $recipient ); +my $msg = "Nada"; +# new Mail::Send( Subject => "LLVM Demo Page Run", To => $recipient ); my $fh = $msg->open(); print $fh $body; $fh->close(); @@ -187,44 +187,45 @@ information about Stacker and examples.\n"; -print ""; -print -"Click here if you want Bitter Melon to run the resulting code through c++filt. Warning, the LLVM code produced will probably not be lexically valid, but it will be easier to understand.", - $c->checkbox( +print ''; + +print $c->checkbox( -name => 'cxxdemangle', -label => 'Demangle C++ names with c++filt' - ), - ""; -print ""; - + ),''; print -"Bitter Melon can also run the link-time optimizer for you, if you like (but she won't link your code with any libraries). Note that you have to define 'main' in your program for this to make much of a difference.", - $c->checkbox( +"Click here if you want Bitter Melon to run the resulting code through c++filt. Warning, the LLVM code produced will probably not be lexically valid, but it will be easier to understand."; + +print $c->checkbox( -name => 'linkopt', -label => 'Run link-time optimizer', -checked => 'checked' - ), - ""; - -print ""; - + ),""; print -"Would you believe that BitterMelon even has a stopwatch? Click here to get detailed compilation statistic and timings from each pass.", - $c->checkbox( +"Bitter Melon can also run the link-time optimizer for you, if you like (but she won't link your code with any libraries). Note that you have to define 'main' in your program for this to make much of a difference."; +print ""; + +print $c->checkbox( -name => 'showstats', --label => 'Show detailed statistics' - ), - ""; - -print ""; - -print "And further, the cat can even produce detailed information about the bytecode file generated!", - " Click here to get a detailed description of the various artifacts in the bytecode file your program generates.", - $c->checkbox( +-label => 'Show detailed pass statistics' + ), ""; +print +"Would you believe that BitterMelon even has a stopwatch? Click here to get detailed compilation statistic and timings from each pass."; +print ""; + +print $c->checkbox( -name => 'showbcanalysis', --label => 'Show detailed bytecode information' - ), - ""; +-label => 'Show detailed bytecode analysis' + ),""; +print "And further, the cat can even produce detailed information about the bytecode file generated! Click here to get a detailed description of the various artifacts in the bytecode file your program generates."; + +print ""; + +print $c->checkbox( +-name => 'showllvm2cpp', +-label => 'Show corresponding LLVM C++ code' + ),""; +print "And, BitterMelon, that fabulously talented cat can even turn your bytecode back into LLVM C++ that would produce the same bytecode! Click here to get a C++ program that generates the equivalent bytecode for your program by direct LLVM IR calls."; print ""; @@ -263,6 +264,9 @@ $sanitycheckfail .= ' llvm-bcanalyzer' if `llvm-bcanalyzer --help 2>&1` !~ /bcanalyzer/; +$sanitycheckfail .= ' llvm2cpp' + if `llvm2cpp --help 2>&1` !~ /llvm2cpp/; + barf( "The demo page is currently unavailable. [tools: ($sanitycheckfail ) failed sanity check]" ) @@ -434,6 +438,10 @@ try_run( "llvm-bcanalyzer", "llvm-bcanalyzer $bytecodeFile > $analFile 2>&1", $analFile); } +if ($c->param('showllvm2cpp') ) { + my $l2cppFile = getname(".l2cpp"); + try_run("llvm2cpp","llvm2cpp $bytecodeFile -o l2cppFile 2>&1",$l2cppFile); +} addlog( $source, $pid, $UnhilightedResult ); my ( $ip, $host, $lg, $lines ); ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-www/demo/index.cgi
Changes in directory llvm-www/demo: index.cgi updated: 1.60 -> 1.61 --- Log message: Take llvm2cpp out of the sanity check to restore the demo page. --- Diffs of the changes: (+1 -4) index.cgi |5 + 1 files changed, 1 insertion(+), 4 deletions(-) Index: llvm-www/demo/index.cgi diff -u llvm-www/demo/index.cgi:1.60 llvm-www/demo/index.cgi:1.61 --- llvm-www/demo/index.cgi:1.60Wed Aug 9 17:28:57 2006 +++ llvm-www/demo/index.cgi Wed Aug 9 17:31:44 2006 @@ -5,7 +5,7 @@ # doing remote web JO99C compilations. (It could still be used for that # purpose, though the two scripts have diverged somewhat.) # -# Last modified $Date: 2006/08/09 22:28:57 $ +# Last modified $Date: 2006/08/09 22:31:44 $ # use strict; @@ -264,9 +264,6 @@ $sanitycheckfail .= ' llvm-bcanalyzer' if `llvm-bcanalyzer --help 2>&1` !~ /bcanalyzer/; -$sanitycheckfail .= ' llvm2cpp' - if `llvm2cpp --help 2>&1` !~ /llvm2cpp/; - barf( "The demo page is currently unavailable. [tools: ($sanitycheckfail ) failed sanity check]" ) ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-www/demo/index.cgi
Changes in directory llvm-www/demo: index.cgi updated: 1.61 -> 1.62 --- Log message: Remove temporary hack! --- Diffs of the changes: (+4 -4) index.cgi |8 1 files changed, 4 insertions(+), 4 deletions(-) Index: llvm-www/demo/index.cgi diff -u llvm-www/demo/index.cgi:1.61 llvm-www/demo/index.cgi:1.62 --- llvm-www/demo/index.cgi:1.61Wed Aug 9 17:31:44 2006 +++ llvm-www/demo/index.cgi Wed Aug 9 17:33:19 2006 @@ -5,13 +5,13 @@ # doing remote web JO99C compilations. (It could still be used for that # purpose, though the two scripts have diverged somewhat.) # -# Last modified $Date: 2006/08/09 22:31:44 $ +# Last modified $Date: 2006/08/09 22:33:19 $ # use strict; use CGI; use POSIX; -# use Mail::Send; +use Mail::Send; $| = 1; @@ -105,8 +105,8 @@ sub mailto { my ( $recipient, $body ) = @_; -my $msg = "Nada"; -# new Mail::Send( Subject => "LLVM Demo Page Run", To => $recipient ); +my $msg = + new Mail::Send( Subject => "LLVM Demo Page Run", To => $recipient ); my $fh = $msg->open(); print $fh $body; $fh->close(); ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-www/demo/index.cgi
Changes in directory llvm-www/demo: index.cgi updated: 1.62 -> 1.63 --- Log message: Make a timeout on the usage lock. --- Diffs of the changes: (+10 -7) index.cgi | 17 ++--- 1 files changed, 10 insertions(+), 7 deletions(-) Index: llvm-www/demo/index.cgi diff -u llvm-www/demo/index.cgi:1.62 llvm-www/demo/index.cgi:1.63 --- llvm-www/demo/index.cgi:1.62Wed Aug 9 17:33:19 2006 +++ llvm-www/demo/index.cgi Wed Aug 9 17:47:28 2006 @@ -5,7 +5,7 @@ # doing remote web JO99C compilations. (It could still be used for that # purpose, though the two scripts have diverged somewhat.) # -# Last modified $Date: 2006/08/09 22:33:19 $ +# Last modified $Date: 2006/08/09 22:47:28 $ # use strict; @@ -140,12 +140,15 @@ print ""; } -if ( -f "/tmp/webcompile/locked" ) { - -print "Bitter Melon the cat says, 'this page is already in use by someone else at this "; -print "time, try reloading in a second or two. Meow!'\n"; -exit 0; - +if ( -f "/tmp/webcompile/locked" ) { + my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$locktime) = +stat("/tmp/webcompile/locked"); + my $currtime = time(); + if ($locktime + 60 > $currtime) { +print "Bitter Melon the cat says, 'this page is already in use by someone else at this "; +print "time, try reloading in a second or two. Meow!'\n"; +exit 0; + } } system("touch /tmp/webcompile/locked"); ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/docs/HowToReleaseLLVM.html
Changes in directory llvm/docs: HowToReleaseLLVM.html updated: 1.8 -> 1.9 --- Log message: Adding notes from release experience. --- Diffs of the changes: (+37 -1) HowToReleaseLLVM.html | 38 +- 1 files changed, 37 insertions(+), 1 deletion(-) Index: llvm/docs/HowToReleaseLLVM.html diff -u llvm/docs/HowToReleaseLLVM.html:1.8 llvm/docs/HowToReleaseLLVM.html:1.9 --- llvm/docs/HowToReleaseLLVM.html:1.8 Tue Apr 11 17:02:18 2006 +++ llvm/docs/HowToReleaseLLVM.html Wed Aug 9 19:23:05 2006 @@ -56,11 +56,13 @@ Make LibDeps.txt Settle LLVM HEAD Tag LLVM and Create the Release Branch +Update LLVM Version Build LLVM Run 'make check' Run LLVM Test Suite Build the LLVM Source Distributions Build the LLVM GCC Binary Distribution +Update the LLVM Website @@ -138,12 +140,20 @@ "ROOT_RELEASE_XX" where XX is the major and minor release numbers (you can't have . in a cvs tag name). So, for Release 1.2, XX=12 and for Release 1.10, XX=110. + + +cvs tag ROOT_RELEASE_XX + Immediately create cvs branches based on the ROOT_RELEASE_XX tag. The tag should be "release_XX" (where XX matches that used for the ROOT_RELEASE_XX tag). This is where the release distribution will be created. + + +cvs tag -b -r ROOT_RELEASE_XX release_XX + @@ -165,6 +175,17 @@ +Update LLVM Version + + + After creating the llvm release branch, update the release branch's autoconf/configure.ac + version from X.Xcvs to just X.X. Update it on mainline as well to be the next version + (X.X+1cvs). + + + + + Build LLVM @@ -274,6 +295,21 @@ + + +Update the LLVM Website + + + Check out the llvm-www module from cvs. Create a new subdirectory X.X in the + releases directory. Place the llvm, llvm-test, llvm-gcc source, and llvm-gcc + binaries in this new directory. Copy the llvm/docs and LICENSE.txt files + into this new directory. Update the releases/download.html file with the new release. + Update the releases/index.html with the new release. Finally, update the main page ( + index.html and sidebar) to point to the new release and release announcement. Make + sure this all gets commited back into cvs. + + +
[llvm-commits] CVS: llvm/include/llvm/Target/MRegisterInfo.h
Changes in directory llvm/include/llvm/Target: MRegisterInfo.h updated: 1.80 -> 1.81 --- Log message: Doxygenify some methods. --- Diffs of the changes: (+8 -4) MRegisterInfo.h | 12 1 files changed, 8 insertions(+), 4 deletions(-) Index: llvm/include/llvm/Target/MRegisterInfo.h diff -u llvm/include/llvm/Target/MRegisterInfo.h:1.80 llvm/include/llvm/Target/MRegisterInfo.h:1.81 --- llvm/include/llvm/Target/MRegisterInfo.h:1.80 Thu Aug 3 13:57:28 2006 +++ llvm/include/llvm/Target/MRegisterInfo.hThu Aug 10 01:00:40 2006 @@ -66,17 +66,21 @@ RegSize(RS), Alignment(Al), RegsBegin(RB), RegsEnd(RE) {} virtual ~TargetRegisterClass() {} // Allow subclasses - // getID() - Return the register class ID number. + /// getID() - Return the register class ID number. + /// unsigned getID() const { return ID; } - // begin/end - Return all of the registers in this class. + /// begin/end - Return all of the registers in this class. + /// iterator begin() const { return RegsBegin; } iterator end() const { return RegsEnd; } - // getNumRegs - Return the number of registers in this class + /// getNumRegs - Return the number of registers in this class. + /// unsigned getNumRegs() const { return RegsEnd-RegsBegin; } - // getRegister - Return the specified register in the class + /// getRegister - Return the specified register in the class. + /// unsigned getRegister(unsigned i) const { assert(i < getNumRegs() && "Register number out of range!"); return RegsBegin[i]; ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits