[llvm-commits] CVS: llvm/test/Assembler/2007-02-07-UpgradeCSRETCC.ll

2007-02-08 Thread Reid Spencer


Changes in directory llvm/test/Assembler:

2007-02-07-UpgradeCSRETCC.ll updated: 1.1 - 1.2
---
Log message:

Add some more interesting cases to this test.


---
Diffs of the changes:  (+2 -0)

 2007-02-07-UpgradeCSRETCC.ll |2 ++
 1 files changed, 2 insertions(+)


Index: llvm/test/Assembler/2007-02-07-UpgradeCSRETCC.ll
diff -u llvm/test/Assembler/2007-02-07-UpgradeCSRETCC.ll:1.1 
llvm/test/Assembler/2007-02-07-UpgradeCSRETCC.ll:1.2
--- llvm/test/Assembler/2007-02-07-UpgradeCSRETCC.ll:1.1Thu Feb  8 
00:45:02 2007
+++ llvm/test/Assembler/2007-02-07-UpgradeCSRETCC.llThu Feb  8 02:03:46 2007
@@ -17,5 +17,7 @@
   %fptr = alloca void (%mystruct*, i32)*
   %f = load void (%mystruct*, i32)**%fptr
   call csretcc void %f(%mystruct* %astr, i32 7)
+  store void (%mystruct* , i32)* %nada, void (%mystruct*, i32)** %fptr
+
   ret int 0
 }



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/tools/llvm-upgrade/UpgradeParser.y

2007-02-08 Thread Reid Spencer


Changes in directory llvm/tools/llvm-upgrade:

UpgradeParser.y updated: 1.59 - 1.60
---
Log message:

For PR1187: http://llvm.org/PR1187 :
Some changes to get the smbd.ll test case working:
1. Move the logic for CSRETCC-sret attribute out of the ResolveDefinitions
   code and into getExistingValue. This resolves it much earlier and works
   in function scope as well.
2. Fix handling of CSRETCC-sret for the store instruction.
3. Rewrite the code for handling renaming to factor in linkage types.
4. Rename a structure filed for a PATypeInfo* so it doesn't get confused 
   with a field for a Type*.


---
Diffs of the changes:  (+277 -253)

 UpgradeParser.y |  530 +---
 1 files changed, 277 insertions(+), 253 deletions(-)


Index: llvm/tools/llvm-upgrade/UpgradeParser.y
diff -u llvm/tools/llvm-upgrade/UpgradeParser.y:1.59 
llvm/tools/llvm-upgrade/UpgradeParser.y:1.60
--- llvm/tools/llvm-upgrade/UpgradeParser.y:1.59Wed Feb  7 18:21:06 2007
+++ llvm/tools/llvm-upgrade/UpgradeParser.y Thu Feb  8 02:09:36 2007
@@ -171,7 +171,6 @@
   std::mapBasicBlock*, std::pairValID, int  BBForwardRefs;
   std::vectorBasicBlock* NumberedBlocks;
   RenameMapType RenameMap;
-  unsigned LastCC;
   unsigned NextBBNum;
 
   inline PerFunctionInfo() {
@@ -268,6 +267,55 @@
   return Typ;
  }
 
+/// This function determines if two function types differ only in their use of
+/// the sret parameter attribute in the first argument. If they are identical 
+/// in all other respects, it returns true. Otherwise, it returns false.
+bool FuncTysDifferOnlyBySRet(const FunctionType *F1, 
+   const FunctionType *F2) {
+  if (F1-getReturnType() != F2-getReturnType() ||
+  F1-getNumParams() != F2-getNumParams() ||
+  F1-getParamAttrs(0) != F2-getParamAttrs(0))
+return false;
+  unsigned SRetMask = ~unsigned(FunctionType::StructRetAttribute);
+  for (unsigned i = 0; i  F1-getNumParams(); ++i) {
+if (F1-getParamType(i) != F2-getParamType(i) ||
+unsigned(F1-getParamAttrs(i+1))  SRetMask !=
+unsigned(F2-getParamAttrs(i+1))  SRetMask)
+  return false;
+  }
+  return true;
+}
+
+// The upgrade of csretcc to sret param attribute may have caused a function 
+// to not be found because the param attribute changed the type of the called 
+// function. This helper function, used in getExistingValue, detects that
+// situation and returns V if it occurs and 0 otherwise. 
+static Value* handleSRetFuncTypeMerge(Value *V, const Type* Ty) {
+  // Handle degenerate cases
+  if (!V)
+return 0;
+  if (V-getType() == Ty)
+return V;
+
+  Value* Result = 0;
+  const PointerType *PF1 = dyn_castPointerType(Ty);
+  const PointerType *PF2 = dyn_castPointerType(V-getType());
+  if (PF1  PF2) {
+const FunctionType *FT1 =
+  dyn_castFunctionType(PF1-getElementType());
+const FunctionType *FT2 =
+  dyn_castFunctionType(PF2-getElementType());
+if (FT1  FT2  FuncTysDifferOnlyBySRet(FT1, FT2))
+  if (FT2-paramHasAttr(1, FunctionType::StructRetAttribute))
+Result = V;
+  else if (Constant *C = dyn_castConstant(V))
+Result = ConstantExpr::getBitCast(C, PF1);
+  else
+Result = new BitCastInst(V, PF1, upgrd.cast, CurBB);
+  }
+  return Result;
+}
+
 // getExistingValue - Look up the value specified by the provided type and
 // the provided ValID.  If the value exists and has already been defined, 
return
 // it.  Otherwise return null.
@@ -314,8 +362,7 @@
 LookupName = Name;
   ValueSymbolTable SymTab = CurFun.CurrentFunction-getValueSymbolTable();
   V = SymTab.lookup(LookupName);
-  if (V  V-getType() != Ty)
-V = 0;
+  V = handleSRetFuncTypeMerge(V, Ty);
 }
 if (!V) {
   RenameMapType::const_iterator I = CurModule.RenameMap.find(Key);
@@ -325,8 +372,7 @@
   else
 LookupName = Name;
   V = CurModule.CurrentModule-getValueSymbolTable().lookup(LookupName);
-  if (V  V-getType() != Ty)
-V = 0;
+  V = handleSRetFuncTypeMerge(V, Ty);
 }
 if (!V) 
   return 0;
@@ -509,25 +555,6 @@
 // and back patchs after we are done.
 //
 
-/// This function determines if two function types differ only in their use of
-/// the sret parameter attribute in the first argument. If they are identical 
-/// in all other respects, it returns true. Otherwise, it returns false.
-bool FuncTysDifferOnlyBySRet(const FunctionType *F1, 
-   const FunctionType *F2) {
-  if (F1-getReturnType() != F2-getReturnType() ||
-  F1-getNumParams() != F2-getNumParams() ||
-  F1-getParamAttrs(0) != F2-getParamAttrs(0))
-return false;
-  unsigned SRetMask = ~unsigned(FunctionType::StructRetAttribute);
-  for (unsigned i = 0; i  F1-getNumParams(); ++i) {
-if (F1-getParamType(i) != F2-getParamType(i) ||
-unsigned(F1-getParamAttrs(i+1))  SRetMask !=
-unsigned(F2-getParamAttrs(i+1))  SRetMask)

[llvm-commits] CVS: llvm-test/MultiSource/Benchmarks/minisat/

2007-02-08 Thread LLVM


Changes in directory llvm-test/MultiSource/Benchmarks/minisat:

---
Log message:

Directory /var/cvs/llvm/llvm-test/MultiSource/Benchmarks/minisat added to the 
repository


---
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/Benchmarks/minisat/mtl/

2007-02-08 Thread LLVM


Changes in directory llvm-test/MultiSource/Benchmarks/minisat/mtl:

---
Log message:

Directory /var/cvs/llvm/llvm-test/MultiSource/Benchmarks/minisat/mtl added to 
the repository


---
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/Benchmarks/minisat/mtl/Alg.h BasicHeap.h BoxedVec.h Heap.h Map.h Queue.h SolverTypes.h Sort.h Vec.h

2007-02-08 Thread Owen Anderson


Changes in directory llvm-test/MultiSource/Benchmarks/minisat/mtl:

Alg.h added (r1.1)
BasicHeap.h added (r1.1)
BoxedVec.h added (r1.1)
Heap.h added (r1.1)
Map.h added (r1.1)
Queue.h added (r1.1)
SolverTypes.h added (r1.1)
Sort.h added (r1.1)
Vec.h added (r1.1)
---
Log message:

Add minisat to the testsuite.  This test was recommended by Domagoj Babic.


---
Diffs of the changes:  (+1094 -0)

 Alg.h |   57 
 BasicHeap.h   |   98 
 BoxedVec.h|  147 +++
 Heap.h|  169 +
 Map.h |  118 ++
 Queue.h   |   82 
 SolverTypes.h |  197 ++
 Sort.h|   93 +++
 Vec.h |  133 +++
 9 files changed, 1094 insertions(+)


Index: llvm-test/MultiSource/Benchmarks/minisat/mtl/Alg.h
diff -c /dev/null llvm-test/MultiSource/Benchmarks/minisat/mtl/Alg.h:1.1
*** /dev/null   Thu Feb  8 02:25:27 2007
--- llvm-test/MultiSource/Benchmarks/minisat/mtl/Alg.h  Thu Feb  8 02:25:17 2007
***
*** 0 
--- 1,57 
+ 
/***[Alg.h]
+ MiniSat -- Copyright (c) 2003-2006, Niklas Een, Niklas Sorensson
+ 
+ Permission is hereby granted, free of charge, to any person obtaining a copy 
of this software and
+ associated documentation files (the Software), to deal in the Software 
without restriction,
+ including without limitation the rights to use, copy, modify, merge, publish, 
distribute,
+ sublicense, and/or sell copies of the Software, and to permit persons to whom 
the Software is
+ furnished to do so, subject to the following conditions:
+ 
+ The above copyright notice and this permission notice shall be included in 
all copies or
+ substantial portions of the Software.
+ 
+ THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
IMPLIED, INCLUDING BUT
+ NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR 
PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE 
FOR ANY CLAIM,
+ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 
OTHERWISE, ARISING FROM, OUT
+ OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
SOFTWARE.
+ 
**/
+ 
+ #ifndef Alg_h
+ #define Alg_h
+ 
+ 
//=
+ // Useful functions on vectors
+ 
+ 
+ #if 1
+ templateclass V, class T
+ static inline void remove(V ts, const T t)
+ {
+ int j = 0;
+ for (; j  ts.size()  ts[j] != t; j++);
+ assert(j  ts.size());
+ for (; j  ts.size()-1; j++) ts[j] = ts[j+1];
+ ts.pop();
+ }
+ #else
+ templateclass V, class T
+ static inline void remove(V ts, const T t)
+ {
+ int j = 0;
+ for (; j  ts.size()  ts[j] != t; j++);
+ assert(j  ts.size());
+ ts[j] = ts.last();
+ ts.pop();
+ }
+ #endif
+ 
+ templateclass V, class T
+ static inline bool find(V ts, const T t)
+ {
+ int j = 0;
+ for (; j  ts.size()  ts[j] != t; j++);
+ return j  ts.size();
+ }
+ 
+ #endif


Index: llvm-test/MultiSource/Benchmarks/minisat/mtl/BasicHeap.h
diff -c /dev/null llvm-test/MultiSource/Benchmarks/minisat/mtl/BasicHeap.h:1.1
*** /dev/null   Thu Feb  8 02:25:40 2007
--- llvm-test/MultiSource/Benchmarks/minisat/mtl/BasicHeap.hThu Feb  8 
02:25:17 2007
***
*** 0 
--- 1,98 
+ 
/**[Heap.h]
+ MiniSat -- Copyright (c) 2003-2006, Niklas Een, Niklas Sorensson
+ 
+ Permission is hereby granted, free of charge, to any person obtaining a copy 
of this software and
+ associated documentation files (the Software), to deal in the Software 
without restriction,
+ including without limitation the rights to use, copy, modify, merge, publish, 
distribute,
+ sublicense, and/or sell copies of the Software, and to permit persons to whom 
the Software is
+ furnished to do so, subject to the following conditions:
+ 
+ The above copyright notice and this permission notice shall be included in 
all copies or
+ substantial portions of the Software.
+ 
+ THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
IMPLIED, INCLUDING BUT
+ NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR 
PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE 
FOR ANY CLAIM,
+ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 
OTHERWISE, ARISING FROM, OUT
+ OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
SOFTWARE.
+ 

[llvm-commits] CVS: llvm-test/MultiSource/Benchmarks/minisat/long.cnf.gz short.cnf.gz Main.cpp Makefile

2007-02-08 Thread Owen Anderson


Changes in directory llvm-test/MultiSource/Benchmarks/minisat:

long.cnf.gz added (r1.1)
short.cnf.gz added (r1.1)
Main.cpp updated: 1.1 - 1.2
Makefile updated: 1.1 - 1.2
---
Log message:

Reenable some hacked out output from minisat to better indentify failures.
Also, gzip the input files to save some bandwidth.

NOTE: This currently fails the JIT which can't load zlib symbols for it.



---
Diffs of the changes:  (+21 -11)

 Main.cpp |   29 +++--
 Makefile |3 ++-
 long.cnf.gz  |0 
 short.cnf.gz |0 
 4 files changed, 21 insertions(+), 11 deletions(-)


Index: llvm-test/MultiSource/Benchmarks/minisat/long.cnf.gz


Index: llvm-test/MultiSource/Benchmarks/minisat/short.cnf.gz


Index: llvm-test/MultiSource/Benchmarks/minisat/Main.cpp
diff -u llvm-test/MultiSource/Benchmarks/minisat/Main.cpp:1.1 
llvm-test/MultiSource/Benchmarks/minisat/Main.cpp:1.2
--- llvm-test/MultiSource/Benchmarks/minisat/Main.cpp:1.1   Thu Feb  8 
02:25:16 2007
+++ llvm-test/MultiSource/Benchmarks/minisat/Main.cpp   Thu Feb  8 02:40:59 2007
@@ -23,6 +23,7 @@
 #include errno.h
 
 #include signal.h
+#include zlib.h
 
 #include Solver.h
 
@@ -83,7 +84,7 @@
 #define CHUNK_LIMIT 1048576
 
 class StreamBuffer {
-FILE*  in;
+gzFile  in;
 charbuf[CHUNK_LIMIT];
 int pos;
 int size;
@@ -91,10 +92,10 @@
 void assureLookahead() {
 if (pos = size) {
 pos  = 0;
-size = fread(buf, 1, sizeof(buf), in); } }
+size = gzread(in, buf, sizeof(buf)); } }
 
 public:
-StreamBuffer(FILE* i) : in(i), pos(0), size(0) {
+StreamBuffer(gzFile i) : in(i), pos(0), size(0) {
 assureLookahead(); }
 
 int  operator *  () { return (pos = size) ? EOF : buf[pos]; }
@@ -161,6 +162,8 @@
 if (match(in, p cnf)){
 int vars= parseInt(in);
 int clauses = parseInt(in);
+reportf(|  Number of variables:  %-12d
 |\n, vars);
+reportf(|  Number of clauses:%-12d
 |\n, clauses);
 }else{
 reportf(PARSE ERROR! Unexpected char: %c\n, *in), exit(3);
 }
@@ -174,7 +177,7 @@
 
 // Inserts problem into solver.
 //
-static void parse_DIMACS(FILE* input_stream, Solver S) {
+static void parse_DIMACS(gzFile input_stream, Solver S) {
 StreamBuffer in(input_stream);
 parse_DIMACS_main(in, S); }
 
@@ -187,12 +190,11 @@
 double   cpu_time = cpuTime();
 uint64_t mem_used = memUsed();
 reportf(restarts  : %lld\n, solver.starts);
-reportf(conflicts : %-12lld   (%.0f /sec)\n, 
solver.conflicts   , solver.conflicts   /cpu_time);
-reportf(decisions : %-12lld   (%4.2f %% random) (%.0f 
/sec)\n, solver.decisions, (float)solver.rnd_decisions*100 / 
(float)solver.decisions, solver.decisions   /cpu_time);
-reportf(propagations  : %-12lld   (%.0f /sec)\n, 
solver.propagations, solver.propagations/cpu_time);
+reportf(conflicts : %-12lld\n, solver.conflicts);
+reportf(decisions : %-12lld   (%4.2f %% random)\n, 
solver.decisions, (float)solver.rnd_decisions*100 / (float)solver.decisions);
+reportf(propagations  : %-12lld\n, solver.propagations);
 reportf(conflict literals : %-12lld   (%4.2f %% deleted)\n, 
solver.tot_literals, (solver.max_literals - solver.tot_literals)*100 / 
(double)solver.max_literals);
 if (mem_used != 0) reportf(Memory used   : %.2f MB\n, mem_used / 
1048576.0);
-reportf(CPU time  : %g s\n, cpu_time);
 }
 
 Solver* solver;
@@ -283,6 +285,7 @@
 argc = j;
 
 
+reportf(This is MiniSat 2.0 beta\n);
 #if defined(__linux__)
 fpu_control_t oldcw, newcw;
 _FPU_GETCW(oldcw); newcw = (oldcw  ~_FPU_EXTENDED) | _FPU_DOUBLE; 
_FPU_SETCW(newcw);
@@ -297,11 +300,15 @@
 if (argc == 1)
 reportf(Reading from standard input... Use '-h' or '--help' for 
help.\n);
 
-FILE* in = fopen(argv[1], rb);
+gzFile in = (argc == 1) ? gzdopen(0, rb) : gzopen(argv[1], rb);
 if (in == NULL)
 reportf(ERROR! Could not open file: %s\n, argc == 1 ? stdin : 
argv[1]), exit(1);
 
-parse_DIMACS(in, S);;
+reportf([ Problem Statistics 
]=\n);
+reportf(| 
|\n);
+
+parse_DIMACS(in, S);
+gzclose(in);
 FILE* res = (argc = 3) ? fopen(argv[2], wb) : NULL;
 
 if (!S.simplify()){
@@ -312,6 +319,8 @@
 }
 
 bool ret = S.solve();
+printStats(S);
+reportf(\n);
 printf(ret ? SATISFIABLE\n : UNSATISFIABLE\n);
 if (res != NULL){
 if (ret){


Index: llvm-test/MultiSource/Benchmarks/minisat/Makefile
diff -u llvm-test/MultiSource/Benchmarks/minisat/Makefile:1.1 
llvm-test/MultiSource/Benchmarks/minisat/Makefile:1.2
--- 

[llvm-commits] CVS: llvm-test/MultiSource/Benchmarks/minisat/Makefile

2007-02-08 Thread Owen Anderson


Changes in directory llvm-test/MultiSource/Benchmarks/minisat:

Makefile updated: 1.2 - 1.3
---
Log message:

Fix a comment.


---
Diffs of the changes:  (+1 -1)

 Makefile |2 +-
 1 files changed, 1 insertion(+), 1 deletion(-)


Index: llvm-test/MultiSource/Benchmarks/minisat/Makefile
diff -u llvm-test/MultiSource/Benchmarks/minisat/Makefile:1.2 
llvm-test/MultiSource/Benchmarks/minisat/Makefile:1.3
--- llvm-test/MultiSource/Benchmarks/minisat/Makefile:1.2   Thu Feb  8 
02:40:59 2007
+++ llvm-test/MultiSource/Benchmarks/minisat/Makefile   Thu Feb  8 02:47:12 2007
@@ -1,4 +1,4 @@
-# MultiSource/minisat Makefile:  Build all subdirectories automatically
+# MultiSource/minisat Makefile
 
 LEVEL = ../../..
 PROG = minisat



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/tools/llvm-upgrade/UpgradeParser.y

2007-02-08 Thread Reid Spencer


Changes in directory llvm/tools/llvm-upgrade:

UpgradeParser.y updated: 1.60 - 1.61
---
Log message:

For PR1187: http://llvm.org/PR1187 :
Always rename, never give a redef error. We could check for collapsed type
planes and generate an error if that's not the cause, but the 99.
percentile case will be that its the result of collapsed type planes. So,
rather than doing an expensive check, just rename.


---
Diffs of the changes:  (+18 -4)

 UpgradeParser.y |   22 ++
 1 files changed, 18 insertions(+), 4 deletions(-)


Index: llvm/tools/llvm-upgrade/UpgradeParser.y
diff -u llvm/tools/llvm-upgrade/UpgradeParser.y:1.60 
llvm/tools/llvm-upgrade/UpgradeParser.y:1.61
--- llvm/tools/llvm-upgrade/UpgradeParser.y:1.60Thu Feb  8 02:09:36 2007
+++ llvm/tools/llvm-upgrade/UpgradeParser.y Thu Feb  8 02:47:38 2007
@@ -2626,10 +2626,24 @@
   if (Conflict  PFT == Conflict-getType()) {
 if (!CurFun.isDeclare  !Conflict-isDeclaration()) {
   // We have two function definitions that conflict, same type, same
-  // name. This wasn't allowed in 1.9, its not allowed here either
-  error(Redefinition of function ' + FunctionName + ' of type ' +
-PFT-getDescription() + ');
-
+  // name. We should really check to make sure that this is the result
+  // of integer type planes collapsing and generate an error if it is
+  // not, but we'll just rename on the assumption that it is. However,
+  // let's do it intelligently and rename the internal linkage one
+  // if there is one.
+  std::string NewName(makeNameUnique(FunctionName));
+  if (Conflict-hasInternalLinkage()) {
+Conflict-setName(NewName);
+RenameMapKey Key = 
std::make_pair(FunctionName,Conflict-getType());
+CurModule.RenameMap[Key] = NewName;
+Fn = new Function(FT, CurFun.Linkage, FunctionName, M);
+InsertValue(Fn, CurModule.Values);
+  } else {
+Fn = new Function(FT, CurFun.Linkage, NewName, M);
+InsertValue(Fn, CurModule.Values);
+RenameMapKey Key = std::make_pair(FunctionName,PFT);
+CurModule.RenameMap[Key] = NewName;
+  }
 } else {
   // If they are not both definitions, then just use the function we
   // found since the types are the same.



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/tools/llvm-upgrade/UpgradeParser.y

2007-02-08 Thread Reid Spencer


Changes in directory llvm/tools/llvm-upgrade:

UpgradeParser.y updated: 1.61 - 1.62
---
Log message:

For PR1187: http://llvm.org/PR1187 :
Rename function scope names that conflict with basic block names. 


---
Diffs of the changes:  (+20 -11)

 UpgradeParser.y |   31 ---
 1 files changed, 20 insertions(+), 11 deletions(-)


Index: llvm/tools/llvm-upgrade/UpgradeParser.y
diff -u llvm/tools/llvm-upgrade/UpgradeParser.y:1.61 
llvm/tools/llvm-upgrade/UpgradeParser.y:1.62
--- llvm/tools/llvm-upgrade/UpgradeParser.y:1.61Thu Feb  8 02:47:38 2007
+++ llvm/tools/llvm-upgrade/UpgradeParser.y Thu Feb  8 03:07:25 2007
@@ -475,6 +475,14 @@
   return V;
 }
 
+/// @brief This just makes any name given to it unique, up to MAX_UINT times.
+static std::string makeNameUnique(const std::string Name) {
+  static unsigned UniqueNameCounter = 1;
+  std::string Result(Name);
+  Result += .upgrd. + llvm::utostr(UniqueNameCounter++);
+  return Result;
+}
+
 /// getBBVal - This is used for two purposes:
 ///  * If isDefinition is true, a new basic block with the specified ID is 
being
 ///defined.
@@ -499,9 +507,18 @@
 Name = ID.Name;
 if (Value *N = CurFun.CurrentFunction-
getValueSymbolTable().lookup(Name)) {
-  if (N-getType() != Type::LabelTy)
-error(Name ' + Name + ' does not refer to a BasicBlock);
-  BB = castBasicBlock(N);
+  if (N-getType() != Type::LabelTy) {
+// Register names didn't use to conflict with basic block names
+// because of type planes. Now they all have to be unique. So, we just
+// rename the register and treat this name as if no basic block
+// had been found.
+RenameMapKey Key = std::make_pair(N-getName(),N-getType());
+N-setName(makeNameUnique(N-getName()));
+CurModule.RenameMap[Key] = N-getName();
+BB = 0;
+  } else {
+BB = castBasicBlock(N);
+  }
 }
 break;
   }
@@ -623,14 +640,6 @@
   }
 }
 
-/// @brief This just makes any name given to it unique, up to MAX_UINT times.
-static std::string makeNameUnique(const std::string Name) {
-  static unsigned UniqueNameCounter = 1;
-  std::string Result(Name);
-  Result += .upgrd. + llvm::utostr(UniqueNameCounter++);
-  return Result;
-}
-
 /// This is the implementation portion of TypeHasInteger. It traverses the
 /// type given, avoiding recursive types, and returns true as soon as it finds
 /// an integer type. If no integer type is found, it returns false.



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/tools/llvm-upgrade/UpgradeInternals.h

2007-02-08 Thread Reid Spencer


Changes in directory llvm/tools/llvm-upgrade:

UpgradeInternals.h updated: 1.8 - 1.9
---
Log message:

Rename a field so there's less confusion between fields of the same name.


---
Diffs of the changes:  (+3 -2)

 UpgradeInternals.h |5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)


Index: llvm/tools/llvm-upgrade/UpgradeInternals.h
diff -u llvm/tools/llvm-upgrade/UpgradeInternals.h:1.8 
llvm/tools/llvm-upgrade/UpgradeInternals.h:1.9
--- llvm/tools/llvm-upgrade/UpgradeInternals.h:1.8  Thu Feb  1 20:16:22 2007
+++ llvm/tools/llvm-upgrade/UpgradeInternals.h  Thu Feb  8 03:08:23 2007
@@ -216,7 +216,8 @@
 // An enumeration for the old calling conventions, ala LLVM 1.9
 namespace OldCallingConv {
   enum ID {
-C = 0, CSRet = 1, Fast = 8, Cold = 9, X86_StdCall = 64, X86_FastCall = 65 
+C = 0, CSRet = 1, Fast = 8, Cold = 9, X86_StdCall = 64, X86_FastCall = 65,
+None = 9
   };
 }
 
@@ -234,7 +235,7 @@
 };
 
 struct PATypeInfo {
-  llvm::PATypeHolder* T;
+  llvm::PATypeHolder* PAT;
   Signedness S;
 };
 



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/test/Assembler/2007-02-07-RenameInternals.ll

2007-02-08 Thread Reid Spencer


Changes in directory llvm/test/Assembler:

2007-02-07-RenameInternals.ll updated: 1.1 - 1.2
---
Log message:

Make this legal input.


---
Diffs of the changes:  (+1 -1)

 2007-02-07-RenameInternals.ll |2 +-
 1 files changed, 1 insertion(+), 1 deletion(-)


Index: llvm/test/Assembler/2007-02-07-RenameInternals.ll
diff -u llvm/test/Assembler/2007-02-07-RenameInternals.ll:1.1 
llvm/test/Assembler/2007-02-07-RenameInternals.ll:1.2
--- llvm/test/Assembler/2007-02-07-RenameInternals.ll:1.1   Wed Feb  7 
17:41:10 2007
+++ llvm/test/Assembler/2007-02-07-RenameInternals.ll   Thu Feb  8 03:09:36 2007
@@ -6,6 +6,6 @@
   ret void
 }
 
-internal void %func(int %x) {
+internal void %func(uint %x) {
   ret void
 }



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/test/Assembler/2007-02-07-BasicBlockRename.ll 2007-02-07-UpgradeGVarConflict.ll

2007-02-08 Thread Reid Spencer


Changes in directory llvm/test/Assembler:

2007-02-07-BasicBlockRename.ll added (r1.1)
2007-02-07-UpgradeGVarConflict.ll added (r1.1)
---
Log message:

New test cases for PR1187: http://llvm.org/PR1187 


---
Diffs of the changes:  (+33 -0)

 2007-02-07-BasicBlockRename.ll|   14 ++
 2007-02-07-UpgradeGVarConflict.ll |   19 +++
 2 files changed, 33 insertions(+)


Index: llvm/test/Assembler/2007-02-07-BasicBlockRename.ll
diff -c /dev/null llvm/test/Assembler/2007-02-07-BasicBlockRename.ll:1.1
*** /dev/null   Thu Feb  8 03:10:32 2007
--- llvm/test/Assembler/2007-02-07-BasicBlockRename.ll  Thu Feb  8 03:10:22 2007
***
*** 0 
--- 1,14 
+ ; PR1187
+ ; RUN: llvm-upgrade  %s | llvm-as  /dev/null
+ 
+ implementation
+ 
+ int @main(int %argc, sbyte** %argv) {
+ entry:
+   %exit = alloca int, align 4 ; i32* [#uses=11]
+ store int 0, int* %exit
+   br label %exit
+ 
+ exit:
+   ret int 0
+ }


Index: llvm/test/Assembler/2007-02-07-UpgradeGVarConflict.ll
diff -c /dev/null llvm/test/Assembler/2007-02-07-UpgradeGVarConflict.ll:1.1
*** /dev/null   Thu Feb  8 03:10:39 2007
--- llvm/test/Assembler/2007-02-07-UpgradeGVarConflict.ll   Thu Feb  8 
03:10:22 2007
***
*** 0 
--- 1,19 
+ ; For PR1187
+ ; RUN: llvm-upgrade  %s  /dev/null
+ 
+ %struct.isc_hash_t = type { uint, sbyte*, int, uint, uint, 
+ [4 x ubyte], ulong, ushort* }
+ %hash = internal global %struct.isc_hash_t* null
+ 
+ implementation
+ 
+ void %somefunc() {
+   %key_addr = alloca sbyte*
+   %tmp21 = load sbyte** %key_addr
+   %tmp22 = call fastcc uint %hash(sbyte* %tmp21, uint 0)
+   ret void
+ }
+ 
+ internal fastcc uint %hash(sbyte* %key, uint %case_sensitive) {
+   ret uint 0
+ }



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/include/llvm/ADT/APInt.h

2007-02-08 Thread Zhou Sheng


Changes in directory llvm/include/llvm/ADT:

APInt.h updated: 1.4 - 1.5
---
Log message:

As Chris and Reid suggested, remove isSigned field from APInt, instead,
add some signed/unsigned arithmetic operation functions into APInt.h to
handle the signed/unsigned issue. These functions will be defined inside a
namespace APIntOps which is inside llvm namespace.


---
Diffs of the changes:  (+92 -48)

 APInt.h |  140 ++--
 1 files changed, 92 insertions(+), 48 deletions(-)


Index: llvm/include/llvm/ADT/APInt.h
diff -u llvm/include/llvm/ADT/APInt.h:1.4 llvm/include/llvm/ADT/APInt.h:1.5
--- llvm/include/llvm/ADT/APInt.h:1.4   Wed Feb  7 10:59:17 2007
+++ llvm/include/llvm/ADT/APInt.h   Thu Feb  8 08:30:42 2007
@@ -21,6 +21,21 @@
 
 namespace llvm {
 
+/// Forward declaration.
+class APInt;
+namespace APIntOps {
+  bool isIntN(unsigned N, const APInt APIVal);
+  APInt ByteSwap(const APInt APIVal);
+  APInt LogBase2(const APInt APIVal);
+  APInt ashr(const APInt LHS, unsigned shiftAmt);
+  APInt lshr(const APInt LHS, unsigned shiftAmt);
+  APInt shl(const APInt LHS, unsigned shiftAmt);
+  APInt sdiv(const APInt LHS, const APInt RHS);
+  APInt udiv(const APInt LHS, const APInt RHS);
+  APInt srem(const APInt LHS, const APInt RHS);
+  APInt urem(const APInt LHS, const APInt RHS);
+}
+
 
//===--===//
 //  APInt Class
 
//===--===//
@@ -40,14 +55,18 @@
 class APInt {
   /// Friend Functions of APInt declared here. For detailed comments,
   /// see bottom of this file.
-  friend bool isIntN(unsigned N, const APInt APIVal);
-  friend APInt ByteSwap(const APInt APIVal);
-  friend APInt LogBase2(const APInt APIVal);
-  friend double APIntToDouble(const APInt APIVal);
-  friend float APIntToFloat(const APInt APIVal);
+  friend bool APIntOps::isIntN(unsigned N, const APInt APIVal);
+  friend APInt APIntOps::ByteSwap(const APInt APIVal);
+  friend APInt APIntOps::LogBase2(const APInt APIVal);
+  friend APInt APIntOps::ashr(const APInt LHS, unsigned shiftAmt);
+  friend APInt APIntOps::lshr(const APInt LHS, unsigned shiftAmt);
+  friend APInt APIntOps::shl(const APInt LHS, unsigned shiftAmt);
+  friend APInt APIntOps::sdiv(const APInt LHS, const APInt RHS);
+  friend APInt APIntOps::udiv(const APInt LHS, const APInt RHS);
+  friend APInt APIntOps::srem(const APInt LHS, const APInt RHS);
+  friend APInt APIntOps::urem(const APInt LHS, const APInt RHS);
 
   unsigned BitsNum;  /// The number of bits.
-  bool isSigned; /// The sign flag for this APInt.
 
   /// This union is used to store the integer value. When the
   /// integer bit-width = 64, it uses VAL; 
@@ -114,20 +133,19 @@
 
 public:
   /// @brief Create a new APInt of numBits bit-width, and initialized as val.
-  APInt(uint64_t val = 0, unsigned numBits = APINT_BITS_PER_WORD, 
-bool sign = false);
+  APInt(uint64_t val = 0, unsigned numBits = APINT_BITS_PER_WORD);
 
   /// @brief Create a new APInt of numBits bit-width, and initialized as 
   /// bigVal[].
-  APInt(unsigned numBits, uint64_t bigVal[], bool sign = false);
+  APInt(unsigned numBits, uint64_t bigVal[]);
 
   /// @brief Create a new APInt by translating the string represented 
   /// integer value.
-  APInt(const std::string Val, uint8_t radix = 10, bool sign = false);
+  APInt(const std::string Val, uint8_t radix = 10);
 
   /// @brief Create a new APInt by translating the char array represented
   /// integer value.
-  APInt(const char StrStart[], unsigned slen, uint8_t radix, bool sign = 
false);
+  APInt(const char StrStart[], unsigned slen, uint8_t radix);
 
   /// @brief Copy Constructor.
   APInt(const APInt API);
@@ -179,14 +197,6 @@
   /// @brief Bitwise XOR assignment operator. 
   APInt operator^=(const APInt RHS);
 
-  /// Left-shift the APInt by shiftAmt and assigns the result to this APInt.
-  /// @brief Left-shift assignment operator. 
-  APInt operator=(unsigned shiftAmt);
-
-  /// Right-shift the APInt by shiftAmt and assigns the result to this APInt.
-  /// @brief Right-shift assignment operator. 
-  APInt operator=(unsigned shiftAmt);
-
   /// Performs a bitwise complement operation on this APInt.
   /// @brief Bitwise complement operator. 
   APInt operator~() const;
@@ -196,11 +206,6 @@
   /// @brief Multiplication assignment operator. 
   APInt operator*=(const APInt RHS);
 
-  /// Divides this APInt by the given APInt RHS and 
-  /// assigns the result to this APInt.
-  /// @brief Division assignment operator. 
-  APInt operator/=(const APInt RHS);
-
   /// Adds this APInt by the given APInt RHS and 
   /// assigns the result to this APInt.
   /// @brief Addition assignment operator. 
@@ -211,11 +216,6 @@
   /// @brief Subtraction assignment operator. 
   APInt operator-=(const APInt RHS);
 
-  /// Yields the remainder from the division 

[llvm-commits] CVS: llvm/lib/Support/APInt.cpp

2007-02-08 Thread Zhou Sheng


Changes in directory llvm/lib/Support:

APInt.cpp updated: 1.4 - 1.5
---
Log message:

As Chris and Reid suggested, remove isSigned field from APInt, instead,
add some signed/unsigned arithmetic operation functions into APInt.h to
handle the signed/unsigned issue. These functions will be defined inside a
namespace APIntOps which is inside llvm namespace.


---
Diffs of the changes:  (+170 -178)

 APInt.cpp |  348 ++
 1 files changed, 170 insertions(+), 178 deletions(-)


Index: llvm/lib/Support/APInt.cpp
diff -u llvm/lib/Support/APInt.cpp:1.4 llvm/lib/Support/APInt.cpp:1.5
--- llvm/lib/Support/APInt.cpp:1.4  Wed Feb  7 00:14:53 2007
+++ llvm/lib/Support/APInt.cpp  Thu Feb  8 08:35:19 2007
@@ -14,7 +14,7 @@
 
 #include llvm/ADT/APInt.h
 
-#if 0
+#if 1
 #include llvm/DerivedTypes.h
 #include llvm/Support/MathExtras.h
 #include cstring
@@ -262,8 +262,8 @@
   return retVal;
 }
 
-APInt::APInt(uint64_t val, unsigned numBits, bool sign)
-  : BitsNum(numBits), isSigned(sign) {
+APInt::APInt(uint64_t val, unsigned numBits)
+  : BitsNum(numBits) {
   assert(BitsNum = IntegerType::MIN_INT_BITS  bitwidth too small);
   assert(BitsNum = IntegerType::MAX_INT_BITS  bitwidth too large);
   if (isSingleWord()) 
@@ -277,8 +277,8 @@
   }
 }
 
-APInt::APInt(unsigned numBits, uint64_t bigVal[], bool sign)
-  : BitsNum(numBits), isSigned(sign) {
+APInt::APInt(unsigned numBits, uint64_t bigVal[])
+  : BitsNum(numBits) {
   assert(BitsNum = IntegerType::MIN_INT_BITS  bitwidth too small);
   assert(BitsNum = IntegerType::MAX_INT_BITS  bitwidth too large);
   assert(bigVal  Null pointer detected!);
@@ -301,15 +301,13 @@
 
 /// @brief Create a new APInt by translating the char array represented
 /// integer value.
-APInt::APInt(const char StrStart[], unsigned slen, uint8_t radix, bool sign)
-  : isSigned(sign) {
+APInt::APInt(const char StrStart[], unsigned slen, uint8_t radix) {
   StrToAPInt(StrStart, slen, radix);
 }
 
 /// @brief Create a new APInt by translating the string represented
 /// integer value.
-APInt::APInt(const std::string Val, uint8_t radix, bool sign)
-  : isSigned(sign) {
+APInt::APInt(const std::string Val, uint8_t radix) {
   assert(!Val.empty()  String empty?);
   StrToAPInt(Val.c_str(), Val.size(), radix);
 }
@@ -386,7 +384,7 @@
 }
 
 APInt::APInt(const APInt APIVal)
-  : BitsNum(APIVal.BitsNum), isSigned(APIVal.isSigned) {
+  : BitsNum(APIVal.BitsNum) {
   if (isSingleWord()) VAL = APIVal.VAL;
   else {
 // Memory allocation and check if successful.
@@ -421,6 +419,7 @@
 pVal[0] = RHS;
 memset(pVal, 0, (getNumWords() - 1) * 8);
   }
+  TruncToBits();
   return *this;
 }
 
@@ -514,101 +513,6 @@
   return *this;
 }
 
-/// @brief Division assignment operator. Divides this APInt by the given APInt
-/// RHS and assigns the result to this APInt.
-APInt APInt::operator/=(const APInt RHS) {
-  unsigned first = RHS.getNumWords() * APINT_BITS_PER_WORD - 
-   RHS.CountLeadingZeros();
-  unsigned ylen = !first ? 0 : whichWord(first - 1) + 1;
-  assert(ylen  Divided by zero???);
-  if (isSingleWord()) {
-if (isSigned  RHS.isSigned)
-  VAL = RHS.isSingleWord() ? (int64_t(VAL) / int64_t(RHS.VAL)) :
-(ylen  1 ? 0 : int64_t(VAL) / int64_t(RHS.pVal[0]));
-else
-  VAL = RHS.isSingleWord() ? (VAL / RHS.VAL) : 
-  (ylen  1 ? 0 : VAL / RHS.pVal[0]);
-  } else {
-unsigned first2 = getNumWords() * APINT_BITS_PER_WORD - 
CountLeadingZeros();
-unsigned xlen = !first2 ? 0 : whichWord(first2 - 1) + 1;
-if (!xlen)
-  return *this;
-else if ((*this)  RHS)
-  memset(pVal, 0, getNumWords() * 8);
-else if ((*this) == RHS) {
-  memset(pVal, 0, getNumWords() * 8);
-  pVal[0] = 1;
-} else if (xlen == 1)
-  pVal[0] /= RHS.isSingleWord() ? RHS.VAL : RHS.pVal[0];
-else {
-  uint64_t *xwords = new uint64_t[xlen+1], *ywords = new uint64_t[ylen];
-  assert(xwords  ywords  Memory Allocation Failed!);
-  memcpy(xwords, pVal, xlen * 8);
-  xwords[xlen] = 0;
-  memcpy(ywords, RHS.isSingleWord() ? RHS.VAL : RHS.pVal, ylen * 8);
-  if (unsigned nshift = 63 - (first - 1) % 64) {
-lshift(ywords, 0, ywords, ylen, nshift);
-unsigned xlentmp = xlen;
-xwords[xlen++] = lshift(xwords, 0, xwords, xlentmp, nshift);
-  }
-  div((unsigned*)xwords, xlen*2-1, (unsigned*)ywords, ylen*2);
-  memset(pVal, 0, getNumWords() * 8);
-  memcpy(pVal, xwords + ylen, (xlen - ylen) * 8);
-  delete[] xwords;
-  delete[] ywords;
-}
-  }
-  return *this;
-}
-
-/// @brief Remainder assignment operator. Yields the remainder from the 
-/// division of this APInt by the given APInt RHS and assigns the remainder 
-/// to this APInt.
-APInt APInt::operator%=(const APInt RHS) {
-  unsigned first = RHS.getNumWords() * APINT_BITS_PER_WORD -
-   RHS.CountLeadingZeros();
-  unsigned ylen = !first ? 0 : whichWord(first - 1) + 1;

[llvm-commits] CVS: llvm/lib/Support/APInt.cpp

2007-02-08 Thread Zhou Sheng


Changes in directory llvm/lib/Support:

APInt.cpp updated: 1.5 - 1.6
---
Log message:

Switched this file on accidently.


---
Diffs of the changes:  (+1 -1)

 APInt.cpp |2 +-
 1 files changed, 1 insertion(+), 1 deletion(-)


Index: llvm/lib/Support/APInt.cpp
diff -u llvm/lib/Support/APInt.cpp:1.5 llvm/lib/Support/APInt.cpp:1.6
--- llvm/lib/Support/APInt.cpp:1.5  Thu Feb  8 08:35:19 2007
+++ llvm/lib/Support/APInt.cpp  Thu Feb  8 10:45:48 2007
@@ -14,7 +14,7 @@
 
 #include llvm/ADT/APInt.h
 
-#if 1
+#if 0
 #include llvm/DerivedTypes.h
 #include llvm/Support/MathExtras.h
 #include cstring



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/docs/TestingGuide.html

2007-02-08 Thread Reid Spencer


Changes in directory llvm/docs:

TestingGuide.html updated: 1.39 - 1.40
---
Log message:

Describe llvm/test more accurately given recent changes.


---
Diffs of the changes:  (+22 -14)

 TestingGuide.html |   36 ++--
 1 files changed, 22 insertions(+), 14 deletions(-)


Index: llvm/docs/TestingGuide.html
diff -u llvm/docs/TestingGuide.html:1.39 llvm/docs/TestingGuide.html:1.40
--- llvm/docs/TestingGuide.html:1.39Fri Aug 11 18:27:02 2006
+++ llvm/docs/TestingGuide.html Thu Feb  8 11:00:55 2007
@@ -216,19 +216,27 @@
 subtrees of the test suite directory tree are as follows:/p
 
 ul
-littllvm/test/Features/tt
-pThis directory contains sample codes that test various features of the
-LLVM language.  These pieces of sample code are run through various
-assembler, disassembler, and optimizer passes./p
-/li
-
-littllvm/test/Regression/tt
-pThis directory contains regression tests for LLVM.  When a bug is found
-in LLVM, a regression test containing just enough code to reproduce the
-problem should be written and placed somewhere underneath this directory.
-In most cases, this will be a small piece of LLVM assembly language code,
-often distilled from an actual application or benchmark./p
-/li
+  littllvm/test/tt
+  pThis directory contains a large array of small tests
+  that exercise various features of LLVM and to ensure that regressions do not
+  occur. The directory is broken into several sub-directories, each focused on
+  a particular area of LLVM. A few of the important ones are:ul
+littAnalysis/tt: checks Analysis passes./li
+littArchive/tt: checks the Archive library./li
+littAssembler/tt: checks Assembly reader/writer functionality./li
+littBytecode/tt: checks Bytecode reader/writer functionality./li
+littCodeGen/tt: checks code generation and each target./li
+littFeatures/tt: checks various features of the LLVM language./li
+littLinker/tt: tests bytecode linking./li
+littTransforms/tt: tests each of the scalar, IPO, and utility
+transforms to ensure they make the right transformations./li
+littVerifier/tt: tests the IR verifier./li
+  /ul/p
+  pTypically when a bug is found in LLVM, a regression test containing 
+  just enough code to reproduce the problem should be written and placed 
+  somewhere underneath this directory.  In most cases, this will be a small 
+  piece of LLVM assembly language code, often distilled from an actual 
+  application or benchmark./p/li
 
 littllvm-test/tt
 pThe ttllvm-test/tt CVS module contains programs that can be compiled 
@@ -630,7 +638,7 @@
 
   John T. Criswell, Reid Spencer, and Tanya Lattnerbr
   a href=http://llvm.org;The LLVM Compiler Infrastructure/abr/
-  Last modified: $Date: 2006/08/11 23:27:02 $
+  Last modified: $Date: 2007/02/08 17:00:55 $
 /address
 /body
 /html



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


Re: [llvm-commits] CVS: llvm/include/llvm/ADT/APInt.h

2007-02-08 Thread Reid Spencer
Sheng, 

Some feedback for you ...

On Thu, 2007-02-08 at 08:30 -0600, Zhou Sheng wrote:
 
 Changes in directory llvm/include/llvm/ADT:
 
 APInt.h updated: 1.4 - 1.5
 ---
 Log message:
 
 As Chris and Reid suggested, remove isSigned field from APInt, instead,
 add some signed/unsigned arithmetic operation functions into APInt.h to
 handle the signed/unsigned issue. These functions will be defined inside a
 namespace APIntOps which is inside llvm namespace.
 
 
 ---
 Diffs of the changes:  (+92 -48)
 
  APInt.h |  140 
 ++--
  1 files changed, 92 insertions(+), 48 deletions(-)
 
 
 Index: llvm/include/llvm/ADT/APInt.h
 diff -u llvm/include/llvm/ADT/APInt.h:1.4 llvm/include/llvm/ADT/APInt.h:1.5
 --- llvm/include/llvm/ADT/APInt.h:1.4 Wed Feb  7 10:59:17 2007
 +++ llvm/include/llvm/ADT/APInt.h Thu Feb  8 08:30:42 2007
 @@ -21,6 +21,21 @@
  
  namespace llvm {
  
 +/// Forward declaration.
 +class APInt;
 +namespace APIntOps {
 +  bool isIntN(unsigned N, const APInt APIVal);
 +  APInt ByteSwap(const APInt APIVal);
 +  APInt LogBase2(const APInt APIVal);
 +  APInt ashr(const APInt LHS, unsigned shiftAmt);
 +  APInt lshr(const APInt LHS, unsigned shiftAmt);
 +  APInt shl(const APInt LHS, unsigned shiftAmt);
 +  APInt sdiv(const APInt LHS, const APInt RHS);
 +  APInt udiv(const APInt LHS, const APInt RHS);
 +  APInt srem(const APInt LHS, const APInt RHS);
 +  APInt urem(const APInt LHS, const APInt RHS);
 +}
 +
  
 //===--===//
  //  APInt Class
  
 //===--===//
 @@ -40,14 +55,18 @@
  class APInt {
/// Friend Functions of APInt declared here. For detailed comments,
/// see bottom of this file.
 -  friend bool isIntN(unsigned N, const APInt APIVal);
 -  friend APInt ByteSwap(const APInt APIVal);
 -  friend APInt LogBase2(const APInt APIVal);
 -  friend double APIntToDouble(const APInt APIVal);
 -  friend float APIntToFloat(const APInt APIVal);
 +  friend bool APIntOps::isIntN(unsigned N, const APInt APIVal);
 +  friend APInt APIntOps::ByteSwap(const APInt APIVal);
 +  friend APInt APIntOps::LogBase2(const APInt APIVal);
 +  friend APInt APIntOps::ashr(const APInt LHS, unsigned shiftAmt);
 +  friend APInt APIntOps::lshr(const APInt LHS, unsigned shiftAmt);
 +  friend APInt APIntOps::shl(const APInt LHS, unsigned shiftAmt);
 +  friend APInt APIntOps::sdiv(const APInt LHS, const APInt RHS);
 +  friend APInt APIntOps::udiv(const APInt LHS, const APInt RHS);
 +  friend APInt APIntOps::srem(const APInt LHS, const APInt RHS);
 +  friend APInt APIntOps::urem(const APInt LHS, const APInt RHS);

There's a lot of friend functions here. Perhaps these could go at the
bottom of the class declaration instead of the top. 

  
unsigned BitsNum;  /// The number of bits.

How about width

 -  bool isSigned; /// The sign flag for this APInt.
  
/// This union is used to store the integer value. When the
/// integer bit-width = 64, it uses VAL; 
 @@ -114,20 +133,19 @@
  
  public:
/// @brief Create a new APInt of numBits bit-width, and initialized as val.
 -  APInt(uint64_t val = 0, unsigned numBits = APINT_BITS_PER_WORD, 
 -bool sign = false);
 +  APInt(uint64_t val = 0, unsigned numBits = APINT_BITS_PER_WORD);
  
/// @brief Create a new APInt of numBits bit-width, and initialized as 
/// bigVal[].
 -  APInt(unsigned numBits, uint64_t bigVal[], bool sign = false);
 +  APInt(unsigned numBits, uint64_t bigVal[]);
  
/// @brief Create a new APInt by translating the string represented 
/// integer value.
 -  APInt(const std::string Val, uint8_t radix = 10, bool sign = false);
 +  APInt(const std::string Val, uint8_t radix = 10);
  
/// @brief Create a new APInt by translating the char array represented
/// integer value.
 -  APInt(const char StrStart[], unsigned slen, uint8_t radix, bool sign = 
 false);
 +  APInt(const char StrStart[], unsigned slen, uint8_t radix);
  
/// @brief Copy Constructor.
APInt(const APInt API);
 @@ -179,14 +197,6 @@
/// @brief Bitwise XOR assignment operator. 
APInt operator^=(const APInt RHS);
  
 -  /// Left-shift the APInt by shiftAmt and assigns the result to this APInt.
 -  /// @brief Left-shift assignment operator. 
 -  APInt operator=(unsigned shiftAmt);
 -
 -  /// Right-shift the APInt by shiftAmt and assigns the result to this APInt.
 -  /// @brief Right-shift assignment operator. 
 -  APInt operator=(unsigned shiftAmt);
 -
/// Performs a bitwise complement operation on this APInt.
/// @brief Bitwise complement operator. 
APInt operator~() const;
 @@ -196,11 +206,6 @@
/// @brief Multiplication assignment operator. 
APInt operator*=(const APInt RHS);
  
 -  /// Divides this APInt by the given APInt RHS and 
 -  /// assigns the result to this APInt.
 -  /// @brief Division 

[llvm-commits] llvm-gcc4: compile fix due to ParseBytecodeFile changes

2007-02-08 Thread Duncan Sands
Read bytecodes from PCH file,
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20070205/044159.html,

and Push bytecode decompressor out through APIs,
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20070205/044106.html,

passed each other in the night.  The attached patch gets llvm-gcc4 building
again.

Ciao,

Duncan.
Index: gcc.llvm.master/gcc/llvm-backend.cpp
===
--- gcc.llvm.master.orig/gcc/llvm-backend.cpp	2007-02-08 18:00:28.0 +0100
+++ gcc.llvm.master/gcc/llvm-backend.cpp	2007-02-08 18:01:12.0 +0100
@@ -37,6 +37,7 @@
 #include llvm/CodeGen/SchedulerRegistry.h
 #include llvm/CodeGen/ScheduleDAG.h
 #include llvm/Support/Streams.h
+#include llvm/Support/Compressor.h
 #include llvm/Target/SubtargetFeature.h
 #include llvm/Target/TargetData.h
 #include llvm/Target/TargetLowering.h
@@ -192,7 +193,8 @@
 
   fclose (asm_out_file);
   std::string ErrMsg;
-  TheModule = ParseBytecodeFile(asm_file_name, ErrMsg);
+  TheModule = ParseBytecodeFile(asm_file_name,
+Compressor::decompressToNewBuffer, ErrMsg);
   if (!TheModule) {
 cerr  Error reading bytecodes from PCH file\n;
 cerr  ErrMsg  \n;
___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/lib/Target/Alpha/AlphaISelLowering.cpp

2007-02-08 Thread Andrew Lenharth


Changes in directory llvm/lib/Target/Alpha:

AlphaISelLowering.cpp updated: 1.80 - 1.81
---
Log message:

return addresses, those I already have

---
Diffs of the changes:  (+3 -2)

 AlphaISelLowering.cpp |5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)


Index: llvm/lib/Target/Alpha/AlphaISelLowering.cpp
diff -u llvm/lib/Target/Alpha/AlphaISelLowering.cpp:1.80 
llvm/lib/Target/Alpha/AlphaISelLowering.cpp:1.81
--- llvm/lib/Target/Alpha/AlphaISelLowering.cpp:1.80Tue Jan 30 14:08:37 2007
+++ llvm/lib/Target/Alpha/AlphaISelLowering.cpp Thu Feb  8 11:37:41 2007
@@ -544,8 +544,9 @@
 return DAG.getTruncStore(S1, DAG.getConstant(VarArgsOffset, MVT::i64),
  SA2, NULL, 0, MVT::i32);
   }
-  // Frame  Return address.  Currently unimplemented
-  case ISD::RETURNADDR: break;
+  case ISD::RETURNADDR:
+return DAG.getNode(AlphaISD::GlobalRetAddr, MVT::i64);
+  //FIXME: implement
   case ISD::FRAMEADDR:  break;
   }
 



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm-test/MultiSource/Benchmarks/minisat/Alg.h BasicHeap.h BoxedVec.h Heap.h Map.h Queue.h SolverTypes.h Sort.h Vec.h Makefile

2007-02-08 Thread Owen Anderson


Changes in directory llvm-test/MultiSource/Benchmarks/minisat:

Alg.h added (r1.1)
BasicHeap.h added (r1.1)
BoxedVec.h added (r1.1)
Heap.h added (r1.1)
Map.h added (r1.1)
Queue.h added (r1.1)
SolverTypes.h added (r1.1)
Sort.h added (r1.1)
Vec.h added (r1.1)
Makefile updated: 1.3 - 1.4
---
Log message:

Flatten minisat's directory structure, and default to the shorter test case.


---
Diffs of the changes:  (+1098 -1)

 Alg.h |   57 
 BasicHeap.h   |   98 
 BoxedVec.h|  147 +++
 Heap.h|  169 +
 Makefile  |5 +
 Map.h |  118 ++
 Queue.h   |   82 
 SolverTypes.h |  197 ++
 Sort.h|   93 +++
 Vec.h |  133 +++
 10 files changed, 1098 insertions(+), 1 deletion(-)


Index: llvm-test/MultiSource/Benchmarks/minisat/Alg.h
diff -c /dev/null llvm-test/MultiSource/Benchmarks/minisat/Alg.h:1.1
*** /dev/null   Thu Feb  8 11:52:03 2007
--- llvm-test/MultiSource/Benchmarks/minisat/Alg.h  Thu Feb  8 11:51:53 2007
***
*** 0 
--- 1,57 
+ 
/***[Alg.h]
+ MiniSat -- Copyright (c) 2003-2006, Niklas Een, Niklas Sorensson
+ 
+ Permission is hereby granted, free of charge, to any person obtaining a copy 
of this software and
+ associated documentation files (the Software), to deal in the Software 
without restriction,
+ including without limitation the rights to use, copy, modify, merge, publish, 
distribute,
+ sublicense, and/or sell copies of the Software, and to permit persons to whom 
the Software is
+ furnished to do so, subject to the following conditions:
+ 
+ The above copyright notice and this permission notice shall be included in 
all copies or
+ substantial portions of the Software.
+ 
+ THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
IMPLIED, INCLUDING BUT
+ NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR 
PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE 
FOR ANY CLAIM,
+ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 
OTHERWISE, ARISING FROM, OUT
+ OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
SOFTWARE.
+ 
**/
+ 
+ #ifndef Alg_h
+ #define Alg_h
+ 
+ 
//=
+ // Useful functions on vectors
+ 
+ 
+ #if 1
+ templateclass V, class T
+ static inline void remove(V ts, const T t)
+ {
+ int j = 0;
+ for (; j  ts.size()  ts[j] != t; j++);
+ assert(j  ts.size());
+ for (; j  ts.size()-1; j++) ts[j] = ts[j+1];
+ ts.pop();
+ }
+ #else
+ templateclass V, class T
+ static inline void remove(V ts, const T t)
+ {
+ int j = 0;
+ for (; j  ts.size()  ts[j] != t; j++);
+ assert(j  ts.size());
+ ts[j] = ts.last();
+ ts.pop();
+ }
+ #endif
+ 
+ templateclass V, class T
+ static inline bool find(V ts, const T t)
+ {
+ int j = 0;
+ for (; j  ts.size()  ts[j] != t; j++);
+ return j  ts.size();
+ }
+ 
+ #endif


Index: llvm-test/MultiSource/Benchmarks/minisat/BasicHeap.h
diff -c /dev/null llvm-test/MultiSource/Benchmarks/minisat/BasicHeap.h:1.1
*** /dev/null   Thu Feb  8 11:52:09 2007
--- llvm-test/MultiSource/Benchmarks/minisat/BasicHeap.hThu Feb  8 
11:51:53 2007
***
*** 0 
--- 1,98 
+ 
/**[Heap.h]
+ MiniSat -- Copyright (c) 2003-2006, Niklas Een, Niklas Sorensson
+ 
+ Permission is hereby granted, free of charge, to any person obtaining a copy 
of this software and
+ associated documentation files (the Software), to deal in the Software 
without restriction,
+ including without limitation the rights to use, copy, modify, merge, publish, 
distribute,
+ sublicense, and/or sell copies of the Software, and to permit persons to whom 
the Software is
+ furnished to do so, subject to the following conditions:
+ 
+ The above copyright notice and this permission notice shall be included in 
all copies or
+ substantial portions of the Software.
+ 
+ THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
IMPLIED, INCLUDING BUT
+ NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR 
PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE 
FOR ANY CLAIM,
+ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 
OTHERWISE, ARISING FROM, OUT
+ OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 

Re: [llvm-commits] CVS: llvm/include/llvm/ADT/APInt.h

2007-02-08 Thread Chris Lattner

  // 
 ===-- 
 ===//
  //  APInt Class
  // 
 ===-- 
 ===//
 @@ -40,14 +55,18 @@
  class APInt {
/// Friend Functions of APInt declared here. For detailed  
 comments,
/// see bottom of this file.
 -  friend bool isIntN(unsigned N, const APInt APIVal);
 -  friend APInt ByteSwap(const APInt APIVal);
 -  friend APInt LogBase2(const APInt APIVal);
 -  friend double APIntToDouble(const APInt APIVal);
 -  friend float APIntToFloat(const APInt APIVal);
 +  friend bool APIntOps::isIntN(unsigned N, const APInt APIVal);
 +  friend APInt APIntOps::ByteSwap(const APInt APIVal);
 +  friend APInt APIntOps::LogBase2(const APInt APIVal);
 +  friend APInt APIntOps::ashr(const APInt LHS, unsigned shiftAmt);
 +  friend APInt APIntOps::lshr(const APInt LHS, unsigned shiftAmt);
 +  friend APInt APIntOps::shl(const APInt LHS, unsigned shiftAmt);
 +  friend APInt APIntOps::sdiv(const APInt LHS, const APInt RHS);
 +  friend APInt APIntOps::udiv(const APInt LHS, const APInt RHS);
 +  friend APInt APIntOps::srem(const APInt LHS, const APInt RHS);
 +  friend APInt APIntOps::urem(const APInt LHS, const APInt RHS);

 There's a lot of friend functions here. Perhaps these could go at the
 bottom of the class declaration instead of the top.

Actually, please make each of these a public method.  This provides  
the ugly X = X.udiv(Y) syntax.  Then add the namespace versions as  
simple inline functions that that just call the method version.

-Chris
___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] [123593] Fix build.

2007-02-08 Thread jlaskey
Revision: 123593
Author:   jlaskey
Date: 2007-02-08 10:12:42 -0800 (Thu, 08 Feb 2007)

Log Message:
---
Fix build.

Modified Paths:
--
apple-local/branches/llvm/gcc/llvm-backend.cpp
apple-local/branches/llvm/gcc/llvm-linker-hack.cpp

Modified: apple-local/branches/llvm/gcc/llvm-backend.cpp
===
--- apple-local/branches/llvm/gcc/llvm-backend.cpp  2007-02-08 09:56:34 UTC 
(rev 123592)
+++ apple-local/branches/llvm/gcc/llvm-backend.cpp  2007-02-08 18:12:42 UTC 
(rev 123593)
@@ -192,7 +192,9 @@
 
   fclose (asm_out_file);
   std::string ErrMsg;
-  TheModule = ParseBytecodeFile(asm_file_name, ErrMsg);
+  TheModule = ParseBytecodeFile(asm_file_name,
+Compressor::decompressToNewBuffer,
+ErrMsg);
   if (!TheModule) {
 cerr  Error reading bytecodes from PCH file\n;
 cerr  ErrMsg  \n;

Modified: apple-local/branches/llvm/gcc/llvm-linker-hack.cpp
===
--- apple-local/branches/llvm/gcc/llvm-linker-hack.cpp  2007-02-08 09:56:34 UTC 
(rev 123592)
+++ apple-local/branches/llvm/gcc/llvm-linker-hack.cpp  2007-02-08 18:12:42 UTC 
(rev 123593)
@@ -42,7 +42,7 @@
   new llvm::ExistingModuleProvider(0);
   llvm::createVerifierPass();
   llvm::WriteBytecodeToFile(0, llvm::cout);
-  llvm::ParseBytecodeFile(NULL,NULL);
+  llvm::ParseBytecodeFile(NULL);
 
   llvm::createInstructionCombiningPass();
   llvm::createScalarReplAggregatesPass();


___
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/Makefile

2007-02-08 Thread Chris Lattner


Changes in directory llvm-test/MultiSource/Applications:

Makefile updated: 1.25 - 1.26
---
Log message:

add minisat


---
Diffs of the changes:  (+1 -1)

 Makefile |2 +-
 1 files changed, 1 insertion(+), 1 deletion(-)


Index: llvm-test/MultiSource/Applications/Makefile
diff -u llvm-test/MultiSource/Applications/Makefile:1.25 
llvm-test/MultiSource/Applications/Makefile:1.26
--- llvm-test/MultiSource/Applications/Makefile:1.25Tue Oct  3 17:05:26 2006
+++ llvm-test/MultiSource/Applications/Makefile Thu Feb  8 12:14:36 2007
@@ -5,7 +5,7 @@
 include $(LEVEL)/Makefile.config
 
 PARALLEL_DIRS  = Burg aha sgefa siod lambda-0.1.3 d spiff hbd treecc SPASS \
- hexxagon oggenc JM viterbi
+ hexxagon oggenc JM viterbi minisat
 
 # Obsequi uses Linux-only features; need to fix that
 ifeq ($(OS),Linux)



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/tools/llvm-ld/Optimize.cpp

2007-02-08 Thread Reid Spencer


Changes in directory llvm/tools/llvm-ld:

Optimize.cpp updated: 1.16 - 1.17
---
Log message:

For PR1153: http://llvm.org/PR1153 :
Make llvm-ld more gccld-like by having it run the same set of passes. The
delta was probably due to lack of llvm-ld being maintained. Just another
reason to have only one optimizing linker in in LLVM.


---
Diffs of the changes:  (+32 -13)

 Optimize.cpp |   45 -
 1 files changed, 32 insertions(+), 13 deletions(-)


Index: llvm/tools/llvm-ld/Optimize.cpp
diff -u llvm/tools/llvm-ld/Optimize.cpp:1.16 
llvm/tools/llvm-ld/Optimize.cpp:1.17
--- llvm/tools/llvm-ld/Optimize.cpp:1.16Mon Feb  5 14:47:21 2007
+++ llvm/tools/llvm-ld/Optimize.cpp Thu Feb  8 12:13:59 2007
@@ -73,13 +73,22 @@
 static cl::optbool VerifyEach(verify-each,
  cl::desc(Verify intermediate results of all passes));
 
-static cl::optbool Strip(s,
-  cl::desc(Strip symbol info from executable));
-
 static cl::alias ExportDynamic(export-dynamic,
   cl::aliasopt(DisableInternalize),
   cl::desc(Alias for -disable-internalize));
 
+static cl::optbool Strip(strip-all, 
+  cl::desc(Strip all symbol info from executable));
+
+static cl::alias A0(s, cl::desc(Alias for --strip-all), 
+  cl::aliasopt(Strip));
+
+static cl::optbool StripDebug(strip-debug,
+  cl::desc(Strip debugger symbol info from executable));
+
+static cl::alias A1(S, cl::desc(Alias for --strip-debug),
+  cl::aliasopt(StripDebug));
+
 // A utility function that adds a pass to the pass manager but will also add
 // a verifier pass after if we're supposed to verify.
 static inline void addPass(PassManager PM, Pass *P) {
@@ -114,6 +123,11 @@
 // internal.
 addPass(Passes, createInternalizePass(!DisableInternalize));
 
+// Propagate constants at call sites into the functions they call.  This
+// opens opportunities for globalopt (and inlining) by substituting 
function
+// pointers passed as arguments to direct uses of functions.  
+addPass(Passes, createIPSCCPPass());
+
 // Now that we internalized some globals, see if we can hack on them!
 addPass(Passes, createGlobalOptimizerPass());
 
@@ -121,22 +135,20 @@
 // keep one copy of each constant...
 addPass(Passes, createConstantMergePass());
 
-// If the -s command line option was specified, strip the symbols out of 
the
-// resulting program to make it smaller.  -s is a GLD option that we are
-// supporting.
-if (Strip)
-  addPass(Passes, createStripSymbolsPass());
-
-// Propagate constants at call sites into the functions they call.
-addPass(Passes, createIPConstantPropagationPass());
-
 // Remove unused arguments from functions...
 addPass(Passes, createDeadArgEliminationPass());
 
+// Reduce the code after globalopt and ipsccp.  Both can open up 
significant
+// simplification opportunities, and both can propagate functions through
+// function pointers.  When this happens, we often have to resolve varargs
+// calls, etc, so let instcombine do this.
+addPass(Passes, createInstructionCombiningPass());
+
 if (!DisableInline)
   addPass(Passes, createFunctionInliningPass()); // Inline small functions
 
 addPass(Passes, createPruneEHPass());// Remove dead EH info
+addPass(Passes, createGlobalOptimizerPass());// Optimize globals again.
 addPass(Passes, createGlobalDCEPass());  // Remove dead functions
 
 // If we didn't decide to inline a function, check to see if we can
@@ -148,8 +160,9 @@
 
 addPass(Passes, createScalarReplAggregatesPass()); // Break up allocas
 
-// Run a few AA driven optimizations, to cleanup the code.
+// Run a few AA driven optimizations here and now, to cleanup the code.
 addPass(Passes, createGlobalsModRefPass());  // IP alias analysis
+
 addPass(Passes, createLICMPass());   // Hoist loop invariants
 addPass(Passes, createLoadValueNumberingPass()); // GVN for load instrs
 addPass(Passes, createGCSEPass());   // Remove common subexprs
@@ -165,6 +178,12 @@
 addPass(Passes, createGlobalDCEPass());
   }
 
+  // If the -s or -S command line options were specified, strip the symbols out
+  // of the resulting program to make it smaller.  -s and -S are GNU ld options
+  // that we are supporting; they alias -strip-all and -strip-debug.
+  if (Strip || StripDebug)
+addPass(Passes, createStripSymbolsPass(StripDebug  !Strip));
+
   // Create a new optimization pass for each one specified on the command line
   std::auto_ptrTargetMachine target;
   for (unsigned i = 0; i  OptimizationList.size(); ++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/minisat/Makefile

2007-02-08 Thread Chris Lattner


Changes in directory llvm-test/MultiSource/Applications/minisat:

Makefile updated: 1.4 - 1.5
---
Log message:

let this sort-of work with darwin at least


---
Diffs of the changes:  (+3 -0)

 Makefile |3 +++
 1 files changed, 3 insertions(+)


Index: llvm-test/MultiSource/Applications/minisat/Makefile
diff -u llvm-test/MultiSource/Applications/minisat/Makefile:1.4 
llvm-test/MultiSource/Applications/minisat/Makefile:1.5
--- llvm-test/MultiSource/Applications/minisat/Makefile:1.4 Thu Feb  8 
11:51:53 2007
+++ llvm-test/MultiSource/Applications/minisat/Makefile Thu Feb  8 12:14:03 2007
@@ -10,3 +10,6 @@
 endif
 
 include ../../Makefile.multisrc
+
+JIT_OPTS += -load libz.dylib
+



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/tools/llvm-ld/llvm-ld.cpp

2007-02-08 Thread Reid Spencer


Changes in directory llvm/tools/llvm-ld:

llvm-ld.cpp updated: 1.46 - 1.47
---
Log message:

For PR1153: http://llvm.org/PR1153 :
Copy a couple more missing options from gccld to llvm-ld.


---
Diffs of the changes:  (+5 -0)

 llvm-ld.cpp |5 +
 1 files changed, 5 insertions(+)


Index: llvm/tools/llvm-ld/llvm-ld.cpp
diff -u llvm/tools/llvm-ld/llvm-ld.cpp:1.46 llvm/tools/llvm-ld/llvm-ld.cpp:1.47
--- llvm/tools/llvm-ld/llvm-ld.cpp:1.46 Sun Jan 21 00:33:59 2007
+++ llvm/tools/llvm-ld/llvm-ld.cpp  Thu Feb  8 13:03:11 2007
@@ -97,6 +97,11 @@
 static  cl::optstd::string CO6(h, cl::Hidden,
   cl::desc(Compatibility option: ignored));
 
+static cl::optbool CO7(start-group, cl::Hidden, 
+  cl::desc(Compatibility option: ignored));
+
+static cl::optbool CO8(end-group, cl::Hidden, 
+  cl::desc(Compatibility option: ignored));
 
 /// This is just for convenience so it doesn't have to be passed around
 /// everywhere.



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/lib/Support/CStringMap.cpp

2007-02-08 Thread Chris Lattner


Changes in directory llvm/lib/Support:

CStringMap.cpp updated: 1.3 - 1.4
---
Log message:

Allow cstringmap to contain strings with nul characters in them.


---
Diffs of the changes:  (+5 -4)

 CStringMap.cpp |9 +
 1 files changed, 5 insertions(+), 4 deletions(-)


Index: llvm/lib/Support/CStringMap.cpp
diff -u llvm/lib/Support/CStringMap.cpp:1.3 llvm/lib/Support/CStringMap.cpp:1.4
--- llvm/lib/Support/CStringMap.cpp:1.3 Sat Jan  6 17:20:51 2007
+++ llvm/lib/Support/CStringMap.cpp Thu Feb  8 13:08:37 2007
@@ -58,7 +58,7 @@
   unsigned ProbeAmt = 1;
   while (1) {
 ItemBucket Bucket = TheTable[BucketNo];
-void *BucketItem = Bucket.Item;
+StringMapEntryBase *BucketItem = Bucket.Item;
 // If we found an empty bucket, this key isn't in the table yet, return it.
 if (BucketItem == 0) {
   Bucket.FullHashValue = FullHashValue;
@@ -73,8 +73,9 @@
   // Do the comparison like this because NameStart isn't necessarily
   // null-terminated!
   char *ItemStr = (char*)BucketItem+ItemSize;
-  if (strlen(ItemStr) == unsigned(NameEnd-NameStart) 
-  memcmp(ItemStr, NameStart, (NameEnd-NameStart)) == 0) {
+  unsigned ItemStrLen = BucketItem-getKeyLength();
+  if (unsigned(NameEnd-NameStart) == ItemStrLen 
+  memcmp(ItemStr, NameStart, ItemStrLen) == 0) {
 // We found a match!
 return BucketNo;
   }
@@ -131,7 +132,7 @@
 /// invoking Visitor.Visit for each of them.
 void CStringMapImpl::VisitEntries(const CStringMapVisitor Visitor) const {
   for (ItemBucket *IB = TheTable, *E = TheTable+NumBuckets; IB != E; ++IB) {
-if (void *Id = IB-Item)
+if (StringMapEntryBase *Id = IB-Item)
   Visitor.Visit((char*)Id + ItemSize, Id);
   }
 }



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/include/llvm/ADT/CStringMap.h

2007-02-08 Thread Chris Lattner


Changes in directory llvm/include/llvm/ADT:

CStringMap.h updated: 1.3 - 1.4
---
Log message:

Allow cstringmap to contain strings with nul characters in them.


---
Diffs of the changes:  (+57 -28)

 CStringMap.h |   85 +++
 1 files changed, 57 insertions(+), 28 deletions(-)


Index: llvm/include/llvm/ADT/CStringMap.h
diff -u llvm/include/llvm/ADT/CStringMap.h:1.3 
llvm/include/llvm/ADT/CStringMap.h:1.4
--- llvm/include/llvm/ADT/CStringMap.h:1.3  Sun Oct 29 21:14:15 2006
+++ llvm/include/llvm/ADT/CStringMap.h  Thu Feb  8 13:08:37 2007
@@ -19,14 +19,23 @@
 
 namespace llvm {
   
+/// StringMapEntryBase - Shared base class of StringMapEntry instances.
+class StringMapEntryBase {
+  unsigned StrLen;
+public:
+  StringMapEntryBase(unsigned Len) : StrLen(Len) {}
+  
+  unsigned getKeyLength() const { return StrLen; }
+};
+  
 /// CStringMapVisitor - Subclasses of this class may be implemented to walk all
 /// of the items in a CStringMap.
 class CStringMapVisitor {
 public:
   virtual ~CStringMapVisitor();
-  virtual void Visit(const char *Key, void *Value) const = 0;
+  virtual void Visit(const char *Key, StringMapEntryBase *Value) const = 0;
 };
-  
+
 /// CStringMapImpl - This is the base class of CStringMap that is shared among
 /// all of its instantiations.
 class CStringMapImpl {
@@ -39,7 +48,7 @@
 unsigned FullHashValue;
 
 /// Item - This is a pointer to the actual item object.
-void *Item;
+StringMapEntryBase *Item;
   };
   
   ItemBucket *TheTable;
@@ -64,66 +73,86 @@
   void VisitEntries(const CStringMapVisitor Visitor) const;
 };
 
+/// StringMapEntry - This is used to represent one value that is inserted into
+/// a StringMap.  It contains the Value itself and the key: the string length
+/// and data.
+templatetypename ValueTy
+class StringMapEntry : public StringMapEntryBase {
+  ValueTy Val;
+public:
+  StringMapEntry(unsigned StrLen)
+: StringMapEntryBase(StrLen), Val() {}
+  StringMapEntry(unsigned StrLen, const ValueTy V)
+: StringMapEntryBase(StrLen), Val(V) {}
+
+  const ValueTy getValue() const { return Val; }
+  ValueTy getValue() { return Val; }
+  
+  void setValue(const ValueTy V) { Val = V; }
+  
+  /// getKeyData - Return the start of the string data that is the key for this
+  /// value.  The string data is always stored immediately after the
+  /// StringMapEntry object.
+  const char *getKeyData() const {return reinterpret_castconst 
char*(this+1);}
+};
+
 
 /// CStringMap - This is an unconventional map that is specialized for handling
-/// keys that are C strings, that is, null-terminated strings.  This does 
some
+/// keys that are strings, which are basically ranges of bytes. This does 
some
 /// funky memory allocation and hashing things to make it extremely efficient,
 /// storing the string data *after* the value in the map.
 templatetypename ValueTy, typename AllocatorTy = MallocAllocator
 class CStringMap : public CStringMapImpl {
   AllocatorTy Allocator;
+  typedef StringMapEntryValueTy MapEntryTy;
 public:
   CStringMap(unsigned InitialSize = 0)
-: CStringMapImpl(InitialSize, sizeof(ValueTy)) {}
+: CStringMapImpl(InitialSize, sizeof(MapEntryTy)) {}
   
   AllocatorTy getAllocator() { return Allocator; }
   const AllocatorTy getAllocator() const { return Allocator; }
 
   /// FindValue - Look up the specified key in the map.  If it exists, return a
   /// pointer to the element, otherwise return null.
-  ValueTy *FindValue(const char *KeyStart, const char *KeyEnd) {
+  MapEntryTy *FindValue(const char *KeyStart, const char *KeyEnd) {
 unsigned BucketNo = LookupBucketFor(KeyStart, KeyEnd);
-return static_castValueTy*(TheTable[BucketNo].Item);
-  }
-  
-  /// GetKeyForValueInMap - Given a value that is inserted into this map, 
return
-  /// the string that corresponds to it.  This is an efficient operation that
-  /// is provided by CStringMap.  The string is live as long as the value is in
-  /// the map.
-  static const char *GetKeyForValueInMap(const ValueTy Val) {
-return reinterpret_castconst char*(Val+1);
+return static_castMapEntryTy*(TheTable[BucketNo].Item);
   }
   
   /// GetOrCreateValue - Look up the specified key in the table.  If a value
   /// exists, return it.  Otherwise, default construct a value, insert it, and
   /// return.
-  ValueTy GetOrCreateValue(const char *KeyStart, const char *KeyEnd) {
+  StringMapEntryValueTy GetOrCreateValue(const char *KeyStart, 
+const char *KeyEnd) {
 unsigned BucketNo = LookupBucketFor(KeyStart, KeyEnd);
 ItemBucket Bucket = TheTable[BucketNo];
 if (Bucket.Item)
-  return *static_castValueTy*(Bucket.Item);
+  return *static_castMapEntryTy*(Bucket.Item);
 
 unsigned KeyLength = KeyEnd-KeyStart;
 
-// Okay, the item doesn't already exist, and Bucket is the bucket to fill
-// in.  Allocate a new item with space for the 

[llvm-commits] CVS: llvm/docs/ProgrammersManual.html

2007-02-08 Thread Chris Lattner


Changes in directory llvm/docs:

ProgrammersManual.html updated: 1.122 - 1.123
---
Log message:

update this.


---
Diffs of the changes:  (+10 -11)

 ProgrammersManual.html |   21 ++---
 1 files changed, 10 insertions(+), 11 deletions(-)


Index: llvm/docs/ProgrammersManual.html
diff -u llvm/docs/ProgrammersManual.html:1.122 
llvm/docs/ProgrammersManual.html:1.123
--- llvm/docs/ProgrammersManual.html:1.122  Wed Feb  7 00:24:17 2007
+++ llvm/docs/ProgrammersManual.htmlThu Feb  8 13:14:21 2007
@@ -71,7 +71,7 @@
 lia href=#ds_mapMap-Like Containers (std::map, DenseMap, etc)/a
 ul
   lia href=#dss_sortedvectormapA sorted 'vector'/a/li
-  lia href=#dss_cstringmapllvm/ADT/CStringMap.h/a/li
+  lia href=#dss_stringmapllvm/ADT/StringMap.h/a/li
   lia href=#dss_indexedmapllvm/ADT/IndexedMap.h/a/li
   lia href=#dss_densemapllvm/ADT/DenseMap.h/a/li
   lia href=#dss_maplt;mapgt;/a/li
@@ -1152,7 +1152,7 @@
 
 !-- ___ 
--
 div class=doc_subsubsection
-  a name=dss_cstringmapllvm/ADT/CStringMap.h/a
+  a name=dss_stringmapllvm/ADT/StringMap.h/a
 /div
 
 div class=doc_text
@@ -1160,12 +1160,11 @@
 p
 Strings are commonly used as keys in maps, and they are difficult to support
 efficiently: they are variable length, inefficient to hash and compare when
-long, expensive to copy, etc.  CStringMap is a specialized container designed 
to
-cope with these issues.  It supports mapping an arbitrary range of bytes that
-does not have an embedded nul character in it (C strings) to an arbitrary
-other object./p
+long, expensive to copy, etc.  StringMap is a specialized container designed to
+cope with these issues.  It supports mapping an arbitrary range of bytes to an
+arbitrary other object./p
 
-pThe CStringMap implementation uses a quadratically-probed hash table, where
+pThe StringMap implementation uses a quadratically-probed hash table, where
 the buckets store a pointer to the heap allocated entries (and some other
 stuff).  The entries in the map must be heap allocated because the strings are
 variable length.  The string data (key) and the element object (value) are
@@ -1173,15 +1172,15 @@
 object.  This container guarantees the tt(char*)(amp;Value+1)/tt points
 to the key string for a value./p
 
-pThe CStringMap is very fast for several reasons: quadratic probing is very
+pThe StringMap is very fast for several reasons: quadratic probing is very
 cache efficient for lookups, the hash value of strings in buckets is not
-recomputed when lookup up an element, CStringMap rarely has to touch the
+recomputed when lookup up an element, StringMap rarely has to touch the
 memory for unrelated objects when looking up a value (even when hash collisions
 happen), hash table growth does not recompute the hash values for strings
 already in the table, and each pair in the map is store in a single allocation
 (the string data is stored in the same allocation as the Value of a pair)./p
 
-pCStringMap also provides query methods that take byte ranges, so it only 
ever
+pStringMap also provides query methods that take byte ranges, so it only ever
 copies a string if a value is inserted into the table./p
 /div
 
@@ -3178,7 +3177,7 @@
   a href=mailto:[EMAIL PROTECTED]Dinakar Dhurjati/a and
   a href=mailto:[EMAIL PROTECTED]Chris Lattner/abr
   a href=http://llvm.org;The LLVM Compiler Infrastructure/abr
-  Last modified: $Date: 2007/02/07 06:24:17 $
+  Last modified: $Date: 2007/02/08 19:14:21 $
 /address
 
 /body



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/include/llvm/ADT/StringMap.h CStringMap.h

2007-02-08 Thread Chris Lattner


Changes in directory llvm/include/llvm/ADT:

StringMap.h updated: 1.4 - 1.5
CStringMap.h (r1.4) removed
---
Log message:

Rename CStringMap - StringMap, since it now supports nul characters in the
strings.


---
Diffs of the changes:  (+17 -17)

 StringMap.h |   34 +-
 1 files changed, 17 insertions(+), 17 deletions(-)


Index: llvm/include/llvm/ADT/StringMap.h
diff -u llvm/include/llvm/ADT/StringMap.h:1.4 
llvm/include/llvm/ADT/StringMap.h:1.5
--- llvm/include/llvm/ADT/StringMap.h:1.4   Thu Feb  8 13:08:37 2007
+++ llvm/include/llvm/ADT/StringMap.h   Thu Feb  8 13:20:57 2007
@@ -1,4 +1,4 @@
-//===--- CStringMap.h - CString Hash table map interface *- C++ 
-*-===//
+//===--- StringMap.h - String Hash table map interface --*- C++ 
-*-===//
 //
 // The LLVM Compiler Infrastructure
 //
@@ -7,12 +7,12 @@
 //
 
//===--===//
 //
-// This file defines the CStringMap class.
+// This file defines the StringMap class.
 //
 
//===--===//
 
-#ifndef LLVM_ADT_CSTRINGMAP_H
-#define LLVM_ADT_CSTRINGMAP_H
+#ifndef LLVM_ADT_STRINGMAP_H
+#define LLVM_ADT_STRINGMAP_H
 
 #include llvm/Support/Allocator.h
 #include cstring
@@ -28,17 +28,17 @@
   unsigned getKeyLength() const { return StrLen; }
 };
   
-/// CStringMapVisitor - Subclasses of this class may be implemented to walk all
-/// of the items in a CStringMap.
-class CStringMapVisitor {
+/// StringMapVisitor - Subclasses of this class may be implemented to walk all
+/// of the items in a StringMap.
+class StringMapVisitor {
 public:
-  virtual ~CStringMapVisitor();
+  virtual ~StringMapVisitor();
   virtual void Visit(const char *Key, StringMapEntryBase *Value) const = 0;
 };
 
-/// CStringMapImpl - This is the base class of CStringMap that is shared among
+/// StringMapImpl - This is the base class of StringMap that is shared among
 /// all of its instantiations.
-class CStringMapImpl {
+class StringMapImpl {
 protected:
   /// ItemBucket - The hash table consists of an array of these.  If Item is
   /// non-null, this is an extant entry, otherwise, it is a hole.
@@ -56,7 +56,7 @@
   unsigned NumItems;
   unsigned ItemSize;
 protected:
-  CStringMapImpl(unsigned InitSize, unsigned ItemSize);
+  StringMapImpl(unsigned InitSize, unsigned ItemSize);
   void RehashTable();
   
   /// LookupBucketFor - Look up the bucket that the specified string should end
@@ -70,7 +70,7 @@
   unsigned getNumBuckets() const { return NumBuckets; }
   unsigned getNumItems() const { return NumItems; }
 
-  void VisitEntries(const CStringMapVisitor Visitor) const;
+  void VisitEntries(const StringMapVisitor Visitor) const;
 };
 
 /// StringMapEntry - This is used to represent one value that is inserted into
@@ -97,17 +97,17 @@
 };
 
 
-/// CStringMap - This is an unconventional map that is specialized for handling
+/// StringMap - This is an unconventional map that is specialized for handling
 /// keys that are strings, which are basically ranges of bytes. This does 
some
 /// funky memory allocation and hashing things to make it extremely efficient,
 /// storing the string data *after* the value in the map.
 templatetypename ValueTy, typename AllocatorTy = MallocAllocator
-class CStringMap : public CStringMapImpl {
+class StringMap : public StringMapImpl {
   AllocatorTy Allocator;
   typedef StringMapEntryValueTy MapEntryTy;
 public:
-  CStringMap(unsigned InitialSize = 0)
-: CStringMapImpl(InitialSize, sizeof(MapEntryTy)) {}
+  StringMap(unsigned InitialSize = 0)
+: StringMapImpl(InitialSize, sizeof(MapEntryTy)) {}
   
   AllocatorTy getAllocator() { return Allocator; }
   const AllocatorTy getAllocator() const { return Allocator; }
@@ -164,7 +164,7 @@
 return *NewItem;
   }
   
-  ~CStringMap() {
+  ~StringMap() {
 for (ItemBucket *I = TheTable, *E = TheTable+NumBuckets; I != E; ++I) {
   if (MapEntryTy *Id = static_castMapEntryTy*(I-Item)) {
 // Free memory referenced by the item.



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/include/llvm/Target/TargetLowering.h

2007-02-08 Thread Evan Cheng


Changes in directory llvm/include/llvm/Target:

TargetLowering.h updated: 1.106 - 1.107
---
Log message:

Move SimplifySetCC to TargetLowering and allow it to be shared with legalizer.

---
Diffs of the changes:  (+10 -2)

 TargetLowering.h |   12 ++--
 1 files changed, 10 insertions(+), 2 deletions(-)


Index: llvm/include/llvm/Target/TargetLowering.h
diff -u llvm/include/llvm/Target/TargetLowering.h:1.106 
llvm/include/llvm/Target/TargetLowering.h:1.107
--- llvm/include/llvm/Target/TargetLowering.h:1.106 Thu Feb  1 02:39:52 2007
+++ llvm/include/llvm/Target/TargetLowering.h   Thu Feb  8 16:13:59 2007
@@ -513,13 +513,15 @@
   struct DAGCombinerInfo {
 void *DC;  // The DAG Combiner object.
 bool BeforeLegalize;
+bool CalledByLegalizer;
   public:
 SelectionDAG DAG;
 
-DAGCombinerInfo(SelectionDAG dag, bool bl, void *dc)
-  : DC(dc), BeforeLegalize(bl), DAG(dag) {}
+DAGCombinerInfo(SelectionDAG dag, bool bl, bool cl, void *dc)
+  : DC(dc), BeforeLegalize(bl), CalledByLegalizer(cl), DAG(dag) {}
 
 bool isBeforeLegalize() const { return BeforeLegalize; }
+bool isCalledByLegalizer() const { return CalledByLegalizer; }
 
 void AddToWorklist(SDNode *N);
 SDOperand CombineTo(SDNode *N, const std::vectorSDOperand To);
@@ -527,6 +529,12 @@
 SDOperand CombineTo(SDNode *N, SDOperand Res0, SDOperand Res1);
   };
 
+  /// SimplifySetCC - Try to simplify a setcc built with the specified 
operands 
+  /// and cc. If it is unable to simplify it, return a null SDOperand.
+  SDOperand SimplifySetCC(MVT::ValueType VT, SDOperand N0, SDOperand N1,
+  ISD::CondCode Cond, bool foldBooleans,
+  DAGCombinerInfo DCI) const;
+
   /// PerformDAGCombine - This method will be invoked for all target nodes and
   /// for any target-independent nodes that the target has registered with
   /// invoke it for.



___
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/LegalizeDAG.cpp

2007-02-08 Thread Evan Cheng


Changes in directory llvm/lib/CodeGen/SelectionDAG:

LegalizeDAG.cpp updated: 1.471 - 1.472
---
Log message:

Make use of TLI.SimplifySetCC() in LegalizeSetCCOperands().

---
Diffs of the changes:  (+36 -8)

 LegalizeDAG.cpp |   44 
 1 files changed, 36 insertions(+), 8 deletions(-)


Index: llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
diff -u llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp:1.471 
llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp:1.472
--- llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp:1.471 Sat Feb  3 19:20:02 2007
+++ llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp   Thu Feb  8 16:16:19 2007
@@ -3732,7 +3732,8 @@
 
   // FIXME: This generated code sucks.
   ISD::CondCode LowCC;
-  switch (castCondCodeSDNode(CC)-get()) {
+  ISD::CondCode CCCode = castCondCodeSDNode(CC)-get();
+  switch (CCCode) {
   default: assert(0  Unknown integer setcc!);
   case ISD::SETLT:
   case ISD::SETULT: LowCC = ISD::SETULT; break;
@@ -3750,13 +3751,40 @@
 
   // NOTE: on targets without efficient SELECT of bools, we can always use
   // this identity: (B1 ? B2 : B3) -- (B1  B2)|(!B1B3)
-  Tmp1 = DAG.getSetCC(TLI.getSetCCResultTy(), LHSLo, RHSLo, LowCC);
-  Tmp2 = DAG.getNode(ISD::SETCC, TLI.getSetCCResultTy(), LHSHi, RHSHi, CC);
-  Result = DAG.getSetCC(TLI.getSetCCResultTy(), LHSHi, RHSHi, ISD::SETEQ);
-  Result = LegalizeOp(DAG.getNode(ISD::SELECT, Tmp1.getValueType(),
-  Result, Tmp1, Tmp2));
-  Tmp1 = Result;
-  Tmp2 = SDOperand();
+  TargetLowering::DAGCombinerInfo DagCombineInfo(DAG, false, true, NULL);
+  Tmp1 = TLI.SimplifySetCC(TLI.getSetCCResultTy(), LHSLo, RHSLo, LowCC,
+   false, DagCombineInfo);
+  if (!Tmp1.Val)
+Tmp1 = DAG.getSetCC(TLI.getSetCCResultTy(), LHSLo, RHSLo, LowCC);
+  Tmp2 = TLI.SimplifySetCC(TLI.getSetCCResultTy(), LHSHi, RHSHi,
+   CCCode, false, DagCombineInfo);
+  if (!Tmp2.Val)
+Tmp2 = DAG.getNode(ISD::SETCC, TLI.getSetCCResultTy(), LHSHi, RHSHi, 
CC);
+  
+  ConstantSDNode *Tmp1C = dyn_castConstantSDNode(Tmp1.Val);
+  ConstantSDNode *Tmp2C = dyn_castConstantSDNode(Tmp2.Val);
+  if ((Tmp1C  Tmp1C-getValue() == 0) ||
+  (Tmp2C  Tmp2C-getValue() == 0 
+   (CCCode == ISD::SETLE || CCCode == ISD::SETGE ||
+CCCode == ISD::SETUGE || CCCode == ISD::SETULE)) ||
+  (Tmp2C  Tmp2C-getValue() == 1 
+   (CCCode == ISD::SETLT || CCCode == ISD::SETGT ||
+CCCode == ISD::SETUGT || CCCode == ISD::SETULT))) {
+// low part is known false, returns high part.
+// For LE / GE, if high part is known false, ignore the low part.
+// For LT / GT, if high part is known true, ignore the low part.
+Tmp1 = Tmp2;
+Tmp2 = SDOperand();
+  } else {
+Result = TLI.SimplifySetCC(TLI.getSetCCResultTy(), LHSHi, RHSHi,
+   ISD::SETEQ, false, DagCombineInfo);
+if (!Result.Val)
+  Result=DAG.getSetCC(TLI.getSetCCResultTy(), LHSHi, RHSHi, 
ISD::SETEQ);
+Result = LegalizeOp(DAG.getNode(ISD::SELECT, Tmp1.getValueType(),
+Result, Tmp1, Tmp2));
+Tmp1 = Result;
+Tmp2 = SDOperand();
+  }
 }
   }
   }



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/test/CodeGen/ARM/long-setcc.ll

2007-02-08 Thread Evan Cheng


Changes in directory llvm/test/CodeGen/ARM:

long-setcc.ll added (r1.1)
---
Log message:

i64 setcc tests.

---
Diffs of the changes:  (+20 -0)

 long-setcc.ll |   20 
 1 files changed, 20 insertions(+)


Index: llvm/test/CodeGen/ARM/long-setcc.ll
diff -c /dev/null llvm/test/CodeGen/ARM/long-setcc.ll:1.1
*** /dev/null   Thu Feb  8 16:28:05 2007
--- llvm/test/CodeGen/ARM/long-setcc.ll Thu Feb  8 16:27:55 2007
***
*** 0 
--- 1,20 
+ ; RUN: llvm-as  %s | llc -march=arm 
+ ; RUN: llvm-as  %s | llc -march=arm | grep cmp | wc -l | grep 2 
+ ; RUN: llvm-as  %s | llc -march=arm -enable-thumb 
+ ; RUN: llvm-as  %s | llc -march=arm -enable-thumb | grep cmp | wc -l | grep 2
+ 
+ 
+ define i1 @t1(i64 %x) {
+   %B = icmp slt i64 %x, 0
+   ret i1 %B
+ }
+ 
+ define i1 @t2(i64 %x) {
+   %tmp = icmp ult i64 %x, 4294967296
+   ret i1 %tmp
+ }
+ 
+ define i1 @t3(i32 %x) {
+   %tmp = icmp ugt i32 %x, -1
+   ret i1 %tmp
+ }



___
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/global.h

2007-02-08 Thread Evan Cheng


Changes in directory llvm-test/MultiSource/Applications/JM/ldecod:

global.h updated: 1.5 - 1.6
---
Log message:

Increase pathname buffer sizes.

---
Diffs of the changes:  (+4 -4)

 global.h |8 
 1 files changed, 4 insertions(+), 4 deletions(-)


Index: llvm-test/MultiSource/Applications/JM/ldecod/global.h
diff -u llvm-test/MultiSource/Applications/JM/ldecod/global.h:1.5 
llvm-test/MultiSource/Applications/JM/ldecod/global.h:1.6
--- llvm-test/MultiSource/Applications/JM/ldecod/global.h:1.5   Thu Feb  8 
16:38:32 2007
+++ llvm-test/MultiSource/Applications/JM/ldecod/global.h   Thu Feb  8 
16:40:47 2007
@@ -634,9 +634,9 @@
 // input parameters from configuration file
 struct inp_par
 {
-  char infile[100];   //! H.264 inputfile
-  char outfile[100];  //! Decoded YUV 4:2:0 output
-  char reffile[100];  //! Optional YUV 4:2:0 reference 
file for SNR measurement
+  char infile[1000];   //! H.264 inputfile
+  char outfile[1000];  //! Decoded YUV 4:2:0 output
+  char reffile[1000];  //! Optional YUV 4:2:0 reference 
file for SNR measurement
   int FileFormat; //! File format of the Input file, 
PAR_OF_ANNEXB or PAR_OF_RTP
   int ref_offset;
   int poc_scale;
@@ -647,7 +647,7 @@
   unsigned long R_decoder;//! Decoder Rate in HRD Model
   unsigned long B_decoder;//! Decoder Buffer size in HRD model
   unsigned long F_decoder;//! Decoder Initial buffer fullness 
in HRD model
-  char LeakyBucketParamFile[100]; //! LeakyBucketParamFile
+  char LeakyBucketParamFile[1000]; //! LeakyBucketParamFile
 #endif
 
   // picture error concealment



___
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/Makefile

2007-02-08 Thread Evan Cheng


Changes in directory llvm-test/MultiSource/Applications/JM/ldecod:

Makefile updated: 1.6 - 1.7
---
Log message:

Don't compile with -g

---
Diffs of the changes:  (+1 -1)

 Makefile |2 +-
 1 files changed, 1 insertion(+), 1 deletion(-)


Index: llvm-test/MultiSource/Applications/JM/ldecod/Makefile
diff -u llvm-test/MultiSource/Applications/JM/ldecod/Makefile:1.6 
llvm-test/MultiSource/Applications/JM/ldecod/Makefile:1.7
--- llvm-test/MultiSource/Applications/JM/ldecod/Makefile:1.6   Sun Feb  4 
08:38:31 2007
+++ llvm-test/MultiSource/Applications/JM/ldecod/Makefile   Thu Feb  8 
16:42:38 2007
@@ -1,6 +1,6 @@
 LEVEL = ../../../..
 PROG = ldecod
-CPPFLAGS = -D __USE_LARGEFILE64 -D _FILE_OFFSET_BITS=64 -g
+CPPFLAGS = -D __USE_LARGEFILE64 -D _FILE_OFFSET_BITS=64
 LDFLAGS  = -lm $(TOOLLINKOPTS)
 
 RUN_OPTIONS = -i $(PROJ_SRC_DIR)/data/test.264 -o 
$(PROJ_SRC_DIR)/data/test_dec.yuv -r $(PROJ_SRC_DIR)/data/test_rec.yuv



___
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/README.txt

2007-02-08 Thread Evan Cheng


Changes in directory llvm/lib/Target/X86:

README.txt updated: 1.153 - 1.154
---
Log message:

This is done.

---
Diffs of the changes:  (+0 -14)

 README.txt |   14 --
 1 files changed, 14 deletions(-)


Index: llvm/lib/Target/X86/README.txt
diff -u llvm/lib/Target/X86/README.txt:1.153 
llvm/lib/Target/X86/README.txt:1.154
--- llvm/lib/Target/X86/README.txt:1.153Sun Jan 21 01:03:37 2007
+++ llvm/lib/Target/X86/README.txt  Thu Feb  8 17:53:38 2007
@@ -665,20 +665,6 @@
 
 //===-===//
 
-We generate really bad code in some cases due to lowering SETCC/SELECT at 
-legalize time, which prevents the post-legalize dag combine pass from
-understanding the code.  As a silly example, this prevents us from folding 
-stuff like this:
-
-bool %test(ulong %x) {
-  %tmp = setlt ulong %x, 4294967296
-  ret bool %tmp
-}
-
-into x.h == 0
-
-//===-===//
-
 We currently compile sign_extend_inreg into two shifts:
 
 long foo(long X) {



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


Re: [llvm-commits] [patch] Intruction Constraint DestReg!=SrcReg (for review)

2007-02-08 Thread Evan Cheng
 Index: lib/CodeGen/LiveIntervalAnalysis.cpp
 ===
 RCS file: /var/cvs/llvm/llvm/lib/CodeGen/LiveIntervalAnalysis.cpp,v
 retrieving revision 1.204
 diff -u -r1.204 LiveIntervalAnalysis.cpp
 --- lib/CodeGen/LiveIntervalAnalysis.cpp  19 Dec 2006 22:41:21 -  
  
 1.204
 +++ lib/CodeGen/LiveIntervalAnalysis.cpp  5 Feb 2007 21:05:57 -
 -354,15 +354,26 @@
  //
  // Keep track of whether we replace a use and/or def  
 so that we can
  // create the spill interval with the appropriate range.

Please update comment.

 -mop.setReg(NewVReg);
 -
 -bool HasUse = mop.isUse();
 -bool HasDef = mop.isDef();
 -for (unsigned j = i+1, e = MI-getNumOperands(); j !=  
 e; ++j) {
 +
 +bool HasUse = false;
 +bool HasDef = false;
 +int ReadLatency = InstrSlots::USE; //default read latency
 +for (unsigned j = i, e = MI-getNumOperands(); j != e;  
 ++j) {
if (MI-getOperand(j).isReg() 
MI-getOperand(j).getReg() == li.reg) {
  MI-getOperand(j).setReg(NewVReg);

Is this right? Aren't you in danger of modifying MO?


 -HasUse |= MI-getOperand(j).isUse();
 +
 +if (MI-getOperand(j).isUse()) {
 +  HasUse = true;
 +  //get the greatest read latency
 +  if (!MI-getOperand(j).isImplicit()){
 +int read_latency = MI-getInstrDescriptor()-
 +  getOperandConstraint(j,TOI::READ_LATENCY);
 +if (read_latency != -1  read_latency   
 ReadLatency)
 +  ReadLatency = read_latency;
 +  }
 +}
 +
  HasDef |= MI-getOperand(j).isDef();
}
  }

 @@ -376,16 +387,16 @@
  // the spill weight is now infinity as it
  // cannot be spilled again
  nI.weight = HUGE_VALF;
 -
 +unsigned ValNum = nI.getNextValue(~0U, 0);
  if (HasUse) {
 -  LiveRange LR(getLoadIndex(index), getUseIndex(index),
 -   nI.getNextValue(~0U, 0));
 +  LiveRange LR(getLoadIndex(index),
 +   getBaseIndex(index) + ReadLatency + 1,  
 ValNum);
DOUT   +  LR;
nI.addRange(LR);
  }
  if (HasDef) {
LiveRange LR(getDefIndex(index), getStoreIndex(index),
 -   nI.getNextValue(~0U, 0));
 +   ValNum);
DOUT   +  LR;
nI.addRange(LR);
  }

Is this right? I think this is adding live intervals for the spill /  
restore instruction?


 @@ -441,6 +441,24 @@
DOUT  \t\tregister: ; DEBUG(printRegName(interval.reg));
LiveVariables::VarInfo vi = lv_-getVarInfo(interval.reg);
 +  // For each kill, get the greatest read latency of the virtual  
 register.
 +  std::vectorchar ReadLatency(vi.Kills.size());
 +  for (unsigned i = 0, e = vi.Kills.size(); i != e; ++i){
 +const TargetInstrDescriptor *instrDescriptor =
 +  vi.Kills[i]-getInstrDescriptor();
 +ReadLatency[i] = InstrSlots::USE; //default read latency
 +//find the operands that use the virtual register
 +for (unsigned j = 0, f = vi.Kills[i]-getNumOperands(); j !=  
 f; ++j){
 +  MachineOperand op = vi.Kills[i]-getOperand(j);
 +  if (op.isRegister()  op.isUse()  (op.getReg() ==  
 interval.reg)) {
 +int read_latency =
 +  instrDescriptor-getOperandConstraint(j,  
 TOI::READ_LATENCY);
 +if (read_latency != -1  read_latency  ReadLatency[i])
 +  ReadLatency[i] = (char) read_latency;
 +  }
 +}
 +  }

Question: is it necessary to calculate ReadLatency up front rather  
than calculated it on demand (i.e. the rest of the changes in this  
file which use ReadLatency)?

Some nit picks.

1. Please pick identifiers that are more consistent with the rest of  
the LLVM code. e.g. You'll find TID is used for TargetInstrDescriptor  
all over the place.
2. Please use getUseIndex() instead of InstrSlots::Use.
3. Please unsigned instead of char for ReadLatency to match  
getUseIndex(), etc.

// Virtual registers may be defined multiple times (due to phi
// elimination and 2-addr elimination).  Much of what we do only  
 has to be
// done once for the vreg.  We use an empty interval to detect  
 the first
 @@ -467,7 +485,7 @@
// FIXME: what about dead vars?
unsigned killIdx;
if (vi.Kills[0] != mi)
 -killIdx = getUseIndex(getInstructionIndex(vi.Kills[0]))+1;
 +killIdx = getInstructionIndex(vi.Kills[0]) + ReadLatency 
 [0] + 1;
else
  killIdx = defIndex+1;
 @@ -514,7 +532,7 @@
  for (unsigned i = 0, e = vi.Kills.size(); i != e; ++i) {
MachineInstr *Kill 

[llvm-commits] CVS: llvm/tools/llvm-ld/llvm-ld.cpp

2007-02-08 Thread Reid Spencer


Changes in directory llvm/tools/llvm-ld:

llvm-ld.cpp updated: 1.47 - 1.48
---
Log message:

Clean up error handling.


---
Diffs of the changes:  (+55 -72)

 llvm-ld.cpp |  127 +---
 1 files changed, 55 insertions(+), 72 deletions(-)


Index: llvm/tools/llvm-ld/llvm-ld.cpp
diff -u llvm/tools/llvm-ld/llvm-ld.cpp:1.47 llvm/tools/llvm-ld/llvm-ld.cpp:1.48
--- llvm/tools/llvm-ld/llvm-ld.cpp:1.47 Thu Feb  8 13:03:11 2007
+++ llvm/tools/llvm-ld/llvm-ld.cpp  Thu Feb  8 21:08:06 2007
@@ -59,6 +59,7 @@
   cl::desc(Specify libraries to link to),
   cl::value_desc(library prefix));
 
+// Options to control the linking, optimization, and code gen processes
 static cl::optbool LinkAsLibrary(link-as-library,
   cl::desc(Link the .bc files together as a library, not an executable));
 
@@ -84,7 +85,8 @@
 static cl::liststd::string XLinker(Xlinker, cl::value_desc(option),
   cl::desc(Pass options to the system linker));
 
-// Compatibility options that are ignored but supported by LD
+// Compatibility options that llvm-ld ignores but are supported for 
+// compatibility with LD
 static cl::optstd::string CO3(soname, cl::Hidden,
   cl::desc(Compatibility option: ignored));
 
@@ -107,15 +109,15 @@
 /// everywhere.
 static std::string progname;
 
-/// PrintAndReturn - Prints a message to standard error and returns true.
+/// PrintAndExit - Prints a message to standard error and exits with error code
 ///
 /// Inputs:
-///  progname - The name of the program (i.e. argv[0]).
 ///  Message  - The message to print to standard error.
 ///
-static int PrintAndReturn(const std::string Message) {
+static void PrintAndExit(const std::string Message, int errcode = 1) {
   cerr  progname  :   Message  \n;
-  return 1;
+  llvm_shutdown();
+  exit(errcode);
 }
 
 /// CopyEnv - This function takes an array of environment variables and makes a
@@ -203,10 +205,8 @@
   std::ios::openmode io_mode = std::ios::out | std::ios::trunc |
std::ios::binary;
   std::ofstream Out(FileName.c_str(), io_mode);
-  if (!Out.good()) {
-PrintAndReturn(error opening ' + FileName + ' for writing!);
-return;
-  }
+  if (!Out.good())
+PrintAndExit(error opening ' + FileName + ' for writing!);
 
   // Ensure that the bytecode file gets removed from the disk if we get a
   // terminating signal.
@@ -356,15 +356,11 @@
   // build tree to the destination file.
   std::string ErrMsg;  
   sys::Path llvmstub = FindExecutable(llvm-stub.exe, argv[0]);
-  if (llvmstub.isEmpty()) {
-cerr  Could not find llvm-stub.exe executable!\n;
-exit(1);
-  }
+  if (llvmstub.isEmpty())
+PrintAndExit(Could not find llvm-stub.exe executable!);
 
-  if (0 != sys::CopyFile(sys::Path(OutputFilename), llvmstub, ErrMsg)) {
-cerr  argv[0]  :   ErrMsg  \n;
-exit(1);
-  }
+  if (0 != sys::CopyFile(sys::Path(OutputFilename), llvmstub, ErrMsg))
+PrintAndExit(ErrMsg);
 
   return;
 #endif
@@ -372,7 +368,7 @@
   // Output the script to start the program...
   std::ofstream Out2(OutputFilename.c_str());
   if (!Out2.good())
-exit(PrintAndReturn(error opening ' + OutputFilename + ' for 
writing!));
+PrintAndExit(error opening ' + OutputFilename + ' for writing!);
 
   Out2  #!/bin/sh\n;
   // Allow user to setenv LLVMINTERP if lli is not in their PATH.
@@ -481,7 +477,7 @@
 
   // Link all the items together
   if (TheLinker.LinkInItems(Items,LinkItems) )
-return 1;
+return 1; // Error already printed
 }
 
 std::auto_ptrModule Composite(TheLinker.releaseModule());
@@ -506,15 +502,15 @@
   if (!prog.canExecute()) {
 prog = sys::Program::FindProgramByName(*I);
 if (prog.isEmpty())
-  return PrintAndReturn(std::string(Optimization program ') + *I 
+
+  PrintAndExit(std::string(Optimization program ') + *I +
 ' is not found or not executable.);
   }
   // Get the program arguments
   sys::Path tmp_output(opt_result);
   std::string ErrMsg;
-  if (tmp_output.createTemporaryFileOnDisk(true, ErrMsg)) {
-return PrintAndReturn(ErrMsg);
-  }
+  if (tmp_output.createTemporaryFileOnDisk(true, ErrMsg))
+PrintAndExit(ErrMsg);
+
   const char* args[4];
   args[0] = I-c_str();
   args[1] = RealBytecodeOutput.c_str();
@@ -524,16 +520,12 @@
 if (tmp_output.isBytecodeFile()) {
   sys::Path target(RealBytecodeOutput);
   target.eraseFromDisk();
-  if (tmp_output.renamePathOnDisk(target, ErrMsg)) {
-cerr  argv[0]  :   ErrMsg  \n;
-return 2;
-  }
+  if (tmp_output.renamePathOnDisk(target, ErrMsg))
+PrintAndExit(ErrMsg, 2);
 } else
-  return PrintAndReturn(
-Post-link optimization output is not bytecode);
+  

[llvm-commits] CVS: llvm/tools/gccld/gccld.sh

2007-02-08 Thread Reid Spencer


Changes in directory llvm/tools/gccld:

gccld.sh added (r1.1)
---
Log message:

New shell script to replace gccld, eventually.


---
Diffs of the changes:  (+23 -0)

 gccld.sh |   23 +++
 1 files changed, 23 insertions(+)


Index: llvm/tools/gccld/gccld.sh
diff -c /dev/null llvm/tools/gccld/gccld.sh:1.1
*** /dev/null   Thu Feb  8 21:09:36 2007
--- llvm/tools/gccld/gccld.sh   Thu Feb  8 21:09:26 2007
***
*** 0 
--- 1,23 
+ #!/bin/sh
+ ##===- tools/gccld/gccld.sh *- bash 
-*-===##
+ # 
+ # 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.
+ # 
+ 
##===--===##
+ #
+ # Synopsis: This shell script is a replacement for the old gccld tool that
+ #   existed in LLVM versions before 2.0. The functionality of gccld 
has
+ #   now been moved to llvm-ld. This shell script provides backwards 
+ #   compatibility so build environments invoking gccld can still get 
+ #   link (under the covers) with llvm-ld.
+ #
+ # Syntax:   gccld OPTIONS... (see llvm-ld for details)
+ # 
+ 
##===--===##
+ #
+ echo gccas: This tool is deprecated, please use opt
+ [EMAIL PROTECTED]@
+ $TOOLDIR/llvm-ld $@



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/tools/gccld/gccld.sh

2007-02-08 Thread Reid Spencer


Changes in directory llvm/tools/gccld:

gccld.sh updated: 1.1 - 1.2
---
Log message:

Get the right warning message.


---
Diffs of the changes:  (+1 -1)

 gccld.sh |2 +-
 1 files changed, 1 insertion(+), 1 deletion(-)


Index: llvm/tools/gccld/gccld.sh
diff -u llvm/tools/gccld/gccld.sh:1.1 llvm/tools/gccld/gccld.sh:1.2
--- llvm/tools/gccld/gccld.sh:1.1   Thu Feb  8 21:09:26 2007
+++ llvm/tools/gccld/gccld.sh   Thu Feb  8 21:12:21 2007
@@ -18,6 +18,6 @@
 # 
 
##===--===##
 #
-echo gccas: This tool is deprecated, please use opt
+echo gccld: This tool is deprecated, please use llvm-ld
 [EMAIL PROTECTED]@
 $TOOLDIR/llvm-ld $@



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/tools/gccld/Makefile

2007-02-08 Thread Reid Spencer


Changes in directory llvm/tools/gccld:

Makefile updated: 1.17 - 1.18
---
Log message:

Put in a disabled template for when gccld is replaced by the shell script.


---
Diffs of the changes:  (+19 -0)

 Makefile |   19 +++
 1 files changed, 19 insertions(+)


Index: llvm/tools/gccld/Makefile
diff -u llvm/tools/gccld/Makefile:1.17 llvm/tools/gccld/Makefile:1.18
--- llvm/tools/gccld/Makefile:1.17  Mon Sep  4 00:59:09 2006
+++ llvm/tools/gccld/Makefile   Thu Feb  8 21:15:18 2007
@@ -14,3 +14,22 @@
 REQUIRES_EH := 1
 
 include $(LEVEL)/Makefile.common
+
+ifdef DONT_USE_THIS
+install-local:: $(PROJ_bindir)/gccld
+   
+$(PROJ_bindir)/gccld : gccld.sh Makefile
+   $(Echo)Installing gccld shell script.
+   $(Verb)sed [EMAIL PROTECTED]@#$(PROJ_bindir)# $  $@
+   $(Verb)chmod 0755 $@
+
+all-local:: $(ToolDir)/gccld
+   
+$(ToolDir)/gccld : gccld.sh Makefile
+   $(Echo)Making $(ToolDir)/gccld shell script.
+   $(Verb)sed [EMAIL PROTECTED]@#$(ToolDir)# $  $@
+   $(Verb)chmod 0755 $@
+
+clean-local::
+   $(Verb)$(RM) -f $(ToolDir)/gccld
+endif



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] MultiSource/Benchmarks/MiBench/consumer-typeset/lout.li

2007-02-08 Thread Reid Spencer
Anyone know about this file?

Every time I run this test, this file gets modified. However, its
checked into CVS. I'm thinking it is just an output file and it
shouldn't be in CVS. But, before I cvs rm it, I thought I'd ask.

Reid.

___
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

2007-02-08 Thread Reid Spencer


Changes in directory llvm-test/External/SPEC:

Makefile.spec updated: 1.61 - 1.62
---
Log message:

Let's try using llvm-ld for the nightly test. If all goes well, gccld will
go away tomorrow. This patch replaces all uses of gccld with llvm-ld. 


---
Diffs of the changes:  (+7 -8)

 Makefile.spec |   15 +++
 1 files changed, 7 insertions(+), 8 deletions(-)


Index: llvm-test/External/SPEC/Makefile.spec
diff -u llvm-test/External/SPEC/Makefile.spec:1.61 
llvm-test/External/SPEC/Makefile.spec:1.62
--- llvm-test/External/SPEC/Makefile.spec:1.61  Sun Feb  4 13:39:34 2007
+++ llvm-test/External/SPEC/Makefile.spec   Thu Feb  8 21:38:16 2007
@@ -118,20 +118,20 @@
 BUGPOINT_OPTIONS += --tool-args $(LLCFLAGS)
 BUGPOINT_ARGS += --args -- $(RUN_OPTIONS)
 
-# Rules to bugpoint the GCCAS, GCCLD, LLC, or LLI commands...
-$(PROGRAMS_TO_TEST:%=Output/%.bugpoint-gccas): \
-Output/%.bugpoint-gccas: Output/%.noopt-llvm.bc $(LBUGPOINT) \
+# Rules to bugpoint the opt, llvm-ld, llc, or lli commands...
+$(PROGRAMS_TO_TEST:%=Output/%.bugpoint-opt): \
+Output/%.bugpoint-opt: Output/%.noopt-llvm.bc $(LBUGPOINT) \
  Output/opt-pass-args Output/%.out-nat
$(SPEC_SANDBOX) bugpoint-$(RUN_TYPE) $@ $(REF_IN_DIR) \
$(LBUGPOINT) ../$*.noopt-llvm.bc `cat Output/opt-pass-args` 
$(OPTPASSES) \
$(BUGPOINT_OPTIONS) $(BUGPOINT_ARGS)
@echo === Leaving Output/bugpoint-$(RUN_TYPE)
 
-$(PROGRAMS_TO_TEST:%=Output/%.bugpoint-gccld): \
-Output/%.bugpoint-gccld: Output/%.nogccldopt-llvm.bc $(LBUGPOINT) \
- Output/gccld-pass-args Output/%.out-nat
+$(PROGRAMS_TO_TEST:%=Output/%.bugpoint-llvm-ld): \
+Output/%.bugpoint-llvm-ld: Output/%.nollvm-ldopt-llvm.bc $(LBUGPOINT) \
+ Output/llvm-ld-pass-args Output/%.out-nat
$(SPEC_SANDBOX) bugpoint-$(RUN_TYPE) $@ $(REF_IN_DIR) \
-   $(LBUGPOINT) ../$*.nogccldopt-llvm.bc `cat Output/gccld-pass-args` 
$(OPTPASSES) \
+   $(LBUGPOINT) ../$*.nollvm-ldopt-llvm.bc `cat 
Output/llvm-ld-pass-args` $(OPTPASSES) \
$(BUGPOINT_OPTIONS) $(BUGPOINT_ARGS)
@echo === Leaving Output/bugpoint-$(RUN_TYPE)
 
@@ -162,7 +162,6 @@
@echo === Leaving Output/bugpoint-$(RUN_TYPE)
 
 
-
 LIBPROFILESO = $(LLVM_OBJ_ROOT)/Debug/lib/libprofile_rt.so
 
 $(PROGRAMS_TO_TEST:%=Output/%.prof): \



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm-test/SingleSource/Makefile.singlesrc

2007-02-08 Thread Reid Spencer


Changes in directory llvm-test/SingleSource:

Makefile.singlesrc updated: 1.33 - 1.34
---
Log message:

Let's try using llvm-ld for the nightly test. If all goes well, gccld will
go away tomorrow. This patch replaces all uses of gccld with llvm-ld. 


---
Diffs of the changes:  (+1 -1)

 Makefile.singlesrc |2 +-
 1 files changed, 1 insertion(+), 1 deletion(-)


Index: llvm-test/SingleSource/Makefile.singlesrc
diff -u llvm-test/SingleSource/Makefile.singlesrc:1.33 
llvm-test/SingleSource/Makefile.singlesrc:1.34
--- llvm-test/SingleSource/Makefile.singlesrc:1.33  Fri Feb  2 22:30:17 2007
+++ llvm-test/SingleSource/Makefile.singlesrc   Thu Feb  8 21:38:16 2007
@@ -40,6 +40,6 @@
-$(CXX) $(CXXFLAGS) -O2 $(TARGET_FLAGS) $ -lm -o $@ $(LDFLAGS)
 
 
-bugpoint-gccas bugpoint-gccld bugpoint-jit bugpoint-llc bugpoint-llc-beta:
+bugpoint-gccas bugpoint-llvm-ld bugpoint-jit bugpoint-llc bugpoint-llc-beta:
@echo The $@ target doesn't work in SingleSource.  Try:
@echo   'make Output/[programname].$@' instead.



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm-test/SingleSource/Makefile.singlesrc

2007-02-08 Thread Reid Spencer


Changes in directory llvm-test/SingleSource:

Makefile.singlesrc updated: 1.34 - 1.35
---
Log message:

Remove last vestiges of GCCAS/gccas, GCCLD/gccld


---
Diffs of the changes:  (+1 -1)

 Makefile.singlesrc |2 +-
 1 files changed, 1 insertion(+), 1 deletion(-)


Index: llvm-test/SingleSource/Makefile.singlesrc
diff -u llvm-test/SingleSource/Makefile.singlesrc:1.34 
llvm-test/SingleSource/Makefile.singlesrc:1.35
--- llvm-test/SingleSource/Makefile.singlesrc:1.34  Thu Feb  8 21:38:16 2007
+++ llvm-test/SingleSource/Makefile.singlesrc   Thu Feb  8 21:43:45 2007
@@ -40,6 +40,6 @@
-$(CXX) $(CXXFLAGS) -O2 $(TARGET_FLAGS) $ -lm -o $@ $(LDFLAGS)
 
 
-bugpoint-gccas bugpoint-llvm-ld bugpoint-jit bugpoint-llc bugpoint-llc-beta:
+bugpoint-gccas bugpoint-opt bugpoint-llvm-ld bugpoint-gccld bugpoint-jit 
bugpoint-llc bugpoint-llc-beta:
@echo The $@ target doesn't work in SingleSource.  Try:
@echo   'make Output/[programname].$@' instead.



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/docs/CommandGuide/llvm-ld.pod

2007-02-08 Thread Reid Spencer


Changes in directory llvm/docs/CommandGuide:

llvm-ld.pod updated: 1.5 - 1.6
---
Log message:

Fix some formatting mistakes.


---
Diffs of the changes:  (+6 -7)

 llvm-ld.pod |   13 ++---
 1 files changed, 6 insertions(+), 7 deletions(-)


Index: llvm/docs/CommandGuide/llvm-ld.pod
diff -u llvm/docs/CommandGuide/llvm-ld.pod:1.5 
llvm/docs/CommandGuide/llvm-ld.pod:1.6
--- llvm/docs/CommandGuide/llvm-ld.pod:1.5  Thu Feb  8 22:12:51 2007
+++ llvm/docs/CommandGuide/llvm-ld.pod  Thu Feb  8 22:15:08 2007
@@ -71,6 +71,8 @@
 
 =head2 General Options
 
+=over 
+
 =item B-help
 
 Print a summary of command line options.
@@ -89,6 +91,8 @@
 Record the amount of time needed for each pass and print it to standard
 error.
 
+=back 
+
 =head2 Input/Output Options
 
 =over
@@ -242,16 +246,11 @@
 temporary file into which the program should place its optimized output. For
 example, the no-op optimization would be a simple shell script:
 
-=over
-
-#!/bin/bash
-cp $1 $2
-
-=back
+#!/bin/bash
+cp $1 $2
 
 =back
 
-
 =head1 EXIT STATUS
 
 If Bllvm-ld succeeds, it will exit with 0 return code.  If an error occurs,



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/lib/Target/PowerPC/README.txt

2007-02-08 Thread Nate Begeman


Changes in directory llvm/lib/Target/PowerPC:

README.txt updated: 1.109 - 1.110
---
Log message:

Remove fixed item


---
Diffs of the changes:  (+0 -26)

 README.txt |   26 --
 1 files changed, 26 deletions(-)


Index: llvm/lib/Target/PowerPC/README.txt
diff -u llvm/lib/Target/PowerPC/README.txt:1.109 
llvm/lib/Target/PowerPC/README.txt:1.110
--- llvm/lib/Target/PowerPC/README.txt:1.109Wed Jan 31 13:49:20 2007
+++ llvm/lib/Target/PowerPC/README.txt  Thu Feb  8 22:19:54 2007
@@ -267,32 +267,6 @@
 
 ===-===
 
-The legalizer should lower this:
-
-bool %test(ulong %x) {
-  %tmp = setlt ulong %x, 4294967296
-  ret bool %tmp
-}
-
-into if x.high == 0, not:
-
-_test:
-cntlzw r2, r3
-xori r3, r3, 1
-cmplwi cr0, r3, 0
-srwi r2, r2, 5
-li r3, 0
-beq cr0, LBB1_2 ;entry
-LBB1_1: ;entry
-mr r3, r2
-LBB1_2: ;entry
-blr 
-
-noticed in 2005-05-11-Popcount-ffs-fls.c.
-
-
-===-===
-
 We should custom expand setcc instead of pretending that we have it.  That
 would allow us to expose the access of the crbit after the mfcr, allowing
 that access to be trivially folded into other ops.  A simple example:



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/include/llvm/ADT/APInt.h

2007-02-08 Thread Zhou Sheng


Changes in directory llvm/include/llvm/ADT:

APInt.h updated: 1.5 - 1.6
---
Log message:

Eliminates friend function declaration inside APInt, instead, adds public
methods as those global function's internal implementation.


---
Diffs of the changes:  (+103 -43)

 APInt.h |  146 +---
 1 files changed, 103 insertions(+), 43 deletions(-)


Index: llvm/include/llvm/ADT/APInt.h
diff -u llvm/include/llvm/ADT/APInt.h:1.5 llvm/include/llvm/ADT/APInt.h:1.6
--- llvm/include/llvm/ADT/APInt.h:1.5   Thu Feb  8 08:30:42 2007
+++ llvm/include/llvm/ADT/APInt.h   Fri Feb  9 01:47:22 2007
@@ -24,15 +24,7 @@
 /// Forward declaration.
 class APInt;
 namespace APIntOps {
-  bool isIntN(unsigned N, const APInt APIVal);
-  APInt ByteSwap(const APInt APIVal);
-  APInt LogBase2(const APInt APIVal);
-  APInt ashr(const APInt LHS, unsigned shiftAmt);
-  APInt lshr(const APInt LHS, unsigned shiftAmt);
-  APInt shl(const APInt LHS, unsigned shiftAmt);
-  APInt sdiv(const APInt LHS, const APInt RHS);
   APInt udiv(const APInt LHS, const APInt RHS);
-  APInt srem(const APInt LHS, const APInt RHS);
   APInt urem(const APInt LHS, const APInt RHS);
 }
 
@@ -53,19 +45,6 @@
 /// Note: In this class, all bit/byte/word positions are zero-based.
 ///
 class APInt {
-  /// Friend Functions of APInt declared here. For detailed comments,
-  /// see bottom of this file.
-  friend bool APIntOps::isIntN(unsigned N, const APInt APIVal);
-  friend APInt APIntOps::ByteSwap(const APInt APIVal);
-  friend APInt APIntOps::LogBase2(const APInt APIVal);
-  friend APInt APIntOps::ashr(const APInt LHS, unsigned shiftAmt);
-  friend APInt APIntOps::lshr(const APInt LHS, unsigned shiftAmt);
-  friend APInt APIntOps::shl(const APInt LHS, unsigned shiftAmt);
-  friend APInt APIntOps::sdiv(const APInt LHS, const APInt RHS);
-  friend APInt APIntOps::udiv(const APInt LHS, const APInt RHS);
-  friend APInt APIntOps::srem(const APInt LHS, const APInt RHS);
-  friend APInt APIntOps::urem(const APInt LHS, const APInt RHS);
-
   unsigned BitsNum;  /// The number of bits.
 
   /// This union is used to store the integer value. When the
@@ -387,19 +366,68 @@
   inline unsigned getNumBits() const
   { return BitsNum; }
 
+  /// @brief Check if this APInt has a N-bits integer value.
+  inline bool isIntN(unsigned N) const {
+if (isSingleWord()) {
+  return VAL == VAL  (~uint64_t(0ULL)  (64 - N));
+} else {
+  APInt Tmp(N, pVal);
+  return Tmp == (*this);
+}
+  }
+
+  /// @returns a byte-swapped representation of this APInt Value.
+  APInt ByteSwap() const;
+
+  /// @returns the floor log base 2 of this APInt.
+  inline unsigned LogBase2() const {
+return getNumWords() * APINT_BITS_PER_WORD - 
+   CountLeadingZeros();
+  }
+
+  /// Arithmetic right-shift this APInt by shiftAmt.
+  /// @brief Arithmetic right-shift function.
+  APInt ashr(unsigned shiftAmt) const;
+
+  /// Logical right-shift this APInt by shiftAmt.
+  /// @brief Logical right-shift function.
+  APInt lshr(unsigned shiftAmt) const;
+
+  /// Left-shift this APInt by shiftAmt.
+  /// @brief Left-shift function.
+  APInt shl(unsigned shiftAmt) const;
+
+  /// Signed divide this APInt by APInt RHS.
+  /// @brief Signed division function for APInt.
+  inline APInt sdiv(const APInt RHS) const {
+bool isSignedLHS = (*this)[BitsNum - 1], isSignedRHS = RHS[RHS.BitsNum - 
1];
+APInt API = APIntOps::udiv(isSignedLHS ? -(*this) : (*this), isSignedRHS ? 
-RHS : RHS);
+return isSignedLHS != isSignedRHS ? -API : API;;
+  }
+
+  /// Unsigned divide this APInt by APInt RHS.
+  /// @brief Unsigned division function for APInt.
+  APInt udiv(const APInt RHS) const;
+
+  /// Signed remainder operation on APInt.
+  /// @brief Function for signed remainder operation.
+  inline APInt srem(const APInt RHS) const {
+bool isSignedLHS = (*this)[BitsNum - 1], isSignedRHS = RHS[RHS.BitsNum - 
1];
+APInt API = APIntOps::urem(isSignedLHS ? -(*this) : (*this), isSignedRHS ? 
-RHS : RHS);
+return isSignedLHS ? -API : API;
+  }
+
+  /// Unsigned remainder operation on APInt.
+  /// @brief Function for unsigned remainder operation.
+  APInt urem(const APInt RHS) const;
+
 };
 
 namespace APIntOps {
 
 /// @brief Check if the specified APInt has a N-bits integer value.
 inline bool isIntN(unsigned N, const APInt APIVal) {
-  if (APIVal.isSingleWord()) {
-APInt Tmp(N, APIVal.VAL);
-return Tmp == APIVal;
-  } else {
-APInt Tmp(N, APIVal.pVal);
-return Tmp == APIVal;
-  }
+  return APIVal.isIntN(N);
 }
 
 /// @returns true if the argument APInt value is a sequence of ones
@@ -415,12 +443,13 @@
 }
 
 /// @returns a byte-swapped representation of the specified APInt Value.
-APInt ByteSwap(const APInt APIVal);
+inline APInt ByteSwap(const APInt APIVal) {
+  return APIVal.ByteSwap();
+}
 
 /// @returns the floor log base 2 of the specified APInt value.
-inline APInt LogBase2(const APInt APIVal) {
-  return 

[llvm-commits] CVS: llvm/lib/Support/APInt.cpp

2007-02-08 Thread Zhou Sheng


Changes in directory llvm/lib/Support:

APInt.cpp updated: 1.6 - 1.7
---
Log message:

Eliminates friend function declaration inside APInt, instead, adds public
methods as those global function's internal implementation.


---
Diffs of the changes:  (+23 -23)

 APInt.cpp |   46 +++---
 1 files changed, 23 insertions(+), 23 deletions(-)


Index: llvm/lib/Support/APInt.cpp
diff -u llvm/lib/Support/APInt.cpp:1.6 llvm/lib/Support/APInt.cpp:1.7
--- llvm/lib/Support/APInt.cpp:1.6  Thu Feb  8 10:45:48 2007
+++ llvm/lib/Support/APInt.cpp  Fri Feb  9 01:48:24 2007
@@ -674,8 +674,8 @@
 
 /// @brief Array-indexing support.
 bool APInt::operator[](unsigned bitPosition) const {
-  return maskBit(bitPosition)  (isSingleWord() ? 
- VAL : pVal[whichWord(bitPosition)]) != 0;
+  return (maskBit(bitPosition)  (isSingleWord() ? 
+  VAL : pVal[whichWord(bitPosition)])) != 0;
 }
 
 /// @brief Equality operator. Compare this APInt with the given APInt RHS 
@@ -932,14 +932,14 @@
 
 
 /// ByteSwap - This function returns a byte-swapped representation of the
-/// APInt argument, APIVal.
-APInt llvm::APIntOps::ByteSwap(const APInt APIVal) {
-  if (APIVal.BitsNum = 32)
-return APInt(APIVal.BitsNum, ByteSwap_32(unsigned(APIVal.VAL)));
-  else if (APIVal.BitsNum = 64)
-return APInt(APIVal.BitsNum, ByteSwap_64(APIVal.VAL));
+/// this APInt.
+APInt APInt::ByteSwap() const {
+  if (BitsNum = 32)
+return APInt(BitsNum, ByteSwap_32(unsigned(VAL)));
+  else if (BitsNum = 64)
+return APInt(BitsNum, ByteSwap_64(VAL));
   else
-return APIVal;
+return *this;
 }
 
 /// GreatestCommonDivisor - This function returns the greatest common
@@ -955,10 +955,10 @@
   return A;
 }
 
-/// Arithmetic right-shift the APInt by shiftAmt.
+/// Arithmetic right-shift this APInt by shiftAmt.
 /// @brief Arithmetic right-shift function.
-APInt llvm::APIntOps::ashr(const APInt LHS, unsigned shiftAmt) {
-  APInt API(LHS);
+APInt APInt::ashr(unsigned shiftAmt) const {
+  APInt API(*this);
   if (API.isSingleWord())
 API.VAL = (((int64_t(API.VAL)  (64 - API.BitsNum))  (64 - API.BitsNum))
 shiftAmt)  (~uint64_t(0UL)  (64 - API.BitsNum));
@@ -981,10 +981,10 @@
   return API;
 }
 
-/// Logical right-shift the APInt by shiftAmt.
+/// Logical right-shift this APInt by shiftAmt.
 /// @brief Logical right-shift function.
-APInt llvm::APIntOps::lshr(const APInt RHS, unsigned shiftAmt) {
-  APInt API(RHS);
+APInt APInt::lshr(unsigned shiftAmt) const {
+  APInt API(*this);
   if (API.isSingleWord())
 API.VAL = shiftAmt;
   else {
@@ -1000,10 +1000,10 @@
   return API;
 }
 
-/// Left-shift the APInt by shiftAmt.
+/// Left-shift this APInt by shiftAmt.
 /// @brief Left-shift function.
-APInt llvm::APIntOps::shl(const APInt RHS, unsigned shiftAmt) {
-  APInt API(RHS);
+APInt APInt::shl(unsigned shiftAmt) const {
+  APInt API(*this);
   if (shiftAmt = API.BitsNum) {
 if (API.isSingleWord()) 
   API.VAL = 0;
@@ -1019,10 +1019,10 @@
   return API;
 }
 
-/// Unsigned divide APInt LHS by APInt RHS.
+/// Unsigned divide this APInt by APInt RHS.
 /// @brief Unsigned division function for APInt.
-APInt llvm::APIntOps::udiv(const APInt LHS, const APInt RHS) {
-  APInt API(LHS);
+APInt APInt::udiv(const APInt RHS) const {
+  APInt API(*this);
   unsigned first = RHS.getNumWords() * APInt::APINT_BITS_PER_WORD - 
RHS.CountLeadingZeros();
   unsigned ylen = !first ? 0 : APInt::whichWord(first - 1) + 1;
@@ -1066,8 +1066,8 @@
 
 /// Unsigned remainder operation on APInt.
 /// @brief Function for unsigned remainder operation.
-APInt llvm::APIntOps::urem(const APInt LHS, const APInt RHS) {
-  APInt API(LHS);
+APInt APInt::urem(const APInt RHS) const {
+  APInt API(*this);
   unsigned first = RHS.getNumWords() * APInt::APINT_BITS_PER_WORD -
RHS.CountLeadingZeros();
   unsigned ylen = !first ? 0 : APInt::whichWord(first - 1) + 1;



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/lib/Bytecode/Writer/SlotCalculator.cpp SlotCalculator.h Writer.cpp

2007-02-08 Thread Chris Lattner


Changes in directory llvm/lib/Bytecode/Writer:

SlotCalculator.cpp updated: 1.82 - 1.83
SlotCalculator.h updated: 1.27 - 1.28
Writer.cpp updated: 1.156 - 1.157
---
Log message:

1. constants can never occur in the symbol table.
2. All function-level constants are now incorporated into the module-level
  constant pool, since the compaction table was removed.  Eliminate extra
  work to check for them.

This speeds up the bcwriter from 24.4s to 13.1s on 447.dealII and .73 - .56s
on kc++ in a release build.



---
Diffs of the changes:  (+0 -21)

 SlotCalculator.cpp |   18 --
 SlotCalculator.h   |1 -
 Writer.cpp |2 --
 3 files changed, 21 deletions(-)


Index: llvm/lib/Bytecode/Writer/SlotCalculator.cpp
diff -u llvm/lib/Bytecode/Writer/SlotCalculator.cpp:1.82 
llvm/lib/Bytecode/Writer/SlotCalculator.cpp:1.83
--- llvm/lib/Bytecode/Writer/SlotCalculator.cpp:1.82Mon Feb  5 14:47:20 2007
+++ llvm/lib/Bytecode/Writer/SlotCalculator.cpp Fri Feb  9 01:51:47 2007
@@ -171,7 +171,6 @@
   }
   getOrCreateSlot(I-getType());
 }
-processSymbolTableConstants(F-getValueSymbolTable());
   }
 
   // Insert constants that are named at module level into the slot pool so that
@@ -233,15 +232,6 @@
 getOrCreateSlot(VI-second);
 }
 
-void SlotCalculator::processSymbolTableConstants(const ValueSymbolTable *VST) {
-  // Now do the constant values in all planes
-  for (ValueSymbolTable::const_iterator VI = VST-begin(), VE = VST-end(); 
-   VI != VE; ++VI)
-if (isaConstant(VI-second)  !isaGlobalValue(VI-second))
-  getOrCreateSlot(VI-second);
-}
-
-
 void SlotCalculator::incorporateFunction(const Function *F) {
   assert((ModuleLevel.empty() ||
   ModuleTypeLevel == 0)  Module already incorporated!);
@@ -270,14 +260,6 @@
 for (constant_iterator CI = constant_begin(F), CE = constant_end(F);
  CI != CE; ++CI)
   getOrCreateSlot(*CI);
-
-// If there is a symbol table, it is possible that the user has names for
-// constants that are not being used.  In this case, we will have problems
-// if we don't emit the constants now, because otherwise we will get
-// symbol table references to constants not in the output.  Scan for these
-// constants now.
-//
-processSymbolTableConstants(F-getValueSymbolTable());
   }
 
   SC_DEBUG(Inserting Instructions:\n);


Index: llvm/lib/Bytecode/Writer/SlotCalculator.h
diff -u llvm/lib/Bytecode/Writer/SlotCalculator.h:1.27 
llvm/lib/Bytecode/Writer/SlotCalculator.h:1.28
--- llvm/lib/Bytecode/Writer/SlotCalculator.h:1.27  Mon Feb  5 14:47:20 2007
+++ llvm/lib/Bytecode/Writer/SlotCalculator.h   Fri Feb  9 01:51:47 2007
@@ -132,7 +132,6 @@
   //
   void processTypeSymbolTable(const TypeSymbolTable *ST);
   void processValueSymbolTable(const ValueSymbolTable *ST);
-  void processSymbolTableConstants(const ValueSymbolTable *ST);
 
   // insertPrimitives - helper for constructors to insert primitive types.
   void insertPrimitives();


Index: llvm/lib/Bytecode/Writer/Writer.cpp
diff -u llvm/lib/Bytecode/Writer/Writer.cpp:1.156 
llvm/lib/Bytecode/Writer/Writer.cpp:1.157
--- llvm/lib/Bytecode/Writer/Writer.cpp:1.156   Mon Feb  5 14:47:20 2007
+++ llvm/lib/Bytecode/Writer/Writer.cpp Fri Feb  9 01:51:47 2007
@@ -1112,8 +1112,6 @@
   // Get slot information about the function...
   Table.incorporateFunction(F);
 
-  outputConstants(true);
-
   // Output all of the instructions in the body of the function
   outputInstructions(F);
 



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/lib/Bytecode/Writer/Writer.cpp WriterInternals.h

2007-02-08 Thread Chris Lattner


Changes in directory llvm/lib/Bytecode/Writer:

Writer.cpp updated: 1.157 - 1.158
WriterInternals.h updated: 1.29 - 1.30
---
Log message:

remove dead code, the outputConstants function is now only called at module 
scope.


---
Diffs of the changes:  (+6 -14)

 Writer.cpp|   18 +-
 WriterInternals.h |2 +-
 2 files changed, 6 insertions(+), 14 deletions(-)


Index: llvm/lib/Bytecode/Writer/Writer.cpp
diff -u llvm/lib/Bytecode/Writer/Writer.cpp:1.157 
llvm/lib/Bytecode/Writer/Writer.cpp:1.158
--- llvm/lib/Bytecode/Writer/Writer.cpp:1.157   Fri Feb  9 01:51:47 2007
+++ llvm/lib/Bytecode/Writer/Writer.cpp Fri Feb  9 01:53:20 2007
@@ -826,7 +826,7 @@
   outputModuleInfoBlock(M);
 
   // Output module level constants, used for global variable initializers
-  outputConstants(false);
+  outputConstants();
 
   // Do the whole module now! Process each function at a time...
   for (Module::const_iterator I = M-begin(), E = M-end(); I != E; ++I)
@@ -904,30 +904,22 @@
   return Ty != Type::LabelTy  Ty != Type::VoidTy  !isaOpaqueType(Ty);
 }
 
-void BytecodeWriter::outputConstants(bool isFunction) {
+void BytecodeWriter::outputConstants() {
   BytecodeBlock CPool(BytecodeFormat::ConstantPoolBlockID, *this,
   true  /* Elide block if empty */);
 
   unsigned NumPlanes = Table.getNumPlanes();
 
-  if (isFunction)
-// Output the type plane before any constants!
-outputTypes(Table.getModuleTypeLevel());
-  else
-// Output module-level string constants before any other constants.
-outputConstantStrings();
+  // Output module-level string constants before any other constants.
+  outputConstantStrings();
 
   for (unsigned pno = 0; pno != NumPlanes; pno++) {
 const std::vectorconst Value* Plane = Table.getPlane(pno);
 if (!Plane.empty()) {  // Skip empty type planes...
   unsigned ValNo = 0;
-  if (isFunction)  // Don't re-emit module constants
-ValNo += Table.getModuleLevel(pno);
-
   if (hasNullValue(Plane[0]-getType())) {
 // Skip zero initializer
-if (ValNo == 0)
-  ValNo = 1;
+ValNo = 1;
   }
 
   // Write out constants in the plane


Index: llvm/lib/Bytecode/Writer/WriterInternals.h
diff -u llvm/lib/Bytecode/Writer/WriterInternals.h:1.29 
llvm/lib/Bytecode/Writer/WriterInternals.h:1.30
--- llvm/lib/Bytecode/Writer/WriterInternals.h:1.29 Mon Feb  5 14:47:20 2007
+++ llvm/lib/Bytecode/Writer/WriterInternals.h  Fri Feb  9 01:53:20 2007
@@ -35,7 +35,7 @@
   BytecodeWriter(std::vectorunsigned char o, const Module *M);
 
 private:
-  void outputConstants(bool isFunction);
+  void outputConstants();
   void outputConstantStrings();
   void outputFunction(const Function *F);
   void outputCompactionTable();



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm/lib/Bytecode/Writer/WriterInternals.h

2007-02-08 Thread Chris Lattner


Changes in directory llvm/lib/Bytecode/Writer:

WriterInternals.h updated: 1.30 - 1.31
---
Log message:

remove unneeded #includes


---
Diffs of the changes:  (+0 -3)

 WriterInternals.h |3 ---
 1 files changed, 3 deletions(-)


Index: llvm/lib/Bytecode/Writer/WriterInternals.h
diff -u llvm/lib/Bytecode/Writer/WriterInternals.h:1.30 
llvm/lib/Bytecode/Writer/WriterInternals.h:1.31
--- llvm/lib/Bytecode/Writer/WriterInternals.h:1.30 Fri Feb  9 01:53:20 2007
+++ llvm/lib/Bytecode/Writer/WriterInternals.h  Fri Feb  9 01:54:13 2007
@@ -19,9 +19,6 @@
 #include llvm/Bytecode/Writer.h
 #include llvm/Bytecode/Format.h
 #include llvm/Instruction.h
-#include llvm/Support/DataTypes.h
-#include string
-#include vector
 
 namespace llvm {
   class InlineAsm;



___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits