[llvm-commits] CVS: llvm/include/llvm/CodeGen/SelectionDAGNodes.h
Changes in directory llvm/include/llvm/CodeGen: SelectionDAGNodes.h updated: 1.173 - 1.174 --- Log message: Add a new SDNode ctor and InitOperands method. This allows the operands for an SDNode to be allocated as part of the node itself, instead of being a separate new[]'d object. Switch HandleSDNode, LoadSDNode, and StoreSDNode to use this mechanism. This saves one heap allocation and free for each node of this type that is allocated. This reduces isel time from 2.7638 to 2.6164s on kc++, which is a 5.6% speedup. --- Diffs of the changes: (+69 -37) SelectionDAGNodes.h | 106 +--- 1 files changed, 69 insertions(+), 37 deletions(-) Index: llvm/include/llvm/CodeGen/SelectionDAGNodes.h diff -u llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1.173 llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1.174 --- llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1.173 Sun Feb 4 01:37:24 2007 +++ llvm/include/llvm/CodeGen/SelectionDAGNodes.h Sun Feb 4 02:13:53 2007 @@ -908,18 +908,39 @@ : NodeType(Opc), NodeId(-1) { OperandsNeedDelete = true; NumOperands = NumOps; -OperandList = new SDOperand[NumOperands]; +OperandList = NumOps ? new SDOperand[NumOperands] : 0; -for (unsigned i = 0, e = NumOps; i != e; ++i) { +for (unsigned i = 0; i != NumOps; ++i) { OperandList[i] = Ops[i]; - SDNode *N = OperandList[i].Val; - N-Uses.push_back(this); + Ops[i].Val-Uses.push_back(this); } + ValueList = VTs.VTs; NumValues = VTs.NumVTs; Prev = 0; Next = 0; } - + SDNode(unsigned Opc, SDVTList VTs) : NodeType(Opc), NodeId(-1) { +OperandsNeedDelete = false; // Operands set with InitOperands. +NumOperands = 0; +OperandList = 0; + +ValueList = VTs.VTs; +NumValues = VTs.NumVTs; +Prev = 0; Next = 0; + } + + /// InitOperands - Initialize the operands list of this node with the + /// specified values, which are part of the node (thus they don't need to be + /// copied in or allocated). + void InitOperands(SDOperand *Ops, unsigned NumOps) { +assert(OperandList == 0 Operands already set!); +NumOperands = NumOps; +OperandList = Ops; + +for (unsigned i = 0; i != NumOps; ++i) + Ops[i].Val-Uses.push_back(this); + } + /// MorphNodeTo - This frees the operands of the current node, resets the /// opcode, types, and operands to the specified value. This should only be /// used by the SelectionDAG class. @@ -980,11 +1001,14 @@ /// the AllNodes list. class HandleSDNode : public SDNode { virtual void ANCHOR(); // Out-of-line virtual method to give class a home. + SDOperand Op; public: - HandleSDNode(SDOperand X) : SDNode(ISD::HANDLENODE, getSDVTList(MVT::Other), - X, 1) {} + HandleSDNode(SDOperand X) +: SDNode(ISD::HANDLENODE, getSDVTList(MVT::Other)), Op(X) { +InitOperands(Op, 1); + } ~HandleSDNode(); - SDOperand getValue() const { return getOperand(0); } + SDOperand getValue() const { return Op; } }; class StringSDNode : public SDNode { @@ -993,7 +1017,7 @@ protected: friend class SelectionDAG; StringSDNode(const std::string val) -: SDNode(ISD::STRING, getSDVTList(MVT::Other), 0, 0), Value(val) { +: SDNode(ISD::STRING, getSDVTList(MVT::Other)), Value(val) { } public: const std::string getValue() const { return Value; } @@ -1009,8 +1033,8 @@ protected: friend class SelectionDAG; ConstantSDNode(bool isTarget, uint64_t val, MVT::ValueType VT) -: SDNode(isTarget ? ISD::TargetConstant : ISD::Constant, getSDVTList(VT), - 0, 0), Value(val) { +: SDNode(isTarget ? ISD::TargetConstant : ISD::Constant, getSDVTList(VT)), + Value(val) { } public: @@ -1040,8 +1064,7 @@ friend class SelectionDAG; ConstantFPSDNode(bool isTarget, double val, MVT::ValueType VT) : SDNode(isTarget ? ISD::TargetConstantFP : ISD::ConstantFP, - getSDVTList(VT), 0, 0), - Value(val) { + getSDVTList(VT)), Value(val) { } public: @@ -1067,10 +1090,9 @@ protected: friend class SelectionDAG; GlobalAddressSDNode(bool isTarget, const GlobalValue *GA, MVT::ValueType VT, - int o=0) + int o = 0) : SDNode(isTarget ? ISD::TargetGlobalAddress : ISD::GlobalAddress, - getSDVTList(VT), 0, 0), - Offset(o) { + getSDVTList(VT)), Offset(o) { TheGlobal = const_castGlobalValue*(GA); } public: @@ -1092,8 +1114,8 @@ protected: friend class SelectionDAG; FrameIndexSDNode(int fi, MVT::ValueType VT, bool isTarg) -: SDNode(isTarg ? ISD::TargetFrameIndex : ISD::FrameIndex, getSDVTList(VT), - 0, 0), FI(fi) { +: SDNode(isTarg ? ISD::TargetFrameIndex : ISD::FrameIndex, getSDVTList(VT)), + FI(fi) { } public: @@ -1112,8 +1134,8 @@ protected: friend class SelectionDAG; JumpTableSDNode(int jti,
[llvm-commits] CVS: llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
Changes in directory llvm/lib/CodeGen/SelectionDAG: SelectionDAG.cpp updated: 1.388 - 1.389 --- Log message: Introduce new UnarySDNode/BinarySDNode/TernarySDNode nodes, which coallocate their operands with the node itself. This reduces malloc traffic for operand lists. This reduces isel time on kc++ from 2.6164 to 2.5570s, about 2.3%. --- Diffs of the changes: (+29 -12) SelectionDAG.cpp | 41 + 1 files changed, 29 insertions(+), 12 deletions(-) Index: llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp diff -u llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:1.388 llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:1.389 --- llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:1.388Sun Feb 4 01:37:24 2007 +++ llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp Sun Feb 4 02:35:21 2007 @@ -939,7 +939,7 @@ void *IP = 0; if (SDNode *E = CSEMap.FindNodeOrInsertPos(ID, IP)) return SDOperand(E, 0); - SDNode *N = new SDNode(Opcode, SDNode::getSDVTList(VT), 0, 0); + SDNode *N = new SDNode(Opcode, SDNode::getSDVTList(VT)); CSEMap.InsertNode(N, IP); AllNodes.push_back(N); @@ -1113,17 +1113,17 @@ SDNode *N; SDVTList VTs = getVTList(VT); - SDOperand Ops[1] = { Operand }; if (VT != MVT::Flag) { // Don't CSE flag producing nodes FoldingSetNodeID ID; +SDOperand Ops[1] = { Operand }; AddNodeIDNode(ID, Opcode, VTs, Ops, 1); void *IP = 0; if (SDNode *E = CSEMap.FindNodeOrInsertPos(ID, IP)) return SDOperand(E, 0); -N = new SDNode(Opcode, VTs, Ops, 1); +N = new UnarySDNode(Opcode, VTs, Operand); CSEMap.InsertNode(N, IP); } else { -N = new SDNode(Opcode, VTs, Ops, 1); +N = new UnarySDNode(Opcode, VTs, Operand); } AllNodes.push_back(N); return SDOperand(N, 0); @@ -1413,17 +1413,17 @@ // Memoize this node if possible. SDNode *N; SDVTList VTs = getVTList(VT); - SDOperand Ops[] = { N1, N2 }; if (VT != MVT::Flag) { +SDOperand Ops[] = { N1, N2 }; FoldingSetNodeID ID; AddNodeIDNode(ID, Opcode, VTs, Ops, 2); void *IP = 0; if (SDNode *E = CSEMap.FindNodeOrInsertPos(ID, IP)) return SDOperand(E, 0); -N = new SDNode(Opcode, VTs, Ops, 2); +N = new BinarySDNode(Opcode, VTs, N1, N2); CSEMap.InsertNode(N, IP); } else { -N = new SDNode(Opcode, VTs, Ops, 2); +N = new BinarySDNode(Opcode, VTs, N1, N2); } AllNodes.push_back(N); @@ -1470,17 +1470,17 @@ // Memoize node if it doesn't produce a flag. SDNode *N; SDVTList VTs = getVTList(VT); - SDOperand Ops[] = { N1, N2, N3 }; if (VT != MVT::Flag) { +SDOperand Ops[] = { N1, N2, N3 }; FoldingSetNodeID ID; AddNodeIDNode(ID, Opcode, VTs, Ops, 3); void *IP = 0; if (SDNode *E = CSEMap.FindNodeOrInsertPos(ID, IP)) return SDOperand(E, 0); -N = new SDNode(Opcode, VTs, Ops, 3); +N = new TernarySDNode(Opcode, VTs, N1, N2, N3); CSEMap.InsertNode(N, IP); } else { -N = new SDNode(Opcode, VTs, Ops, 3); +N = new TernarySDNode(Opcode, VTs, N1, N2, N3); } AllNodes.push_back(N); return SDOperand(N, 0); @@ -1809,10 +1809,24 @@ void *IP = 0; if (SDNode *E = CSEMap.FindNodeOrInsertPos(ID, IP)) return SDOperand(E, 0); -N = new SDNode(Opcode, VTList, Ops, NumOps); +if (NumOps == 1) + N = new UnarySDNode(Opcode, VTList, Ops[0]); +else if (NumOps == 2) + N = new BinarySDNode(Opcode, VTList, Ops[0], Ops[1]); +else if (NumOps == 3) + N = new TernarySDNode(Opcode, VTList, Ops[0], Ops[1], Ops[2]); +else + N = new SDNode(Opcode, VTList, Ops, NumOps); CSEMap.InsertNode(N, IP); } else { -N = new SDNode(Opcode, VTList, Ops, NumOps); +if (NumOps == 1) + N = new UnarySDNode(Opcode, VTList, Ops[0]); +else if (NumOps == 2) + N = new BinarySDNode(Opcode, VTList, Ops[0], Ops[1]); +else if (NumOps == 3) + N = new TernarySDNode(Opcode, VTList, Ops[0], Ops[1], Ops[2]); +else + N = new SDNode(Opcode, VTList, Ops, NumOps); } AllNodes.push_back(N); return SDOperand(N, 0); @@ -2490,6 +2504,9 @@ // Out-of-line virtual method to give class a home. void SDNode::ANCHOR() {} +void UnarySDNode::ANCHOR() {} +void BinarySDNode::ANCHOR() {} +void TernarySDNode::ANCHOR() {} void HandleSDNode::ANCHOR() {} void StringSDNode::ANCHOR() {} void ConstantSDNode::ANCHOR() {} ___ 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/SelectionDAGNodes.h
Changes in directory llvm/include/llvm/CodeGen: SelectionDAGNodes.h updated: 1.174 - 1.175 --- Log message: Introduce new UnarySDNode/BinarySDNode/TernarySDNode nodes, which coallocate their operands with the node itself. This reduces malloc traffic for operand lists. This reduces isel time on kc++ from 2.6164 to 2.5570s, about 2.3%. --- Diffs of the changes: (+43 -0) SelectionDAGNodes.h | 43 +++ 1 files changed, 43 insertions(+) Index: llvm/include/llvm/CodeGen/SelectionDAGNodes.h diff -u llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1.174 llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1.175 --- llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1.174 Sun Feb 4 02:13:53 2007 +++ llvm/include/llvm/CodeGen/SelectionDAGNodes.h Sun Feb 4 02:35:21 2007 @@ -995,6 +995,49 @@ return Val-hasNUsesOfValue(1, ResNo); } +/// UnarySDNode - This class is used for single-operand SDNodes. This is solely +/// to allow co-allocation of node operands with the node itself. +class UnarySDNode : public SDNode { + virtual void ANCHOR(); // Out-of-line virtual method to give class a home. + SDOperand Op; +public: + UnarySDNode(unsigned Opc, SDVTList VTs, SDOperand X) +: SDNode(Opc, VTs), Op(X) { +InitOperands(Op, 1); + } +}; + +/// BinarySDNode - This class is used for two-operand SDNodes. This is solely +/// to allow co-allocation of node operands with the node itself. +class BinarySDNode : public SDNode { + virtual void ANCHOR(); // Out-of-line virtual method to give class a home. + SDOperand Ops[2]; +public: + BinarySDNode(unsigned Opc, SDVTList VTs, SDOperand X, SDOperand Y) +: SDNode(Opc, VTs) { +Ops[0] = X; +Ops[1] = Y; +InitOperands(Ops, 2); + } +}; + +/// TernarySDNode - This class is used for three-operand SDNodes. This is solely +/// to allow co-allocation of node operands with the node itself. +class TernarySDNode : public SDNode { + virtual void ANCHOR(); // Out-of-line virtual method to give class a home. + SDOperand Ops[3]; +public: + TernarySDNode(unsigned Opc, SDVTList VTs, SDOperand X, SDOperand Y, +SDOperand Z) +: SDNode(Opc, VTs) { +Ops[0] = X; +Ops[1] = Y; +Ops[2] = Z; +InitOperands(Ops, 3); + } +}; + + /// HandleSDNode - This class is used to form a handle around another node that /// is persistant and is updated across invocations of replaceAllUsesWith on its /// operand. This node should be directly created by end-users and not added to ___ 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/ScheduleDAG.h
Changes in directory llvm/include/llvm/CodeGen: ScheduleDAG.h updated: 1.36 - 1.37 --- Log message: switch the VRBaseMap in the scheduler from an std::map to a DenseMap. This speeds up the isel pass from 2.5570s to 2.4722s on kc++ (3.4%). --- Diffs of the changes: (+2 -2) ScheduleDAG.h |4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) Index: llvm/include/llvm/CodeGen/ScheduleDAG.h diff -u llvm/include/llvm/CodeGen/ScheduleDAG.h:1.36 llvm/include/llvm/CodeGen/ScheduleDAG.h:1.37 --- llvm/include/llvm/CodeGen/ScheduleDAG.h:1.36Fri Feb 2 19:34:13 2007 +++ llvm/include/llvm/CodeGen/ScheduleDAG.h Sun Feb 4 02:47:20 2007 @@ -240,7 +240,7 @@ /// VRBaseMap contains, for each already emitted node, the first virtual /// register number for the results of the node. /// -void EmitNode(SDNode *Node, std::mapSDNode*, unsigned VRBaseMap); +void EmitNode(SDNode *Node, DenseMapSDNode*, unsigned VRBaseMap); /// EmitNoop - Emit a noop instruction. /// @@ -257,7 +257,7 @@ private: void AddOperand(MachineInstr *MI, SDOperand Op, unsigned IIOpNum, const TargetInstrDescriptor *II, -std::mapSDNode*, unsigned VRBaseMap); +DenseMapSDNode*, unsigned VRBaseMap); }; /// createBFS_DAGScheduler - This creates a simple breadth first instruction ___ 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/ScheduleDAG.cpp ScheduleDAGSimple.cpp
Changes in directory llvm/lib/CodeGen/SelectionDAG: ScheduleDAG.cpp updated: 1.117 - 1.118 ScheduleDAGSimple.cpp updated: 1.24 - 1.25 --- Log message: switch the VRBaseMap in the scheduler from an std::map to a DenseMap. This speeds up the isel pass from 2.5570s to 2.4722s on kc++ (3.4%). --- Diffs of the changes: (+6 -6) ScheduleDAG.cpp | 10 +- ScheduleDAGSimple.cpp |2 +- 2 files changed, 6 insertions(+), 6 deletions(-) Index: llvm/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp diff -u llvm/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp:1.117 llvm/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp:1.118 --- llvm/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp:1.117 Fri Jan 26 08:34:51 2007 +++ llvm/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp Sun Feb 4 02:47:20 2007 @@ -269,8 +269,8 @@ /// getVR - Return the virtual register corresponding to the specified result /// of the specified node. -static unsigned getVR(SDOperand Op, std::mapSDNode*, unsigned VRBaseMap) { - std::mapSDNode*, unsigned::iterator I = VRBaseMap.find(Op.Val); +static unsigned getVR(SDOperand Op, DenseMapSDNode*, unsigned VRBaseMap) { + DenseMapSDNode*, unsigned::iterator I = VRBaseMap.find(Op.Val); assert(I != VRBaseMap.end() Node emitted out of order - late); return I-second + Op.ResNo; } @@ -283,7 +283,7 @@ void ScheduleDAG::AddOperand(MachineInstr *MI, SDOperand Op, unsigned IIOpNum, const TargetInstrDescriptor *II, - std::mapSDNode*, unsigned VRBaseMap) { + DenseMapSDNode*, unsigned VRBaseMap) { if (Op.isTargetOpcode()) { // Note that this case is redundant with the final else block, but we // include it because it is the most common and it makes the logic @@ -371,7 +371,7 @@ /// EmitNode - Generate machine code for an node and needed dependencies. /// void ScheduleDAG::EmitNode(SDNode *Node, - std::mapSDNode*, unsigned VRBaseMap) { + DenseMapSDNode*, unsigned VRBaseMap) { unsigned VRBase = 0; // First virtual register for node // If machine instruction @@ -595,7 +595,7 @@ // Finally, emit the code for all of the scheduled instructions. - std::mapSDNode*, unsigned VRBaseMap; + DenseMapSDNode*, unsigned VRBaseMap; for (unsigned i = 0, e = Sequence.size(); i != e; i++) { if (SUnit *SU = Sequence[i]) { for (unsigned j = 0, ee = SU-FlaggedNodes.size(); j != ee; j++) Index: llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSimple.cpp diff -u llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSimple.cpp:1.24 llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSimple.cpp:1.25 --- llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSimple.cpp:1.24Wed Jan 31 22:55:59 2007 +++ llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSimple.cpp Sun Feb 4 02:47:20 2007 @@ -682,7 +682,7 @@ LI-first, RegMap-getRegClass(LI-second)); } - std::mapSDNode*, unsigned VRBaseMap; + DenseMapSDNode*, unsigned VRBaseMap; // For each node in the ordering for (unsigned i = 0, N = Ordering.size(); i N; i++) { ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-test/MultiSource/Applications/JM/disclaimer.txt Readme.txt
Changes in directory llvm-test/MultiSource/Applications/JM: disclaimer.txt added (r1.1) Readme.txt updated: 1.1 - 1.2 --- Log message: Old JM version removed --- Diffs of the changes: (+32 -2) Readme.txt |9 +++-- disclaimer.txt | 25 + 2 files changed, 32 insertions(+), 2 deletions(-) Index: llvm-test/MultiSource/Applications/JM/disclaimer.txt diff -c /dev/null llvm-test/MultiSource/Applications/JM/disclaimer.txt:1.1 *** /dev/null Sun Feb 4 08:24:03 2007 --- llvm-test/MultiSource/Applications/JM/disclaimer.txtSun Feb 4 08:23:53 2007 *** *** 0 --- 1,25 + /* + * Disclaimer of Warranty + * + * These software programs are available to the user without any + * license fee or royalty on an as is basis. The ITU-T + * disclaims any and all warranties, whether express, implied, or + * statutory, including any implied warranties of merchantability + * or of fitness for a particular purpose. In no event shall the + * copyright-holder be liable for any incidental, punitive, or + * consequential damages of any kind whatsoever arising from the + * use of these programs. + * + * This disclaimer of warranty extends to the user of these programs + * and user's customers, employees, agents, transferees, successors, + * and assigns. + * + * The ITU-T does not represent or warrant that the programs furnished + * hereunder are free of infringement of any third-party patents. + * Commercial implementations of ITU-T standards, including shareware, + * may be subject to royalty fees to patent holders. Information + * regarding the ITU patent policy is available from the ITU + * Web site at http://www.itu.int. + * + */ + Index: llvm-test/MultiSource/Applications/JM/Readme.txt diff -u llvm-test/MultiSource/Applications/JM/Readme.txt:1.1 llvm-test/MultiSource/Applications/JM/Readme.txt:1.2 --- llvm-test/MultiSource/Applications/JM/Readme.txt:1.1Sat Feb 11 04:33:22 2006 +++ llvm-test/MultiSource/Applications/JM/Readme.txtSun Feb 4 08:23:53 2007 @@ -16,8 +16,13 @@ 1.1 Windows --- - A workspace for MS Visual C++ is provided with the name tml.dsw. It contains - the encoder and decoder projects. + Workspaces for MS Visual C++ 6.0/2003/2005 are provided with the nams + +jm.dsw - MS Visual C++ 6.0 +jm_vc7.sln - MS Visual C++ 2003 +jm_vc8.sln - MS Visual C++ 2005 + + These contain encoder and decoder projects. 1.2 Unix ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-test/MultiSource/Applications/JM/ldecod/data/.cvsignore decoder.cfg test.264 test_rec.yuv
Changes in directory llvm-test/MultiSource/Applications/JM/ldecod/data: .cvsignore (r1.2) removed decoder.cfg (r1.1) removed test.264 (r1.2) removed test_rec.yuv (r1.1) removed --- Log message: Old JM version removed --- Diffs of the changes: (+0 -0) 0 files changed ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-test/MultiSource/Applications/JM/lencod/data/.cvsignore encoder.cfg foreman_part_qcif.yuv leakybucketparam.cfg test_rec.yuv
Changes in directory llvm-test/MultiSource/Applications/JM/lencod/data: .cvsignore (r1.1) removed encoder.cfg (r1.1) removed foreman_part_qcif.yuv (r1.1) removed leakybucketparam.cfg (r1.1) removed test_rec.yuv (r1.1) removed --- Log message: Old JM version removed --- Diffs of the changes: (+0 -0) 0 files changed ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-test/MultiSource/Applications/JM/lencod/.cvsignore Makefile annexb.c annexb.h biariencode.c biariencode.h block.c block.h cabac.c cabac.h configfile.c configfile.h context_ini
Changes in directory llvm-test/MultiSource/Applications/JM/lencod: .cvsignore (r1.2) removed Makefile (r1.1) removed annexb.c (r1.1) removed annexb.h (r1.1) removed biariencode.c (r1.1) removed biariencode.h (r1.1) removed block.c (r1.1) removed block.h (r1.1) removed cabac.c (r1.1) removed cabac.h (r1.1) removed configfile.c (r1.1) removed configfile.h (r1.1) removed context_ini.c (r1.1) removed context_ini.h (r1.1) removed contributors.h (r1.1) removed ctx_tables.h (r1.1) removed decoder.c (r1.1) removed defines.h (r1.1) removed elements.h (r1.1) removed epzs.c (r1.1) removed epzs.h (r1.1) removed explicit_gop.c (r1.1) removed explicit_gop.h (r1.1) removed fast_me.c (r1.1) removed fast_me.h (r1.1) removed filehandle.c (r1.1) removed fmo.c (r1.1) removed fmo.h (r1.1) removed global.h (r1.1) removed header.c (r1.1) removed header.h (r1.1) removed image.c (r1.1) removed image.h (r1.1) removed intrarefresh.c (r1.1) removed intrarefresh.h (r1.1) removed leaky_bucket.c (r1.1) removed leaky_bucket.h (r1.1) removed lencod.c (r1.1) removed loopFilter.c (r1.1) removed macroblock.c (r1.1) removed macroblock.h (r1.1) removed mb_access.c (r1.1) removed mb_access.h (r1.1) removed mbuffer.c (r1.1) removed mbuffer.h (r1.1) removed memalloc.c (r1.1) removed memalloc.h (r1.1) removed minmax.h (r1.1) removed mode_decision.c (r1.1) removed mode_decision.h (r1.1) removed mv-search.c (r1.1) removed mv-search.h (r1.1) removed nal.c (r1.1) removed nalu.c (r1.1) removed nalu.h (r1.1) removed nalucommon.c (r1.1) removed nalucommon.h (r1.1) removed output.c (r1.1) removed output.h (r1.1) removed parset.c (r1.1) removed parset.h (r1.1) removed parsetcommon.c (r1.1) removed parsetcommon.h (r1.1) removed q_matrix.c (r1.2) removed q_matrix.h (r1.1) removed q_offsets.c (r1.2) removed q_offsets.h (r1.1) removed ratectl.c (r1.1) removed ratectl.h (r1.1) removed rdopt.c (r1.1) removed rdopt_coding_state.c (r1.1) removed rdopt_coding_state.h (r1.1) removed rdpicdecision.c (r1.1) removed refbuf.c (r1.1) removed refbuf.h (r1.1) removed rtp.c (r1.1) removed rtp.h (r1.1) removed sei.c (r1.1) removed sei.h (r1.1) removed simplified_fast_me.c (r1.1) removed simplified_fast_me.h (r1.1) removed slice.c (r1.1) removed transform8x8.c (r1.1) removed transform8x8.h (r1.1) removed vlc.c (r1.1) removed vlc.h (r1.1) removed weighted_prediction.c (r1.1) removed --- Log message: Old JM version removed --- Diffs of the changes: (+0 -0) 0 files changed ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-test/External/SPEC/Makefile.spec
Changes in directory llvm-test/External/SPEC: Makefile.spec updated: 1.60 - 1.61 --- Log message: For PR1165: http://llvm.org/PR1165 : gccas-pass-args - opt-pass-args --- Diffs of the changes: (+2 -2) Makefile.spec |4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) Index: llvm-test/External/SPEC/Makefile.spec diff -u llvm-test/External/SPEC/Makefile.spec:1.60 llvm-test/External/SPEC/Makefile.spec:1.61 --- llvm-test/External/SPEC/Makefile.spec:1.60 Mon Dec 4 16:07:46 2006 +++ llvm-test/External/SPEC/Makefile.spec Sun Feb 4 13:39:34 2007 @@ -121,9 +121,9 @@ # Rules to bugpoint the GCCAS, GCCLD, LLC, or LLI commands... $(PROGRAMS_TO_TEST:%=Output/%.bugpoint-gccas): \ Output/%.bugpoint-gccas: Output/%.noopt-llvm.bc $(LBUGPOINT) \ - Output/gccas-pass-args Output/%.out-nat + Output/opt-pass-args Output/%.out-nat $(SPEC_SANDBOX) bugpoint-$(RUN_TYPE) $@ $(REF_IN_DIR) \ - $(LBUGPOINT) ../$*.noopt-llvm.bc `cat Output/gccas-pass-args` $(OPTPASSES) \ + $(LBUGPOINT) ../$*.noopt-llvm.bc `cat Output/opt-pass-args` $(OPTPASSES) \ $(BUGPOINT_OPTIONS) $(BUGPOINT_ARGS) @echo === Leaving Output/bugpoint-$(RUN_TYPE) ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/test/CodeGen/X86/2007-02-04-OrAddrMode.ll
Changes in directory llvm/test/CodeGen/X86: 2007-02-04-OrAddrMode.ll added (r1.1) --- Log message: new testcase for x86 backend miscompilation --- Diffs of the changes: (+21 -0) 2007-02-04-OrAddrMode.ll | 21 + 1 files changed, 21 insertions(+) Index: llvm/test/CodeGen/X86/2007-02-04-OrAddrMode.ll diff -c /dev/null llvm/test/CodeGen/X86/2007-02-04-OrAddrMode.ll:1.1 *** /dev/null Sun Feb 4 14:15:25 2007 --- llvm/test/CodeGen/X86/2007-02-04-OrAddrMode.ll Sun Feb 4 14:15:15 2007 *** *** 0 --- 1,21 + ; RUN: llvm-as %s | llc -march=x86 | grep 'orl $1, %eax' + ; RUN: llvm-as %s | llc -march=x86 | grep 'leal 3(,%eax,8)' + + ;; This example can't fold the or into an LEA. + define i32 @test(float ** %tmp2, i32 %tmp12) { + %tmp3 = load float** %tmp2 + %tmp132 = shl i32 %tmp12, 2 ; i32 [#uses=1] + %tmp3 = bitcast float* %tmp3 to i8* ; i8* [#uses=1] + %ctg2 = getelementptr i8* %tmp3, i32 %tmp132; i8* [#uses=1] + %tmp6 = ptrtoint i8* %ctg2 to i32 ; i32 [#uses=1] + %tmp14 = or i32 %tmp6, 1; i32 [#uses=1] + ret i32 %tmp14 + } + + + ;; This can! + define i32 @test2(i32 %a, i32 %b) { + %c = shl i32 %a, 3 + %d = or i32 %c, 3 + ret i32 %d + } ___ 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.144 - 1.145 --- Log message: Fix a miscompilation in the addr mode code trying to implement X | C and X + C to promote LEA formation. We would incorrectly apply it in some cases (test) and miss it in others. This fixes CodeGen/X86/2007-02-04-OrAddrMode.ll --- Diffs of the changes: (+17 -20) X86ISelDAGToDAG.cpp | 37 + 1 files changed, 17 insertions(+), 20 deletions(-) Index: llvm/lib/Target/X86/X86ISelDAGToDAG.cpp diff -u llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.144 llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.145 --- llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.144 Mon Jan 22 15:34:25 2007 +++ llvm/lib/Target/X86/X86ISelDAGToDAG.cpp Sun Feb 4 14:18:17 2007 @@ -677,7 +677,7 @@ if (!Available AM.BaseType == X86ISelAddressMode::RegBase AM.Base.Reg.Val == 0 -AM.IndexReg.Val == 0) +AM.IndexReg.Val == 0) { if (ConstantSDNode *CN = dyn_castConstantSDNode(N.Val-getOperand(1))) if (CN-getValue() == 3 || CN-getValue() == 5 || CN-getValue() == 9) { AM.Scale = unsigned(CN-getValue())-1; @@ -705,9 +705,10 @@ AM.IndexReg = AM.Base.Reg = Reg; return false; } +} break; - case ISD::ADD: { + case ISD::ADD: if (!Available) { X86ISelAddressMode Backup = AM; if (!MatchAddress(N.Val-getOperand(0), AM, false) @@ -720,32 +721,28 @@ AM = Backup; } break; - } - case ISD::OR: { + case ISD::OR: +// Handle X | C as X + C iff X is known to have C bits clear. if (!Available) { - X86ISelAddressMode Backup = AM; - // Look for (x c1) | c2 where (c2 c1) - ConstantSDNode *CN = dyn_castConstantSDNode(N.Val-getOperand(0)); - if (CN !MatchAddress(N.Val-getOperand(1), AM, false)) { -if (AM.GV == NULL AM.Disp == 0 CN-getValue() AM.Scale) { - AM.Disp = CN-getValue(); + if (ConstantSDNode *CN = dyn_castConstantSDNode(N.getOperand(1))) { +X86ISelAddressMode Backup = AM; +// Start with the LHS as an addr mode. +if (!MatchAddress(N.getOperand(0), AM, false) +// Address could not have picked a GV address for the displacement. +AM.GV == NULL +// On x86-64, the resultant disp must fit in 32-bits. +isInt32(AM.Disp + CN-getSignExtended()) +// Check to see if the LHS C is zero. +TLI.MaskedValueIsZero(N.getOperand(0), CN-getValue())) { + AM.Disp += CN-getValue(); return false; } +AM = Backup; } - AM = Backup; - CN = dyn_castConstantSDNode(N.Val-getOperand(1)); - if (CN !MatchAddress(N.Val-getOperand(0), AM, false)) { -if (AM.GV == NULL AM.Disp == 0 CN-getValue() AM.Scale) { - AM.Disp = CN-getValue(); - return false; -} - } - AM = Backup; } break; } - } // Is the base register already occupied? if (AM.BaseType != X86ISelAddressMode::RegBase || AM.Base.Reg.Val) { ___ 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
Changes in directory llvm/tools/llvm-config: Makefile updated: 1.22 - 1.23 --- Log message: Fix grammaro in output message. --- Diffs of the changes: (+1 -1) Makefile |2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/tools/llvm-config/Makefile diff -u llvm/tools/llvm-config/Makefile:1.22 llvm/tools/llvm-config/Makefile:1.23 --- llvm/tools/llvm-config/Makefile:1.22Sun Jan 21 09:53:18 2007 +++ llvm/tools/llvm-config/Makefile Sun Feb 4 16:08:16 2007 @@ -39,7 +39,7 @@ $(LibDeps): $(LibDepsTemp) $(Verb) $(CMP) -s $@ $ || ( $(CP) $ $@ \ - $(EchoCmd) Updated LibDeps.txt because dependencies changes ) + $(EchoCmd) Updated LibDeps.txt because dependencies changed ) # Find all the cyclic dependencies between various LLVM libraries, so we # don't have to process them at runtime. ___ 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.420 - 1.421 --- Log message: When using LINK_COMPONENTS, append the components to the end of the libraries linked with. This permits a project to still use USEDLIBS to specify its own libraries in conjunction with LINK_COMPONENTS. llvm-stacker needs this after libLLVMTransforms.a went away. --- Diffs of the changes: (+2 -2) Makefile.rules |4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) Index: llvm/Makefile.rules diff -u llvm/Makefile.rules:1.420 llvm/Makefile.rules:1.421 --- llvm/Makefile.rules:1.420 Fri Jan 26 07:34:50 2007 +++ llvm/Makefile.rules Sun Feb 4 16:12:25 2007 @@ -681,8 +681,8 @@ $(ToolDir)/$(strip $(TOOLNAME))$(EXEEXT): $(LLVM_CONFIG) -ProjLibsOptions = $(shell $(LLVM_CONFIG) --libs $(LINK_COMPONENTS)) -ProjLibsPaths = $(LLVM_CONFIG) \ +ProjLibsOptions += $(shell $(LLVM_CONFIG) --libs $(LINK_COMPONENTS)) +ProjLibsPaths += $(LLVM_CONFIG) \ $(shell $(LLVM_CONFIG) --libfiles $(LINK_COMPONENTS)) endif endif ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-stacker/lib/runtime/Makefile
Changes in directory llvm-stacker/lib/runtime: Makefile updated: 1.6 - 1.7 --- Log message: Make Stacker makefiles more compliant with LLVM standards. Fix linkage problems after libLLVMTransforms.a was removed. --- Diffs of the changes: (+3 -3) Makefile |6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) Index: llvm-stacker/lib/runtime/Makefile diff -u llvm-stacker/lib/runtime/Makefile:1.6 llvm-stacker/lib/runtime/Makefile:1.7 --- llvm-stacker/lib/runtime/Makefile:1.6 Thu Nov 2 18:08:08 2006 +++ llvm-stacker/lib/runtime/Makefile Sun Feb 4 16:25:16 2007 @@ -1,11 +1,11 @@ -##===- projects/Stacker/lib/runtime/Makefile ---*- Makefile -*-===## -# +#===-- projects/llvm-stacker/lib/runtime/Makefile ---*- Makefile -*-===# +# # The LLVM Compiler Infrastructure # # This file was developed by Reid Spencer and is distributed under the # University of Illinois Open Source License. See LICENSE.TXT for details. # -##===--===## +#======# LEVEL = ../.. DONT_BUILD_RELINKED = 1 ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-stacker/tools/Makefile
Changes in directory llvm-stacker/tools: Makefile updated: 1.3 - 1.4 --- Log message: Make Stacker makefiles more compliant with LLVM standards. Fix linkage problems after libLLVMTransforms.a was removed. --- Diffs of the changes: (+7 -11) Makefile | 18 +++--- 1 files changed, 7 insertions(+), 11 deletions(-) Index: llvm-stacker/tools/Makefile diff -u llvm-stacker/tools/Makefile:1.3 llvm-stacker/tools/Makefile:1.4 --- llvm-stacker/tools/Makefile:1.3 Sat Sep 4 14:48:50 2004 +++ llvm-stacker/tools/Makefile Sun Feb 4 16:25:16 2007 @@ -1,20 +1,16 @@ -##===- projects/Stacker/tools/Makefile -*- Makefile -*-===## +#===-- projects/llvm-stacker/tools/Makefile -*- Makefile -*-===# # -# This is the stacker tools makefile +# The LLVM Compiler Infrastructure # -##===--===## +# This file was developed by Reid Spencer and is distributed under the +# University of Illinois Open Source License. See LICENSE.TXT for details. +# +#======# -# # Indicates our relative path to the top of the project's root directory. -# LEVEL = .. -# -# Directories that needs to be built. -# +# Directories that need to be built. DIRS = stkrc -# -# Include the Master Makefile that knows how to build all. -# include $(LEVEL)/Makefile.common ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-stacker/tools/stkrc/Makefile
Changes in directory llvm-stacker/tools/stkrc: Makefile updated: 1.12 - 1.13 --- Log message: Make Stacker makefiles more compliant with LLVM standards. Fix linkage problems after libLLVMTransforms.a was removed. --- Diffs of the changes: (+17 -14) Makefile | 31 +-- 1 files changed, 17 insertions(+), 14 deletions(-) Index: llvm-stacker/tools/stkrc/Makefile diff -u llvm-stacker/tools/stkrc/Makefile:1.12 llvm-stacker/tools/stkrc/Makefile:1.13 --- llvm-stacker/tools/stkrc/Makefile:1.12 Thu Jul 6 19:20:39 2006 +++ llvm-stacker/tools/stkrc/Makefile Sun Feb 4 16:25:16 2007 @@ -1,22 +1,29 @@ -##===- projects/Stacker/lib/stkrc/Makefile -*- Makefile -*-===## - +#===-- projects/llvm-stacker/tools/stkrc/Makefile ---*- Makefile -*-===# # -# Indicate where we are relative to the top of the source tree. +# The LLVM Compiler Infrastructure # +# This file was developed by Reid Spencer and is distributed under the +# University of Illinois Open Source License. See LICENSE.TXT for details. +# +#======# + +# Indicate where we are relative to the top of the source tree. LEVEL=../.. -# # Give the name of a library. This will build a dynamic version. -# TOOLNAME = stkrc -LLVMLIBS = LLVMAsmParser.a LLVMBCWriter.a LLVMipo.a LLVMScalarOpts.a \ - LLVMTransforms.a LLVMTransformUtils.a LLVMipa.a LLVMAnalysis.a \ - LLVMTarget.a LLVMCore.a LLVMSupport.a LLVMbzip2.a LLVMSystem.a + +# Define the link components +USEDLIBS=stkr_compiler +LINK_COMPONENTS = asmparser bcwriter ipo scalaropts \ + transformutils ipa analysis target $(TARGETS_TO_BUILD) core + +# Define our configuration files CONFIG_FILES = st EXTRA_DIST = st -USEDLIBS=stkr_compiler -REQUIRES_EH := 1 +# We need exception handling +REQUIRES_EH := 1 ifdef PARSE_DEBUG CPPFLAGS = -DPARSE_DEBUG=1 @@ -26,8 +33,4 @@ CPPFLAGS += -DFLEX_DEBUG=1 endif -# -# Include Makefile.common so we know what to do. -# include $(LEVEL)/Makefile.common - ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-stacker/lib/Makefile
Changes in directory llvm-stacker/lib: Makefile updated: 1.8 - 1.9 --- Log message: Make Stacker makefiles more compliant with LLVM standards. Fix linkage problems after libLLVMTransforms.a was removed. --- Diffs of the changes: (+9 -3) Makefile | 12 +--- 1 files changed, 9 insertions(+), 3 deletions(-) Index: llvm-stacker/lib/Makefile diff -u llvm-stacker/lib/Makefile:1.8 llvm-stacker/lib/Makefile:1.9 --- llvm-stacker/lib/Makefile:1.8 Sat Nov 4 21:58:44 2006 +++ llvm-stacker/lib/Makefile Sun Feb 4 16:25:16 2007 @@ -1,8 +1,15 @@ -##===- projects/Stacker/lib/Makefile ---*- Makefile -*-===## +#===-- projects/llvm-stacker/lib/Makefile ---*- Makefile -*-===# +# +# The LLVM Compiler Infrastructure +# +# This file was developed by Reid Spencer and is distributed under the +# University of Illinois Open Source License. See LICENSE.TXT for details. +# +#======# # # Compile Stacker libraries # -##===--===## +#======# LEVEL = .. DIRS = compiler runtime @@ -13,4 +20,3 @@ ifeq ($(strip $(LLVMGCC)),) DIRS := $(filter-out runtime, $(DIRS)) endif - ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-stacker/samples/Makefile
Changes in directory llvm-stacker/samples: Makefile updated: 1.8 - 1.9 --- Log message: Make Stacker makefiles more compliant with LLVM standards. Fix linkage problems after libLLVMTransforms.a was removed. --- Diffs of the changes: (+10 -5) Makefile | 15 ++- 1 files changed, 10 insertions(+), 5 deletions(-) Index: llvm-stacker/samples/Makefile diff -u llvm-stacker/samples/Makefile:1.8 llvm-stacker/samples/Makefile:1.9 --- llvm-stacker/samples/Makefile:1.8 Sat Oct 30 04:26:22 2004 +++ llvm-stacker/samples/Makefile Sun Feb 4 16:25:16 2007 @@ -1,12 +1,17 @@ -##===- projects/sample/Makefile *- Makefile -*-===## +#===-- projects/llvm-stacker/samples/Makefile ---*- Makefile -*-===# # -# This is a sample Makefile for a project that uses LLVM. +# The LLVM Compiler Infrastructure # -##===--===## - +# This file was developed by Reid Spencer and is distributed under the +# University of Illinois Open Source License. See LICENSE.TXT for details. +# +#======# # -# Indicates our relative path to the top of the project's root directory. +# This makefile builds some sample stacker programs. # +#======# + +# Indicates our relative path to the top of the project's root directory. LEVEL = ../../.. DIRS = ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-stacker/lib/compiler/Makefile
Changes in directory llvm-stacker/lib/compiler: Makefile updated: 1.10 - 1.11 --- Log message: Make Stacker makefiles more compliant with LLVM standards. Fix linkage problems after libLLVMTransforms.a was removed. --- Diffs of the changes: (+8 -1) Makefile |9 - 1 files changed, 8 insertions(+), 1 deletion(-) Index: llvm-stacker/lib/compiler/Makefile diff -u llvm-stacker/lib/compiler/Makefile:1.10 llvm-stacker/lib/compiler/Makefile:1.11 --- llvm-stacker/lib/compiler/Makefile:1.10 Fri Aug 25 12:15:23 2006 +++ llvm-stacker/lib/compiler/Makefile Sun Feb 4 16:25:16 2007 @@ -1,4 +1,11 @@ -##===- projects/Stacker/lib/compiler/Makefile --*- Makefile -*-===## +#===-- projects/llvm-stacker/lib/compiler/Makefile --*- Makefile -*-===# +# +# The LLVM Compiler Infrastructure +# +# This file was developed by Reid Spencer and is distributed under the +# University of Illinois Open Source License. See LICENSE.TXT for details. +# +#======# LEVEL := ../.. LIBRARYNAME := stkr_compiler ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-stacker/test/Makefile
Changes in directory llvm-stacker/test: Makefile updated: 1.11 - 1.12 --- Log message: Make Stacker makefiles more compliant with LLVM standards. Fix linkage problems after libLLVMTransforms.a was removed. --- Diffs of the changes: (+9 -8) Makefile | 17 + 1 files changed, 9 insertions(+), 8 deletions(-) Index: llvm-stacker/test/Makefile diff -u llvm-stacker/test/Makefile:1.11 llvm-stacker/test/Makefile:1.12 --- llvm-stacker/test/Makefile:1.11 Wed Dec 13 02:03:25 2006 +++ llvm-stacker/test/Makefile Sun Feb 4 16:25:16 2007 @@ -1,22 +1,23 @@ -##===- projects/Stacker/test/Makefile --*- Makefile -*-===## +#===-- projects/llvm-stacker/test/Makefile --*- Makefile -*-===# +# +# The LLVM Compiler Infrastructure +# +# This file was developed by Reid Spencer and is distributed under the +# University of Illinois Open Source License. See LICENSE.TXT for details. +# +#======# # # This is the makefile that tests the various facilities of the Stacker language # -##===--===## +#======# -# # Indicates our relative path to the top of the project's root directory. -# LEVEL = ../ -# # Directories that need to be built. -# DIRS = -# # Include the Master Makefile that knows how to build all. -# include $(LEVEL)/Makefile.common LOGIC_TESTS = eq ne le ge gt lt false true ___ 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.143 - 1.144 --- Log message: Fixing silly not-implemented bug in AsmPrinter. This fixes PR1169: http://llvm.org/PR1169 . --- Diffs of the changes: (+4 -2) AsmPrinter.cpp |6 -- 1 files changed, 4 insertions(+), 2 deletions(-) Index: llvm/lib/CodeGen/AsmPrinter.cpp diff -u llvm/lib/CodeGen/AsmPrinter.cpp:1.143 llvm/lib/CodeGen/AsmPrinter.cpp:1.144 --- llvm/lib/CodeGen/AsmPrinter.cpp:1.143 Thu Feb 1 11:46:10 2007 +++ llvm/lib/CodeGen/AsmPrinter.cpp Sun Feb 4 17:27:42 2007 @@ -608,7 +608,8 @@ } } else if (const ConstantExpr *CE = dyn_castConstantExpr(CV)) { const TargetData *TD = TM.getTargetData(); -switch(CE-getOpcode()) { +unsigned Opcode = CE-getOpcode(); +switch (Opcode) { case Instruction::GetElementPtr: { // generate a symbolic expression for the byte address const Constant *ptrVal = CE-getOperand(0); @@ -666,9 +667,10 @@ break; } case Instruction::Add: +case Instruction::Sub: O (; EmitConstantValueOnly(CE-getOperand(0)); - O ) + (; + O (Opcode==Instruction::Add ? ) + ( : ) - (); EmitConstantValueOnly(CE-getOperand(1)); O ); break; ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-test/Makefile.programs
Changes in directory llvm-test: Makefile.programs updated: 1.254 - 1.255 --- Log message: fix bugpoint-gccas target --- Diffs of the changes: (+1 -1) Makefile.programs |2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm-test/Makefile.programs diff -u llvm-test/Makefile.programs:1.254 llvm-test/Makefile.programs:1.255 --- llvm-test/Makefile.programs:1.254 Sun Feb 4 00:07:13 2007 +++ llvm-test/Makefile.programs Sun Feb 4 17:50:20 2007 @@ -288,7 +288,7 @@ # Targets to get the pass arguments that gccas and gccld are using... Output/opt-pass-args: $(LOPT) Output/.dir -$(LLVMAS) /dev/null -o - | \ - $(LOPT) $(EXTRA_LOPT_OPTIONS) -disable-output -debug-pass=Arguments 21 | \ + $(LOPT) $(EXTRA_LOPT_OPTIONS) -std-compile-opts -disable-output -debug-pass=Arguments 21 | \ sed 's/Pass Arguments: //' | sed 's/-emitbytecode//' $@ Output/gccld-pass-args: $(LGCCLDPROG) Output/.dir ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/Transforms/Scalar/PredicateSimplifier.cpp
Changes in directory llvm/lib/Transforms/Scalar: PredicateSimplifier.cpp updated: 1.51 - 1.52 --- Log message: Fix indenting, remove tabs. Learn from sext and zext. The destination value falls within the range of the source type. Generalize properties regarding constant ints. Get smarter about marking blocks as unreachable. If 1 = 2 in order for this block to execute, then it isn't reachable. --- Diffs of the changes: (+90 -32) PredicateSimplifier.cpp | 122 +++- 1 files changed, 90 insertions(+), 32 deletions(-) Index: llvm/lib/Transforms/Scalar/PredicateSimplifier.cpp diff -u llvm/lib/Transforms/Scalar/PredicateSimplifier.cpp:1.51 llvm/lib/Transforms/Scalar/PredicateSimplifier.cpp:1.52 --- llvm/lib/Transforms/Scalar/PredicateSimplifier.cpp:1.51 Sat Feb 3 18:40:41 2007 +++ llvm/lib/Transforms/Scalar/PredicateSimplifier.cpp Sun Feb 4 17:43:05 2007 @@ -52,7 +52,7 @@ // responsible for analyzing the variable and seeing what new inferences // can be made from each property. For example: // -// %P = setne int* %ptr, null +// %P = icmp ne int* %ptr, null // %a = and bool %P, %Q // br bool %a label %cond_true, label %cond_false // @@ -140,14 +140,14 @@ static bool validPredicate(LatticeVal LV) { switch (LV) { -case GT: case GE: case LT: case LE: case NE: -case SGTULT: case SGT: case SGEULE: -case SLTUGT: case SLT: case SLEUGE: -case ULT: case UGT: -case SLE: case SGE: case ULE: case UGE: - return true; -default: - return false; + case GT: case GE: case LT: case LE: case NE: + case SGTULT: case SGT: case SGEULE: + case SLTUGT: case SLT: case SLEUGE: + case ULT: case UGT: + case SLE: case SGE: case ULE: case UGE: +return true; + default: +return false; } } @@ -415,7 +415,7 @@ if (iULT == end || iUGT == end) { if (iULT == end) iSLT = last; else iSLT = iULT; if (iUGT == end) iSGT = begin; else iSGT = iUGT; - } else if (iULT-first-getSExtValue() 0) { +} else if (iULT-first-getSExtValue() 0) { assert(iUGT-first-getSExtValue() = 0 Bad sign comparison.); iSGT = iUGT; iSLT = iULT; @@ -424,7 +424,7 @@ iUGT-first-getSExtValue() 0 Bad sign comparison.); iSGT = iULT; iSLT = iUGT; - } +} if (iSGT != end iSGT-first-getSExtValue() CI-getSExtValue()) iSGT = end; @@ -436,13 +436,13 @@ if (iSLT == end || begin-first-getSExtValue() iSLT-first-getSExtValue()) iSLT = begin; - } +} if (last != end) { if (last-first-getSExtValue() CI-getSExtValue()) if (iSGT == end || last-first-getSExtValue() iSGT-first-getSExtValue()) iSGT = last; - } +} } if (iULT != end) addInequality(iULT-second, index, TreeRoot, ULT); @@ -868,7 +868,7 @@ if (n1) assert(V1 == IG.node(n1)-getValue() Value isn't canonical.); if (n2) assert(V2 == IG.node(n2)-getValue() Value isn't canonical.); - if (compare(V2, V1)) { std::swap(V1, V2); std::swap(n1, n2); } + assert(!compare(V2, V1) Please order parameters to makeEqual.); assert(!isaConstant(V2) Tried to remove a constant.); @@ -1398,10 +1398,22 @@ DEBUG(IG.dump()); -// TODO: actually check the constants and add to UB. -if (isaConstant(O.LHS) isaConstant(O.RHS)) { - WorkList.pop_front(); - continue; +// If they're both Constant, skip it. Check for contradiction and mark +// the BB as unreachable if so. +if (Constant *CI_L = dyn_castConstant(O.LHS)) { + if (Constant *CI_R = dyn_castConstant(O.RHS)) { +if (ConstantExpr::getCompare(O.Op, CI_L, CI_R) == +ConstantInt::getFalse()) + UB.mark(TopBB); + +WorkList.pop_front(); +continue; + } +} + +if (compare(O.RHS, O.LHS)) { + std::swap(O.LHS, O.RHS); + O.Op = ICmpInst::getSwappedPredicate(O.Op); } if (O.Op == ICmpInst::ICMP_EQ) { @@ -1416,7 +1428,7 @@ UB.mark(TopBB); } else { if (isRelatedBy(O.LHS, O.RHS, ICmpInst::getInversePredicate(O.Op))){ - DOUT inequality contradiction!\n; + UB.mark(TopBB); WorkList.pop_front(); continue; } @@ -1438,6 +1450,31 @@ continue; } +// Generalize %x u -10 to %x -10. +if (ConstantInt *CI = dyn_castConstantInt(O.RHS)) { + // xform doesn't apply to i1 + if (CI-getType()-getBitWidth() 1) { +if (LV == SLT CI-getSExtValue() 0) { + // i8 %x s -5 implies %x -5 and %x u 127 + +
[llvm-commits] CVS: llvm/test/CFrontend/2007-02-04-EmptyStruct.c
Changes in directory llvm/test/CFrontend: 2007-02-04-EmptyStruct.c added (r1.1) --- Log message: testcase for PR1175: http://llvm.org/PR1175 --- Diffs of the changes: (+9 -0) 2007-02-04-EmptyStruct.c |9 + 1 files changed, 9 insertions(+) Index: llvm/test/CFrontend/2007-02-04-EmptyStruct.c diff -c /dev/null llvm/test/CFrontend/2007-02-04-EmptyStruct.c:1.1 *** /dev/null Sun Feb 4 17:55:14 2007 --- llvm/test/CFrontend/2007-02-04-EmptyStruct.cSun Feb 4 17:55:04 2007 *** *** 0 --- 1,9 + // RUN: %llvmgcc %s -O3 -S -o - -emit-llvm + // PR1175 + + struct empty { }; + + void foo(struct empty *p) { +p++; + } + ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] [123403] Fix test/CFrontend/2007-02-04-EmptyStruct.c, patch by Anton!
Revision: 123403 Author: clattner Date: 2007-02-04 15:54:39 -0800 (Sun, 04 Feb 2007) Log Message: --- Fix test/CFrontend/2007-02-04-EmptyStruct.c, patch by Anton! Modified Paths: -- apple-local/branches/llvm/gcc/llvm-convert.cpp Modified: apple-local/branches/llvm/gcc/llvm-convert.cpp === --- apple-local/branches/llvm/gcc/llvm-convert.cpp 2007-02-04 10:30:17 UTC (rev 123402) +++ apple-local/branches/llvm/gcc/llvm-convert.cpp 2007-02-04 23:54:39 UTC (rev 123403) @@ -2480,7 +2480,7 @@ // If EltSize exactly divides Offset, then we know that we can turn this // into a getelementptr instruction. - int64_t EltOffset = Offset/EltSize; + int64_t EltOffset = EltSize ? Offset/EltSize : 0; if (EltOffset*EltSize == Offset) { // If this is a subtract, we want to step backwards. if (Opc == Instruction::Sub) ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/test/CFrontend/2007-02-04-AddrLValue.c
Changes in directory llvm/test/CFrontend: 2007-02-04-AddrLValue.c added (r1.1) --- Log message: test for pr1173: http://llvm.org/PR1173 --- Diffs of the changes: (+23 -0) 2007-02-04-AddrLValue.c | 23 +++ 1 files changed, 23 insertions(+) Index: llvm/test/CFrontend/2007-02-04-AddrLValue.c diff -c /dev/null llvm/test/CFrontend/2007-02-04-AddrLValue.c:1.1 *** /dev/null Sun Feb 4 20:19:19 2007 --- llvm/test/CFrontend/2007-02-04-AddrLValue.c Sun Feb 4 20:19:09 2007 *** *** 0 --- 1,23 + // RUN: %llvmgcc %s -O3 -S -o - -emit-llvm + // PR1173 + + typedef struct + { + char *key; + char *value; + } T1; + + typedef struct + { + long type; + char *value; + } T3; + + T1 a[] = + { + { + , + ((char *)((T3) {1, (char *) 1})) + } + }; + ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] [123429] Patch for PR1173 and test/CFrontend/2007-02-04-AddrLValue.c,
Revision: 123429 Author: clattner Date: 2007-02-04 18:18:43 -0800 (Sun, 04 Feb 2007) Log Message: --- Patch for PR1173 and test/CFrontend/2007-02-04-AddrLValue.c, patch by Anton! Modified Paths: -- apple-local/branches/llvm/gcc/llvm-convert.cpp apple-local/branches/llvm/gcc/llvm-internal.h Modified: apple-local/branches/llvm/gcc/llvm-convert.cpp === --- apple-local/branches/llvm/gcc/llvm-convert.cpp 2007-02-05 00:58:26 UTC (rev 123428) +++ apple-local/branches/llvm/gcc/llvm-convert.cpp 2007-02-05 02:18:43 UTC (rev 123429) @@ -5043,6 +5043,7 @@ case COMPONENT_REF: return EmitLV_COMPONENT_REF(exp); case ARRAY_RANGE_REF: case ARRAY_REF: return EmitLV_ARRAY_REF(exp); + case INDIRECT_REF: return EmitLV_INDIRECT_REF(exp); } } @@ -5223,4 +5224,9 @@ return FieldPtr; } +Constant* TreeConstantToLLVM::EmitLV_INDIRECT_REF(tree exp) { + // The lvalue is just the address. + return Convert(TREE_OPERAND(exp, 0)); +} + /* APPLE LOCAL end LLVM (ENTIRE FILE!) */ Modified: apple-local/branches/llvm/gcc/llvm-internal.h === --- apple-local/branches/llvm/gcc/llvm-internal.h 2007-02-05 00:58:26 UTC (rev 123428) +++ apple-local/branches/llvm/gcc/llvm-internal.h 2007-02-05 02:18:43 UTC (rev 123429) @@ -513,6 +513,7 @@ static Constant *EmitLV_STRING_CST(tree_node *exp); static Constant *EmitLV_COMPONENT_REF(tree_node *exp); static Constant *EmitLV_ARRAY_REF(tree_node *exp); + static Constant *EmitLV_INDIRECT_REF(tree_node *exp); }; #endif ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/test/CFrontend/2007-02-04-AddrLValue.c
Changes in directory llvm/test/CFrontend: 2007-02-04-AddrLValue.c updated: 1.1 - 1.2 --- Log message: fix bug number --- Diffs of the changes: (+1 -1) 2007-02-04-AddrLValue.c |2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/test/CFrontend/2007-02-04-AddrLValue.c diff -u llvm/test/CFrontend/2007-02-04-AddrLValue.c:1.1 llvm/test/CFrontend/2007-02-04-AddrLValue.c:1.2 --- llvm/test/CFrontend/2007-02-04-AddrLValue.c:1.1 Sun Feb 4 20:19:09 2007 +++ llvm/test/CFrontend/2007-02-04-AddrLValue.c Sun Feb 4 20:26:07 2007 @@ -1,5 +1,5 @@ // RUN: %llvmgcc %s -O3 -S -o - -emit-llvm -// PR1173 +// PR1176 typedef struct { ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/include/llvm/Support/OutputBuffer.h
Changes in directory llvm/include/llvm/Support: OutputBuffer.h updated: 1.3 - 1.4 --- Log message: Use unsigned char instead of std::vector::reference. --- Diffs of the changes: (+2 -4) OutputBuffer.h |6 ++ 1 files changed, 2 insertions(+), 4 deletions(-) Index: llvm/include/llvm/Support/OutputBuffer.h diff -u llvm/include/llvm/Support/OutputBuffer.h:1.3 llvm/include/llvm/Support/OutputBuffer.h:1.4 --- llvm/include/llvm/Support/OutputBuffer.h:1.3Fri Feb 2 20:38:15 2007 +++ llvm/include/llvm/Support/OutputBuffer.hSun Feb 4 20:37:07 2007 @@ -139,12 +139,10 @@ assert(0 Emission of 64-bit data not implemented yet!); } -std::vectorunsigned char::reference -operator [] (unsigned Index) { +unsigned char operator[](unsigned Index) { return Output[Index]; } -std::vectorunsigned char::const_reference -operator [] (unsigned Index) const { +const unsigned char operator[](unsigned Index) const { return Output[Index]; } }; ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/Transforms/Utils/LCSSA.cpp
Changes in directory llvm/lib/Transforms/Utils: LCSSA.cpp updated: 1.32 - 1.33 --- Log message: Use DenseMap for pointer-pointer maps. --- Diffs of the changes: (+4 -4) LCSSA.cpp |8 1 files changed, 4 insertions(+), 4 deletions(-) Index: llvm/lib/Transforms/Utils/LCSSA.cpp diff -u llvm/lib/Transforms/Utils/LCSSA.cpp:1.32 llvm/lib/Transforms/Utils/LCSSA.cpp:1.33 --- llvm/lib/Transforms/Utils/LCSSA.cpp:1.32Tue Dec 19 16:17:40 2006 +++ llvm/lib/Transforms/Utils/LCSSA.cpp Sun Feb 4 20:39:47 2007 @@ -33,13 +33,13 @@ #include llvm/Pass.h #include llvm/Function.h #include llvm/Instructions.h +#include llvm/ADT/DenseMap.h #include llvm/ADT/SetVector.h #include llvm/ADT/Statistic.h #include llvm/Analysis/Dominators.h #include llvm/Analysis/LoopInfo.h #include llvm/Support/CFG.h #include algorithm -#include map using namespace llvm; STATISTIC(NumLCSSA, Number of live out of a loop variables); @@ -71,7 +71,7 @@ SetVectorInstruction* getLoopValuesUsedOutsideLoop(Loop *L); Value *GetValueForBlock(DominatorTree::Node *BB, Instruction *OrigInst, -std::mapDominatorTree::Node*, Value* Phis); +DenseMapDominatorTree::Node*, Value* Phis); /// inLoop - returns true if the given block is within the current loop const bool inLoop(BasicBlock* B) { @@ -139,7 +139,7 @@ ++NumLCSSA; // We are applying the transformation // Keep track of the blocks that have the value available already. - std::mapDominatorTree::Node*, Value* Phis; + DenseMapDominatorTree::Node*, Value* Phis; DominatorTree::Node *InstrNode = DT-getNode(Instr-getParent()); @@ -226,7 +226,7 @@ /// GetValueForBlock - Get the value to use within the specified basic block. /// available values are in Phis. Value *LCSSA::GetValueForBlock(DominatorTree::Node *BB, Instruction *OrigInst, - std::mapDominatorTree::Node*, Value* Phis) { + DenseMapDominatorTree::Node*, Value* Phis) { // If there is no dominator info for this BB, it is unreachable. if (BB == 0) return UndefValue::get(OrigInst-getType()); ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] [123430] patch for test/CFrontend/2007-02-04-AddrLValue.c and PR1176, by Anton.
Revision: 123430 Author: clattner Date: 2007-02-04 19:50:26 -0800 (Sun, 04 Feb 2007) Log Message: --- patch for test/CFrontend/2007-02-04-AddrLValue.c and PR1176, by Anton. Modified Paths: -- apple-local/branches/llvm/gcc/llvm-convert.cpp apple-local/branches/llvm/gcc/llvm-internal.h Modified: apple-local/branches/llvm/gcc/llvm-convert.cpp === --- apple-local/branches/llvm/gcc/llvm-convert.cpp 2007-02-05 02:18:43 UTC (rev 123429) +++ apple-local/branches/llvm/gcc/llvm-convert.cpp 2007-02-05 03:50:26 UTC (rev 123430) @@ -46,6 +46,7 @@ #include coretypes.h #include tm.h #include tree.h +#include c-tree.h // FIXME: eliminate. #include tree-iterator.h #include output.h #include diagnostic.h @@ -5044,6 +5045,8 @@ case ARRAY_RANGE_REF: case ARRAY_REF: return EmitLV_ARRAY_REF(exp); case INDIRECT_REF: return EmitLV_INDIRECT_REF(exp); + case COMPOUND_LITERAL_EXPR: +return EmitLV_COMPOUND_LITERAL_EXPR(exp); } } @@ -5229,4 +5232,10 @@ return Convert(TREE_OPERAND(exp, 0)); } +Constant *TreeConstantToLLVM::EmitLV_COMPOUND_LITERAL_EXPR(tree exp) { + tree Decl = COMPOUND_LITERAL_EXPR_DECL(exp); + return EmitLV(Decl); +} + /* APPLE LOCAL end LLVM (ENTIRE FILE!) */ + Modified: apple-local/branches/llvm/gcc/llvm-internal.h === --- apple-local/branches/llvm/gcc/llvm-internal.h 2007-02-05 02:18:43 UTC (rev 123429) +++ apple-local/branches/llvm/gcc/llvm-internal.h 2007-02-05 03:50:26 UTC (rev 123430) @@ -514,6 +514,7 @@ static Constant *EmitLV_COMPONENT_REF(tree_node *exp); static Constant *EmitLV_ARRAY_REF(tree_node *exp); static Constant *EmitLV_INDIRECT_REF(tree_node *exp); + static Constant *EmitLV_COMPOUND_LITERAL_EXPR(tree_node *exp); }; #endif ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/test/CFrontend/2007-02-04-WITH_SIZE_EXPR.c
Changes in directory llvm/test/CFrontend: 2007-02-04-WITH_SIZE_EXPR.c added (r1.1) --- Log message: new testcase for 1174, currently xfailed --- Diffs of the changes: (+22 -0) 2007-02-04-WITH_SIZE_EXPR.c | 22 ++ 1 files changed, 22 insertions(+) Index: llvm/test/CFrontend/2007-02-04-WITH_SIZE_EXPR.c diff -c /dev/null llvm/test/CFrontend/2007-02-04-WITH_SIZE_EXPR.c:1.1 *** /dev/null Sun Feb 4 21:57:09 2007 --- llvm/test/CFrontend/2007-02-04-WITH_SIZE_EXPR.c Sun Feb 4 21:56:59 2007 *** *** 0 --- 1,22 + // RUN: %llvmgcc %s -O3 -S -o - -emit-llvm + // PR1174 + // XFAIL: * + + void zzz (char *s1, char *s2, int len, int *q) + { + int z = 5; + unsigned int i, b; + struct { char a[z]; } x; + + for (i = 0; i len; i++) + s1[i] = s2[i]; + + b = z 0x3; + + len += (b == 0 ? 0 : 1) + z; + + *q = len; + + foo (x, x); + } + ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] [123431] initial support for WITH_SIZE_EXPR, but is not enough
Revision: 123431 Author: clattner Date: 2007-02-04 19:57:03 -0800 (Sun, 04 Feb 2007) Log Message: --- initial support for WITH_SIZE_EXPR, but is not enough to fix PR1174 Modified Paths: -- apple-local/branches/llvm/gcc/llvm-convert.cpp Modified: apple-local/branches/llvm/gcc/llvm-convert.cpp === --- apple-local/branches/llvm/gcc/llvm-convert.cpp 2007-02-05 03:50:26 UTC (rev 123430) +++ apple-local/branches/llvm/gcc/llvm-convert.cpp 2007-02-05 03:57:03 UTC (rev 123431) @@ -689,7 +689,8 @@ case REALPART_EXPR: return EmitLV_PART_EXPR(exp, 0); case IMAGPART_EXPR: return EmitLV_PART_EXPR(exp, 1); case VIEW_CONVERT_EXPR: -// The address of a VIEW_CONVERT_EXPR is the address of its operand. + case WITH_SIZE_EXPR: +// The address of a these is the address of their operand. return EmitLV(TREE_OPERAND(exp, 0)); } } ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/Transforms/Scalar/InstructionCombining.cpp
Changes in directory llvm/lib/Transforms/Scalar: InstructionCombining.cpp updated: 1.626 - 1.627 --- Log message: fix a miscompilation of 176.gcc --- Diffs of the changes: (+2 -2) InstructionCombining.cpp |4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) Index: llvm/lib/Transforms/Scalar/InstructionCombining.cpp diff -u llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.626 llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.627 --- llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.626 Sun Feb 4 18:57:54 2007 +++ llvm/lib/Transforms/Scalar/InstructionCombining.cpp Sun Feb 4 22:09:35 2007 @@ -5647,12 +5647,12 @@ if (ShiftAmt1 == ShiftAmt2) { // If we have ((X ? C) C), turn this into X (-1 C). if (I.getOpcode() == Instruction::Shl) { -uint64_t Mask = -1ULL ShiftAmt1; +uint64_t Mask = Ty-getBitMask() ShiftAmt1; return BinaryOperator::createAnd(X, ConstantInt::get(Ty, Mask)); } // If we have ((X C) u C), turn this into X (-1 u C). if (I.getOpcode() == Instruction::LShr) { -uint64_t Mask = -1ULL ShiftAmt1; +uint64_t Mask = Ty-getBitMask() ShiftAmt1; return BinaryOperator::createAnd(X, ConstantInt::get(Ty, Mask)); } // We can simplify ((X C) s C) into a trunc + sext. ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/Transforms/Utils/LCSSA.cpp
Changes in directory llvm/lib/Transforms/Utils: LCSSA.cpp updated: 1.33 - 1.34 --- Log message: For PR1177: http://llvm.org/PR1177 : Revert last patch which caused iteration invalidation. --- Diffs of the changes: (+4 -4) LCSSA.cpp |8 1 files changed, 4 insertions(+), 4 deletions(-) Index: llvm/lib/Transforms/Utils/LCSSA.cpp diff -u llvm/lib/Transforms/Utils/LCSSA.cpp:1.33 llvm/lib/Transforms/Utils/LCSSA.cpp:1.34 --- llvm/lib/Transforms/Utils/LCSSA.cpp:1.33Sun Feb 4 20:39:47 2007 +++ llvm/lib/Transforms/Utils/LCSSA.cpp Sun Feb 4 23:23:32 2007 @@ -33,13 +33,13 @@ #include llvm/Pass.h #include llvm/Function.h #include llvm/Instructions.h -#include llvm/ADT/DenseMap.h #include llvm/ADT/SetVector.h #include llvm/ADT/Statistic.h #include llvm/Analysis/Dominators.h #include llvm/Analysis/LoopInfo.h #include llvm/Support/CFG.h #include algorithm +#include map using namespace llvm; STATISTIC(NumLCSSA, Number of live out of a loop variables); @@ -71,7 +71,7 @@ SetVectorInstruction* getLoopValuesUsedOutsideLoop(Loop *L); Value *GetValueForBlock(DominatorTree::Node *BB, Instruction *OrigInst, -DenseMapDominatorTree::Node*, Value* Phis); +std::mapDominatorTree::Node*, Value* Phis); /// inLoop - returns true if the given block is within the current loop const bool inLoop(BasicBlock* B) { @@ -139,7 +139,7 @@ ++NumLCSSA; // We are applying the transformation // Keep track of the blocks that have the value available already. - DenseMapDominatorTree::Node*, Value* Phis; + std::mapDominatorTree::Node*, Value* Phis; DominatorTree::Node *InstrNode = DT-getNode(Instr-getParent()); @@ -226,7 +226,7 @@ /// GetValueForBlock - Get the value to use within the specified basic block. /// available values are in Phis. Value *LCSSA::GetValueForBlock(DominatorTree::Node *BB, Instruction *OrigInst, - DenseMapDominatorTree::Node*, Value* Phis) { + std::mapDominatorTree::Node*, Value* Phis) { // If there is no dominator info for this BB, it is unreachable. if (BB == 0) return UndefValue::get(OrigInst-getType()); ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-www/ProjectsWithLLVM/index.html
Changes in directory llvm-www/ProjectsWithLLVM: index.html updated: 1.30 - 1.31 --- Log message: add info about the LENS project --- Diffs of the changes: (+42 -0) index.html | 42 ++ 1 files changed, 42 insertions(+) Index: llvm-www/ProjectsWithLLVM/index.html diff -u llvm-www/ProjectsWithLLVM/index.html:1.30 llvm-www/ProjectsWithLLVM/index.html:1.31 --- llvm-www/ProjectsWithLLVM/index.html:1.30 Mon Jan 22 22:07:36 2007 +++ llvm-www/ProjectsWithLLVM/index.htmlSun Feb 4 23:46:33 2007 @@ -35,6 +35,7 @@ div class=www_text ul +lia href=#LENSLENS Project/a/li lia href=#tridentTrident Compiler/a/li lia href=#asceniumAscenium Reconfigurable Processor Compiler/a/li lia href=#pypyThe PyPy Python Implementation Project/a/li @@ -53,6 +54,47 @@ /div + +!--=-- +div class=www_subsection + a name=LENSLENS Project/abr +/div +!--=-- + +div class=www_subsubsection +By a href=http://www.lanl.gov/;Los Alamos National Laboratory/a +/div + +div class=www_text +p +The a href=http://www.cs.ucsd.edu/~mmccrack/lens/;LENS Project/a +is intended to improve the task of measuring programs and +investigating their behavior. LENS defines an external representation +of a program in XML to store useful information +that is accessible based on program structure, including loop +structure information./p + +pLens defines a flexible naming scheme for program components +based on XPath and the LENS XML document structure. This allows +users and tools to selectively query program behavior from a +uniform interface, allowing users or tools to ask a variety of +questions about program components, which can be answered by any +tool that understands the query. Queries, metrics and program +structure are all stored in the LENS file, and are annotated with +version names that support historical comparison and scientific +record-keeping./p + +pCompiler writers can use LENS to expose results of transformations +and analyses for a program easily, without worrying about display or +handling information overload. This functionality has been +demonstrated using LLVM. LENS uses LLVM for two purposes: first, to +generate the initial program structure file in XML using an LLVM +pass, and second, as a demonstration of the advantages of selective +querying for compiler information, with an interface built into LLVM +that allows LLVM passes to easily respond to queries in a LENS file./p + +/div + !--=-- div class=www_subsection a name=tridentTrident Compiler/abr ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-www/ProjectsWithLLVM/index.html
Changes in directory llvm-www/ProjectsWithLLVM: index.html updated: 1.31 - 1.32 --- Log message: fix afficliation --- Diffs of the changes: (+1 -1) index.html |2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm-www/ProjectsWithLLVM/index.html diff -u llvm-www/ProjectsWithLLVM/index.html:1.31 llvm-www/ProjectsWithLLVM/index.html:1.32 --- llvm-www/ProjectsWithLLVM/index.html:1.31 Sun Feb 4 23:46:33 2007 +++ llvm-www/ProjectsWithLLVM/index.htmlSun Feb 4 23:47:58 2007 @@ -62,7 +62,7 @@ !--=-- div class=www_subsubsection -By a href=http://www.lanl.gov/;Los Alamos National Laboratory/a +By Michael O. McCracken, UCSD. /div div class=www_text ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/utils/findmisopt
Changes in directory llvm/utils: findmisopt updated: 1.11 - 1.12 --- Log message: Use opt to generate the list of passes to run. --- Diffs of the changes: (+5 -5) findmisopt | 10 +- 1 files changed, 5 insertions(+), 5 deletions(-) Index: llvm/utils/findmisopt diff -u llvm/utils/findmisopt:1.11 llvm/utils/findmisopt:1.12 --- llvm/utils/findmisopt:1.11 Fri Dec 8 22:42:33 2006 +++ llvm/utils/findmisopt Mon Feb 5 00:10:19 2007 @@ -93,11 +93,11 @@ ex1=$? # Define the list of optimizations to run. This comprises the same set of -# optimizations that gccas and gccld run, in the same order. -all_switches=-verify -lowersetjmp -funcresolve -raiseallocs -simplifycfg -mem2reg -globalopt -globaldce -ipconstprop -deadargelim -instcombine -simplifycfg -prune-eh -inline -simplify-libcalls -argpromotion -raise -tailduplicate -simplifycfg -scalarrepl -instcombine -predsimplify -condprop -tailcallelim -simplifycfg -reassociate -licm -loop-unswitch -instcombine -indvars -loop-unroll -instcombine -load-vn -gcse -sccp -instcombine -condprop -dse -dce -simplifycfg -deadtypeelim -constmerge -funcresolve -internalize -ipsccp -globalopt -constmerge -deadargelim -inline -prune-eh -globalopt -globaldce -argpromotion -instcombine -predsimplify -scalarrepl -globalsmodref-aa -licm -load-vn -gcse -dse -instcombine -simplifycfg -verify -# Here's an alternative list of optimizations comprising just the ones that -# gccld uses. To use, just comment out the line above, and uncomment this one -#all_switches=-funcresolve -internalize -ipsccp -globalopt -constmerge -deadargelim -inline -prune-eh -globalopt -globaldce -argpromotion -instcombine -predsimplify -scalarrepl -globalsmodref-aa -licm -load-vn -gcse -dse -instcombine -simplifycfg -verify +# optimizations that opt -std-compile-opts and gccld run, in the same order. +opt_switches=`llvm-as /dev/null -o - | opt -std-compile-opts -disable-output -debug-pass=Arguments 21 | sed 's/Pass Arguments: //'` +gccld_switches=-internalize -ipsccp -globalopt -constmerge -deadargelim -inline -prune-eh -globalopt -globaldce -argpromotion -instcombine -predsimplify -scalarrepl -globalsmodref-aa -licm -load-vn -gcse -dse -instcombine -simplifycfg -verify +all_switches=$opt_switches $gccld_switches +echo Passes : $all_switches # Current set of switches is empty function tryit { ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits