Re: [llvm-commits] Function aliases

2007-04-20 Thread Anton Korobeynikov
Chris,

 I don't think that really makes sense.  Aliases aren't really global  
 variables or functions themselves, they are a third kind of object.
Why the third? They definitely *are* either external functions or GVs.
For example, function aliases can be called, we can take address of
them, etc. The only difference is absence of body (because they are
external) and two symbols they're emitting.

 What do you think about making a new GlobalAlias class, which derives  
 from GlobalValue.
And after subdivide into FunctionAlias  GlobalVariableAlias? This will
lead to code duplication, since almost all methods of Functions should
go to FunctionAlias, the same for GVs. This will also require to
carefully check all other places, where GVs and Functions are used and
change corresponding logic. Considre for example CallInst. For it we
should at least resolve issue with getCalledFunction(), which nowadays
return Function* and we should probably add new method called
getCalledFunctionAlias() or resolved the two possible return type issues
otherwise. I don't think it's worth to do so invasive changes everywhere
for such small feature.

 This would clearly solve the memory use issue
At least this will lead to code duplication in many places. 

It seems to me, there are two suitable solutions: either subclass from
Function  GlobalVariable or add instance variable to them.

-- 
With best regards, Anton Korobeynikov.

Faculty of Mathematics  Mechanics, Saint Petersburg State University.


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


Re: [llvm-commits] Function aliases

2007-04-20 Thread Anton Korobeynikov
Chris,

 I don't think that really makes sense.  Aliases aren't really global  
 variables or functions themselves, they are a third kind of object.
Why the third? They definitely *are* either external functions or GVs.
For example, function aliases can be called, we can take address of
them, etc. The only difference is absence of body (because they are
external) and two symbols they're emitting.

 What do you think about making a new GlobalAlias class, which derives  
 from GlobalValue.
And after subdivide into FunctionAlias  GlobalVariableAlias? This will
lead to code duplication, since almost all methods of Functions should
go to FunctionAlias, the same for GVs. This will also require to
carefully check all other places, where GVs and Functions are used and
change corresponding logic. Considre for example CallInst. For it we
should at least resolve issue with getCalledFunction(), which nowadays
return Function* and we should probably add new method called
getCalledFunctionAlias() or resolved the two possible return type issues
otherwise. I don't think it's worth to do so invasive changes everywhere
for such small feature.

 This would clearly solve the memory use issue
At least this will lead to code duplication in many places. 

It seems to me, there are two suitable solutions: either subclass from
Function  GlobalVariable or add instance variable to them.

-- 
With best regards, Anton Korobeynikov.

Faculty of Mathematics  Mechanics, Saint Petersburg State University.


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


Re: [llvm-commits] Function aliases

2007-04-20 Thread Anton Korobeynikov
Hello, Reid.

 I don't understand why we need a subclass of Function for 
 this? Can't we just derive an Alias class from a smart 
 pointer to Value?
Because Aliases are either Function's or GlobalVariable's. They can be
called, used in the expressions, etc. The same way as all normal
external functions/global variables.

-- 
With best regards, Anton Korobeynikov.

Faculty of Mathematics  Mechanics, Saint Petersburg State University.


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


Re: [llvm-commits] Function aliases

2007-04-20 Thread Gordon Henriksen

On 2007-04-20, at 01:22, Chris Lattner wrote:


On Apr 19, 2007, at 3:24 PM, Anton Korobeynikov wrote:

Chris, maybe in this situation it will be better to spare 4 bytes  
at GlobalValue object to store pointer to alias string there?


I don't think that really makes sense.  Aliases aren't really  
global variables or functions themselves, they are a third kind of  
object.


What do you think about making a new GlobalAlias class, which  
derives from GlobalValue.  Module would contain a list of these,  
just like it has a list of functions and gvars?


This would clearly solve the memory use issue and I think it would  
be a cleaner design (obvious they can't have bodies, etc).


What do you think?


Chris,

Why not simply reinsert the aliased GV into the symbol table under  
the alias name? In this manner, alias objects would not need to  
derive from GlobalValue at all. Aliases could be stored in a list on  
the side as you describe, solving the memory usage problem. The  
majority of code could remain ignorant of them, resolving the code  
duplication Anton was worried about.


— Gordon

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


Re: [llvm-commits] Function aliases

2007-04-20 Thread Anton Korobeynikov
Gordon,

 Why not simply reinsert the aliased GV into the symbol table under the
 alias name? In this manner, alias objects would not need to derive
 from GlobalValue at all. Aliases could be stored in a list on the side
 as you describe, solving the memory usage problem. The majority of
 code could remain ignorant of them,
The main problem is that code should not ignore them :( Also, they
should be codegen'ed in some funky way, when we're needed both names:
alias and it's target at one place. Such information can be unavailable
if we'll put aliases in the separate table. I don't think, there is some
direct way to query symbol table at codegen-level. However, this can
be good idea: to have some module-level map, which stores alias targets.

-- 
With best regards, Anton Korobeynikov.

Faculty of Mathematics  Mechanics, Saint Petersburg State University.


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


Re: [llvm-commits] Function aliases

2007-04-20 Thread Reid Spencer
On Fri, 2007-04-20 at 10:20 +0400, Anton Korobeynikov wrote:
 Hello, Reid.
 
  I don't understand why we need a subclass of Function for 
  this? Can't we just derive an Alias class from a smart 
  pointer to Value?
 Because Aliases are either Function's or GlobalVariable's. They can be
 called, used in the expressions, etc. The same way as all normal
 external functions/global variables.

I'm saying don't do that. Alias is a pointer with a name. Its an
object that says: I'm just like that thing over there except I'm named
this. So, why not model it that way? It incurs cost only if its used.
What this does mean is that places where Functions and GVars are used,
we would also have to check for Aliases (if we cared). I assume that we
don't care in that many places. The aliasing mechanism doesn't make two
functions, there's only one function with two names. So why would we
want to instantiate two function objects?  If we instantiate an alias
object that acts like a smart pointer for the actual things, isn't that
good enough?

Reid.

 

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


Re: [llvm-commits] Function aliases

2007-04-20 Thread Reid Spencer
On Fri, 2007-04-20 at 09:51 -0400, Gordon Henriksen wrote:
 On 2007-04-20, at 01:22, Chris Lattner wrote:
 
  On Apr 19, 2007, at 3:24 PM, Anton Korobeynikov wrote:
  
  
   Chris, maybe in this situation it will be better to spare 4 bytes
   at GlobalValue object to store pointer to alias string there?
  
  
  I don't think that really makes sense.  Aliases aren't really
  global variables or functions themselves, they are a third kind of
  object.
  
  
  What do you think about making a new GlobalAlias class, which
  derives from GlobalValue.  Module would contain a list of these,
  just like it has a list of functions and gvars?
  
  
  This would clearly solve the memory use issue and I think it would
  be a cleaner design (obvious they can't have bodies, etc).
  
  
  What do you think?
 
 
 Chris,
 
 
 Why not simply reinsert the aliased GV into the symbol table under the
 alias name? In this manner, alias objects would not need to derive
 from GlobalValue at all. Aliases could be stored in a list on the side
 as you describe, solving the memory usage problem. The majority of
 code could remain ignorant of them, resolving the code duplication
 Anton was worried about.

Right, that's along the same lines as what I'm thinking. We should never
want to create two GlobalValues (of any kind) to represent aliases. The
only distinguishing thing is the name.

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

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


Re: [llvm-commits] Function aliases

2007-04-20 Thread Reid Spencer
On Fri, 2007-04-20 at 22:12 +0400, Anton Korobeynikov wrote:
 Gordon,
 
  Why not simply reinsert the aliased GV into the symbol table under the
  alias name? In this manner, alias objects would not need to derive
  from GlobalValue at all. Aliases could be stored in a list on the side
  as you describe, solving the memory usage problem. The majority of
  code could remain ignorant of them,
 The main problem is that code should not ignore them :( 

90% of LLVM *should* ignore them. The only time that they are needed is
at codegen time.

 Also, they
 should be codegen'ed in some funky way, when we're needed both names:
 alias and it's target at one place. 

Right. But, why impose a new concept on all of LLVM just for this very
limited code gen situation. I would rather have the CodeGen library
simply look for GVars or Functions that have two names. 

 Such information can be unavailable
 if we'll put aliases in the separate table. 

Certainly the codegen can be augmented to query a separate table.

 I don't think, there is some
 direct way to query symbol table at codegen-level.

It could be arrange in SelectionDAGISel.cpp during the lowering.


  However, this can
 be good idea: to have some module-level map, which stores alias targets.

The module-level map is just the symtab. When SelectionDAGISel lowers
the IR to machine level it just needs to have a way to associate
multiple names with a given Function or GVar node.

Reid.

 

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


[llvm-commits] test

2007-04-20 Thread Chris Lattner

foo?

-Chris

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


Re: [llvm-commits] test

2007-04-20 Thread Anton Korobeynikov
 foo?
bar

-- 
With best regards, Anton Korobeynikov.

Faculty of Mathematics  Mechanics, Saint Petersburg State University.


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


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

2007-04-20 Thread Chris Lattner


Changes in directory llvm/lib/Target/ARM:

README.txt updated: 1.22 - 1.23
---
Log message:

add a crazy idea


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

 README.txt |   12 
 1 files changed, 12 insertions(+)


Index: llvm/lib/Target/ARM/README.txt
diff -u llvm/lib/Target/ARM/README.txt:1.22 llvm/lib/Target/ARM/README.txt:1.23
--- llvm/lib/Target/ARM/README.txt:1.22 Tue Apr 17 13:03:00 2007
+++ llvm/lib/Target/ARM/README.txt  Fri Apr 20 15:18:43 2007
@@ -17,6 +17,18 @@
 
 //===-===//
 
+Crazy idea:  Consider code that uses lots of 8-bit or 16-bit values.  By the
+time regalloc happens, these values are now in a 32-bit register, usually with
+the top-bits known to be sign or zero extended.  If spilled, we should be able
+to spill these to a 8-bit or 16-bit stack slot, zero or sign extending as part
+of the reload.
+
+Doing this reduces the size of the stack frame (important for thumb etc), and
+also increases the likelihood that we will be able to reload multiple values
+from the stack with a single load.
+
+//===-===//
+
 The constant island pass is in good shape.  Some cleanups might be desirable,
 but there is unlikely to be much improvement in the generated code.
 



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


[llvm-commits] CVS: llvm/README.txt

2007-04-20 Thread Chris Lattner


Changes in directory llvm:

README.txt updated: 1.9 - 1.10
---
Log message:

test


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

 README.txt |1 +
 1 files changed, 1 insertion(+)


Index: llvm/README.txt
diff -u llvm/README.txt:1.9 llvm/README.txt:1.10
--- llvm/README.txt:1.9 Fri Apr 20 15:46:43 2007
+++ llvm/README.txt Fri Apr 20 15:49:25 2007
@@ -10,3 +10,4 @@
 
 Please see the HTML documentation provided in docs/index.html for further
 assistance with LLVM.
+



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


[llvm-commits] CVS: llvm/lib/Transforms/Utils/LoopSimplify.cpp

2007-04-20 Thread Devang Patel


Changes in directory llvm/lib/Transforms/Utils:

LoopSimplify.cpp updated: 1.91 - 1.92
---
Log message:

Avoid recursion.


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

 LoopSimplify.cpp |   19 +--
 1 files changed, 13 insertions(+), 6 deletions(-)


Index: llvm/lib/Transforms/Utils/LoopSimplify.cpp
diff -u llvm/lib/Transforms/Utils/LoopSimplify.cpp:1.91 
llvm/lib/Transforms/Utils/LoopSimplify.cpp:1.92
--- llvm/lib/Transforms/Utils/LoopSimplify.cpp:1.91 Sun Apr 15 03:47:27 2007
+++ llvm/lib/Transforms/Utils/LoopSimplify.cpp  Fri Apr 20 15:04:37 2007
@@ -407,13 +407,20 @@
 /// AddBlockAndPredsToSet - Add the specified block, and all of its
 /// predecessors, to the specified set, if it's not already in there.  Stop
 /// predecessor traversal when we reach StopBlock.
-static void AddBlockAndPredsToSet(BasicBlock *BB, BasicBlock *StopBlock,
+static void AddBlockAndPredsToSet(BasicBlock *InputBB, BasicBlock *StopBlock,
   std::setBasicBlock* Blocks) {
-  if (!Blocks.insert(BB).second) return;  // already processed.
-  if (BB == StopBlock) return;  // Stop here!
-
-  for (pred_iterator I = pred_begin(BB), E = pred_end(BB); I != E; ++I)
-AddBlockAndPredsToSet(*I, StopBlock, Blocks);
+  std::vectorBasicBlock * WorkList;
+  WorkList.push_back(InputBB);
+  do {
+BasicBlock *BB = WorkList.back(); WorkList.pop_back();
+if (Blocks.insert(BB).second  BB != StopBlock)
+  // If BB is not already processed and it is not a stop block then
+  // insert its predecessor in the work list
+  for (pred_iterator I = pred_begin(BB), E = pred_end(BB); I != E; ++I) {
+BasicBlock *WBB = *I;
+WorkList.push_back(WBB);
+  }
+  } while(!WorkList.empty());
 }
 
 /// FindPHIToPartitionLoops - The first part of loop-nestification is to find a



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


[llvm-commits] CVS: llvm/lib/Transforms/Scalar/LICM.cpp ScalarReplAggregates.cpp

2007-04-20 Thread Owen Anderson


Changes in directory llvm/lib/Transforms/Scalar:

LICM.cpp updated: 1.92 - 1.93
ScalarReplAggregates.cpp updated: 1.85 - 1.86
---
Log message:

Move more passes to using ETForest instead of DominatorTree.


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

 LICM.cpp |7 ++-
 ScalarReplAggregates.cpp |6 +++---
 2 files changed, 5 insertions(+), 8 deletions(-)


Index: llvm/lib/Transforms/Scalar/LICM.cpp
diff -u llvm/lib/Transforms/Scalar/LICM.cpp:1.92 
llvm/lib/Transforms/Scalar/LICM.cpp:1.93
--- llvm/lib/Transforms/Scalar/LICM.cpp:1.92Wed Apr 18 00:43:13 2007
+++ llvm/lib/Transforms/Scalar/LICM.cpp Fri Apr 20 01:27:13 2007
@@ -73,7 +73,6 @@
   AU.addRequiredID(LoopSimplifyID);
   AU.addRequiredLoopInfo();
   AU.addRequiredETForest();
-  AU.addRequiredDominatorTree();  // For scalar promotion (mem2reg)
   AU.addRequiredDominanceFrontier();  // For scalar promotion (mem2reg)
   AU.addRequiredAliasAnalysis();
 }
@@ -88,7 +87,6 @@
 AliasAnalysis *AA;   // Current AliasAnalysis information
 LoopInfo  *LI;   // Current LoopInfo
 ETForest *ET;   // ETForest for the current Loop...
-DominatorTree *DT;   // Dominator Tree for the current Loop...
 DominanceFrontier *DF;   // Current Dominance Frontier
 
 // State that is updated as we process loops
@@ -215,7 +213,6 @@
   AA = getAnalysisAliasAnalysis();
   DF = getAnalysisDominanceFrontier();
   ET = getAnalysisETForest();
-  DT = getAnalysisDominatorTree();
 
   CurAST = new AliasSetTracker(*AA);
   // Collect Alias info frmo subloops
@@ -554,7 +551,7 @@
 if (AI) {
   std::vectorAllocaInst* Allocas;
   Allocas.push_back(AI);
-  PromoteMemToReg(Allocas, *DT, *DF, AA-getTargetData(), CurAST);
+  PromoteMemToReg(Allocas, *ET, *DF, AA-getTargetData(), CurAST);
 }
   }
 }
@@ -735,7 +732,7 @@
   PromotedAllocas.reserve(PromotedValues.size());
   for (unsigned i = 0, e = PromotedValues.size(); i != e; ++i)
 PromotedAllocas.push_back(PromotedValues[i].first);
-  PromoteMemToReg(PromotedAllocas, *DT, *DF, AA-getTargetData(), CurAST);
+  PromoteMemToReg(PromotedAllocas, *ET, *DF, AA-getTargetData(), CurAST);
 }
 
 /// FindPromotableValuesInLoop - Check the current loop for stores to definite


Index: llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
diff -u llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp:1.85 
llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp:1.86
--- llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp:1.85Thu Apr 19 
00:39:12 2007
+++ llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp Fri Apr 20 01:27:13 2007
@@ -53,7 +53,7 @@
 // getAnalysisUsage - This pass does not require any passes, but we know it
 // will not alter the CFG, so say so.
 virtual void getAnalysisUsage(AnalysisUsage AU) const {
-  AU.addRequiredDominatorTree();
+  AU.addRequiredETForest();
   AU.addRequiredDominanceFrontier();
   AU.addRequiredTargetData();
   AU.setPreservesCFG();
@@ -100,7 +100,7 @@
 bool SROA::performPromotion(Function F) {
   std::vectorAllocaInst* Allocas;
   const TargetData TD = getAnalysisTargetData();
-  DominatorTree DT = getAnalysisDominatorTree();
+  ETForest ET = getAnalysisETForest();
   DominanceFrontier DF = getAnalysisDominanceFrontier();
 
   BasicBlock BB = F.getEntryBlock();  // Get the entry node for the function
@@ -119,7 +119,7 @@
 
 if (Allocas.empty()) break;
 
-PromoteMemToReg(Allocas, DT, DF, TD);
+PromoteMemToReg(Allocas, ET, DF, TD);
 NumPromoted += Allocas.size();
 Changed = true;
   }



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


[llvm-commits] CVS: llvm/lib/Transforms/Utils/Mem2Reg.cpp PromoteMemoryToRegister.cpp

2007-04-20 Thread Owen Anderson


Changes in directory llvm/lib/Transforms/Utils:

Mem2Reg.cpp updated: 1.23 - 1.24
PromoteMemoryToRegister.cpp updated: 1.96 - 1.97
---
Log message:

Move more passes to using ETForest instead of DominatorTree.


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

 Mem2Reg.cpp |6 +++---
 PromoteMemoryToRegister.cpp |   19 +--
 2 files changed, 12 insertions(+), 13 deletions(-)


Index: llvm/lib/Transforms/Utils/Mem2Reg.cpp
diff -u llvm/lib/Transforms/Utils/Mem2Reg.cpp:1.23 
llvm/lib/Transforms/Utils/Mem2Reg.cpp:1.24
--- llvm/lib/Transforms/Utils/Mem2Reg.cpp:1.23  Mon Apr 16 13:10:23 2007
+++ llvm/lib/Transforms/Utils/Mem2Reg.cpp   Fri Apr 20 01:27:13 2007
@@ -36,7 +36,7 @@
 // getAnalysisUsage - We need dominance frontiers
 //
 virtual void getAnalysisUsage(AnalysisUsage AU) const {
-  AU.addRequiredDominatorTree();
+  AU.addRequiredETForest();
   AU.addRequiredDominanceFrontier();
   AU.addRequiredTargetData();
   AU.setPreservesCFG();
@@ -60,7 +60,7 @@
 
   bool Changed  = false;
 
-  DominatorTree DT = getAnalysisDominatorTree();
+  ETForest ET = getAnalysisETForest();
   DominanceFrontier DF = getAnalysisDominanceFrontier();
 
   while (1) {
@@ -75,7 +75,7 @@
 
 if (Allocas.empty()) break;
 
-PromoteMemToReg(Allocas, DT, DF, TD);
+PromoteMemToReg(Allocas, ET, DF, TD);
 NumPromoted += Allocas.size();
 Changed = true;
   }


Index: llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
diff -u llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp:1.96 
llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp:1.97
--- llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp:1.96  Mon Mar 26 
18:19:29 2007
+++ llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp   Fri Apr 20 
01:27:13 2007
@@ -88,7 +88,7 @@
 ///
 std::vectorAllocaInst* Allocas;
 SmallVectorAllocaInst*, 16 RetryList;
-DominatorTree DT;
+ETForest ET;
 DominanceFrontier DF;
 const TargetData TD;
 
@@ -127,10 +127,10 @@
 
   public:
 PromoteMem2Reg(const std::vectorAllocaInst* A,
-   SmallVectorAllocaInst*, 16 Retry, DominatorTree dt,
+   SmallVectorAllocaInst*, 16 Retry, ETForest et,
DominanceFrontier df, const TargetData td,
AliasSetTracker *ast)
-  : Allocas(A), RetryList(Retry), DT(dt), DF(df), TD(td), AST(ast) {}
+  : Allocas(A), RetryList(Retry), ET(et), DF(df), TD(td), AST(ast) {}
 
 void run();
 
@@ -139,13 +139,13 @@
 bool properlyDominates(Instruction *I1, Instruction *I2) const {
   if (InvokeInst *II = dyn_castInvokeInst(I1))
 I1 = II-getNormalDest()-begin();
-  return DT[I1-getParent()]-properlyDominates(DT[I2-getParent()]);
+  return ET.properlyDominates(I1-getParent(), I2-getParent());
 }
 
 /// dominates - Return true if BB1 dominates BB2 using the DominatorTree.
 ///
 bool dominates(BasicBlock *BB1, BasicBlock *BB2) const {
-  return DT[BB1]-dominates(DT[BB2]);
+  return ET.dominates(BB1, BB2);
 }
 
   private:
@@ -534,8 +534,7 @@
   SmallPtrSetPHINode*, 16 DeadPHINodes) 
{
   // Scan the immediate dominators of this block looking for a block which has 
a
   // PHI node for Alloca num.  If we find it, mark the PHI node as being alive!
-  for (DominatorTree::Node *N = DT[BB]; N; N = N-getIDom()) {
-BasicBlock *DomBB = N-getBlock();
+  for (BasicBlock* DomBB = BB; DomBB; DomBB = ET.getIDom(DomBB)) {
 DenseMapstd::pairBasicBlock*, unsigned, PHINode*::iterator
   I = NewPhiNodes.find(std::make_pair(DomBB, AllocaNum));
 if (I != NewPhiNodes.end()) {
@@ -806,13 +805,13 @@
 /// made to the IR.
 ///
 void llvm::PromoteMemToReg(const std::vectorAllocaInst* Allocas,
-   DominatorTree DT, DominanceFrontier DF,
+   ETForest ET, DominanceFrontier DF,
const TargetData TD, AliasSetTracker *AST) {
   // If there is nothing to do, bail out...
   if (Allocas.empty()) return;
 
   SmallVectorAllocaInst*, 16 RetryList;
-  PromoteMem2Reg(Allocas, RetryList, DT, DF, TD, AST).run();
+  PromoteMem2Reg(Allocas, RetryList, ET, DF, TD, AST).run();
 
   // PromoteMem2Reg may not have been able to promote all of the allocas in one
   // pass, run it again if needed.
@@ -830,7 +829,7 @@
 
 NewAllocas.assign(RetryList.begin(), RetryList.end());
 RetryList.clear();
-PromoteMem2Reg(NewAllocas, RetryList, DT, DF, TD, AST).run();
+PromoteMem2Reg(NewAllocas, RetryList, ET, DF, TD, AST).run();
 NewAllocas.clear();
   }
 }



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


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

2007-04-20 Thread Chris Lattner


Changes in directory llvm/tools/opt:

opt.cpp updated: 1.133 - 1.134
---
Log message:

remove cruft


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

 opt.cpp |3 ---
 1 files changed, 3 deletions(-)


Index: llvm/tools/opt/opt.cpp
diff -u llvm/tools/opt/opt.cpp:1.133 llvm/tools/opt/opt.cpp:1.134
--- llvm/tools/opt/opt.cpp:1.133Tue Apr 10 10:43:36 2007
+++ llvm/tools/opt/opt.cpp  Thu Apr 19 23:45:58 2007
@@ -27,7 +27,6 @@
 #include llvm/Support/PluginLoader.h
 #include llvm/Support/Streams.h
 #include llvm/Support/SystemUtils.h
-#include llvm/Support/Timer.h
 #include llvm/LinkAllPasses.h
 #include llvm/LinkAllVMCore.h
 #include iostream
@@ -95,8 +94,6 @@
 static cl::optbool
 AnalyzeOnly(analyze, cl::desc(Only perform analysis, no optimization));
 
-static Timer BytecodeLoadTimer(Bytecode Loader);
-
 // -- Define Printers for module and function passes 
 namespace {
 



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


[llvm-commits] CVS: llvm/test/CodeGen/X86/isel-sink.ll

2007-04-20 Thread Evan Cheng


Changes in directory llvm/test/CodeGen/X86:

isel-sink.ll updated: 1.2 - 1.3
---
Log message:

Fix test.

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

 isel-sink.ll |2 +-
 1 files changed, 1 insertion(+), 1 deletion(-)


Index: llvm/test/CodeGen/X86/isel-sink.ll
diff -u llvm/test/CodeGen/X86/isel-sink.ll:1.2 
llvm/test/CodeGen/X86/isel-sink.ll:1.3
--- llvm/test/CodeGen/X86/isel-sink.ll:1.2  Sun Apr 15 17:16:46 2007
+++ llvm/test/CodeGen/X86/isel-sink.ll  Thu Apr 19 19:45:36 2007
@@ -1,6 +1,6 @@
 ; RUN: llvm-as  %s | llc -march=x86 | not grep lea
 ; RUN: llvm-as  %s | llc -march=x86 -mtriple=i686-apple-darwin8 | \
-; RUN:   grep {movl \$4, (%ecx,%eax,4)}
+; RUN:   grep {movl \$4, (.*,.*,4)}
 
 define i32 @test(i32* %X, i32 %B) {
; This gep should be sunk out of this block into the load/store users.



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


[llvm-commits] CVS: llvm/include/llvm/Transforms/Utils/PromoteMemToReg.h

2007-04-20 Thread Owen Anderson


Changes in directory llvm/include/llvm/Transforms/Utils:

PromoteMemToReg.h updated: 1.9 - 1.10
---
Log message:

Move more passes to using ETForest instead of DominatorTree.


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

 PromoteMemToReg.h |4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)


Index: llvm/include/llvm/Transforms/Utils/PromoteMemToReg.h
diff -u llvm/include/llvm/Transforms/Utils/PromoteMemToReg.h:1.9 
llvm/include/llvm/Transforms/Utils/PromoteMemToReg.h:1.10
--- llvm/include/llvm/Transforms/Utils/PromoteMemToReg.h:1.9Sun Nov  5 
13:31:28 2006
+++ llvm/include/llvm/Transforms/Utils/PromoteMemToReg.hFri Apr 20 
01:27:13 2007
@@ -20,7 +20,7 @@
 namespace llvm {
 
 class AllocaInst;
-class DominatorTree;
+class ETForest;
 class DominanceFrontier;
 class TargetData;
 class AliasSetTracker;
@@ -39,7 +39,7 @@
 /// made to the IR.
 ///
 void PromoteMemToReg(const std::vectorAllocaInst* Allocas,
- DominatorTree DT, DominanceFrontier DF,
+ ETForest ET, DominanceFrontier DF,
  const TargetData TD, AliasSetTracker *AST = 0);
 
 } // End llvm namespace



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


[llvm-commits] CVS: llvm/test/Assembler/select.ll

2007-04-20 Thread Christopher Lamb


Changes in directory llvm/test/Assembler:

select.ll updated: 1.3 - 1.4
---
Log message:

Test check in


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

 select.ll |1 -
 1 files changed, 1 deletion(-)


Index: llvm/test/Assembler/select.ll
diff -u llvm/test/Assembler/select.ll:1.3 llvm/test/Assembler/select.ll:1.4
--- llvm/test/Assembler/select.ll:1.3   Sat Dec  2 14:34:08 2006
+++ llvm/test/Assembler/select.ll   Fri Apr 20 00:05:24 2007
@@ -1,7 +1,6 @@
 ; RUN: llvm-upgrade  %s | llvm-as -o /dev/null -f
 
 
-
 int %test(bool %C, int %V1, int %V2) {
   %X = select bool true, bool false, bool true
   %V = select bool %X, int %V1, int %V2



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


[llvm-commits] CVS: llvm/include/llvm/Analysis/Dominators.h

2007-04-20 Thread Owen Anderson


Changes in directory llvm/include/llvm/Analysis:

Dominators.h updated: 1.74 - 1.75
---
Log message:

Add null checks and const-ify these accessors.


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

 Dominators.h |7 +--
 1 files changed, 5 insertions(+), 2 deletions(-)


Index: llvm/include/llvm/Analysis/Dominators.h
diff -u llvm/include/llvm/Analysis/Dominators.h:1.74 
llvm/include/llvm/Analysis/Dominators.h:1.75
--- llvm/include/llvm/Analysis/Dominators.h:1.74Wed Apr 18 00:25:09 2007
+++ llvm/include/llvm/Analysis/Dominators.h Fri Apr 20 00:44:16 2007
@@ -322,13 +322,16 @@
   }
   
   /// Return the immediate dominator of A.
-  BasicBlock *getIDom(BasicBlock *A) {
+  BasicBlock *getIDom(BasicBlock *A) const {
+if (!A) return 0;
+
 ETNode *NodeA = getNode(A);
 const ETNode *idom = NodeA-getFather();
 return idom ? idom-getDataBasicBlock() : 0;
   }
   
-  void getChildren(BasicBlock *A, std::vectorBasicBlock* children) {
+  void getChildren(BasicBlock *A, std::vectorBasicBlock* children) const {
+if (!A) return;
 ETNode *NodeA = getNode(A);
 const ETNode* son = NodeA-getSon();
 



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


[llvm-commits] CVS: llvm/README.txt

2007-04-20 Thread Chris Lattner


Changes in directory llvm:

README.txt updated: 1.8 - 1.9
---
Log message:

test commit


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

 README.txt |1 -
 1 files changed, 1 deletion(-)


Index: llvm/README.txt
diff -u llvm/README.txt:1.8 llvm/README.txt:1.9
--- llvm/README.txt:1.8 Fri Apr 20 15:42:36 2007
+++ llvm/README.txt Fri Apr 20 15:46:43 2007
@@ -10,4 +10,3 @@
 
 Please see the HTML documentation provided in docs/index.html for further
 assistance with LLVM.
-



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


[llvm-commits] CVS: llvm/README.txt

2007-04-20 Thread Chris Lattner


Changes in directory llvm:

README.txt updated: 1.7 - 1.8
---
Log message:

test commit


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

 README.txt |1 +
 1 files changed, 1 insertion(+)


Index: llvm/README.txt
diff -u llvm/README.txt:1.7 llvm/README.txt:1.8
--- llvm/README.txt:1.7 Thu Sep  2 17:49:27 2004
+++ llvm/README.txt Fri Apr 20 15:42:36 2007
@@ -10,3 +10,4 @@
 
 Please see the HTML documentation provided in docs/index.html for further
 assistance with LLVM.
+



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


[llvm-commits] CVS: llvm/lib/Target/ARM/ARMRegisterInfo.td

2007-04-20 Thread Evan Cheng


Changes in directory llvm/lib/Target/ARM:

ARMRegisterInfo.td updated: 1.15 - 1.16
---
Log message:

Specify S registers as D registers' sub-registers.

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

 ARMRegisterInfo.td |4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)


Index: llvm/lib/Target/ARM/ARMRegisterInfo.td
diff -u llvm/lib/Target/ARM/ARMRegisterInfo.td:1.15 
llvm/lib/Target/ARM/ARMRegisterInfo.td:1.16
--- llvm/lib/Target/ARM/ARMRegisterInfo.td:1.15 Wed Mar  7 20:56:40 2007
+++ llvm/lib/Target/ARM/ARMRegisterInfo.td  Fri Apr 20 16:20:10 2007
@@ -13,10 +13,10 @@
 
//===--===//
 
 // Registers are identified with 4-bit ID numbers.
-class ARMRegbits4 num, string n, listRegister aliases = [] : Registern 
{
+class ARMRegbits4 num, string n, listRegister subregs = [] : Registern 
{
   field bits4 Num;
   let Namespace = ARM;
-  let Aliases = aliases;
+  let SubRegs = subregs;
 }
 
 class ARMFRegbits5 num, string n : Registern {



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


[llvm-commits] CVS: llvm/test/FrontendObjC/dg.exp

2007-04-20 Thread Devang Patel


Changes in directory llvm/test/FrontendObjC:

dg.exp added (r1.1)
---
Log message:

Enable Objective-C tests.


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

 dg.exp |6 ++
 1 files changed, 6 insertions(+)


Index: llvm/test/FrontendObjC/dg.exp
diff -c /dev/null llvm/test/FrontendObjC/dg.exp:1.1
*** /dev/null   Fri Apr 20 16:24:11 2007
--- llvm/test/FrontendObjC/dg.exp   Fri Apr 20 16:24:01 2007
***
*** 0 
--- 1,6 
+ load_lib llvm.exp
+ 
+ if [ llvm_gcc_supports_objc ] then {
+ RunLLVMTests [lsort [glob -nocomplain $srcdir/$subdir/*.{m}]]
+ }
+ 



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

2007-04-20 Thread Evan Cheng


Changes in directory llvm/include/llvm/Target:

MRegisterInfo.h updated: 1.104 - 1.105
---
Log message:

Add sub-registers set accessor.

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

 MRegisterInfo.h |8 
 1 files changed, 8 insertions(+)


Index: llvm/include/llvm/Target/MRegisterInfo.h
diff -u llvm/include/llvm/Target/MRegisterInfo.h:1.104 
llvm/include/llvm/Target/MRegisterInfo.h:1.105
--- llvm/include/llvm/Target/MRegisterInfo.h:1.104  Fri Apr 20 16:11:22 2007
+++ llvm/include/llvm/Target/MRegisterInfo.hFri Apr 20 16:28:05 2007
@@ -270,6 +270,14 @@
 return get(RegNo).AliasSet;
   }
 
+  /// getSubRegisters - Return the set of registers that are sub-registers of
+  // the specified register, or a null list of there are none. The list
+  /// returned is zero terminated.
+  ///
+  const unsigned *getSubRegisters(unsigned RegNo) const {
+return get(RegNo).SubRegs;
+  }
+
   /// getName - Return the symbolic target specific name for the specified
   /// physical register.
   const char *getName(unsigned RegNo) const {



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


[llvm-commits] CVS: llvm/include/llvm/Support/OutputBuffer.h

2007-04-20 Thread Chris Lattner


Changes in directory llvm/include/llvm/Support:

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

Fix a very strange assertion message, patch by Christopher Lamb
 CVS: --


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

 OutputBuffer.h |2 +-
 1 files changed, 1 insertion(+), 1 deletion(-)


Index: llvm/include/llvm/Support/OutputBuffer.h
diff -u llvm/include/llvm/Support/OutputBuffer.h:1.4 
llvm/include/llvm/Support/OutputBuffer.h:1.5
--- llvm/include/llvm/Support/OutputBuffer.h:1.4Sun Feb  4 20:37:07 2007
+++ llvm/include/llvm/Support/OutputBuffer.hThu Apr 19 22:27:36 2007
@@ -35,7 +35,7 @@
 // aligned to the specified power of two boundary.
 void align(unsigned Boundary) {
   assert(Boundary  (Boundary  (Boundary - 1)) == 0 
- Must alitypedef std::vectorunsigned char DataBuffer;gn to 2^k 
boundary);
+ Must align to 2^k boundary);
   size_t Size = Output.size();
   
   if (Size  (Boundary - 1)) {



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


Re: [llvm-commits] CVS: llvm/test/FrontendObjC/dg.exp

2007-04-20 Thread Chris Lattner
 Enable Objective-C tests.

Oooh, nice!  Duncan, can you do the same for the Ada tests?

-Chris


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

  dg.exp |6 ++
  1 files changed, 6 insertions(+)


 Index: llvm/test/FrontendObjC/dg.exp
 diff -c /dev/null llvm/test/FrontendObjC/dg.exp:1.1
 *** /dev/null Fri Apr 20 16:24:11 2007
 --- llvm/test/FrontendObjC/dg.exp Fri Apr 20 16:24:01 2007
 ***
 *** 0 
 --- 1,6 
 + load_lib llvm.exp
 +
 + if [ llvm_gcc_supports_objc ] then {
 + RunLLVMTests [lsort [glob -nocomplain $srcdir/$subdir/*.{m}]]
 + }
 +



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

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


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

2007-04-20 Thread Evan Cheng


Changes in directory llvm/include/llvm/Target:

MRegisterInfo.h updated: 1.103 - 1.104
---
Log message:

Add sub-register sets.

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

 MRegisterInfo.h |3 +++
 1 files changed, 3 insertions(+)


Index: llvm/include/llvm/Target/MRegisterInfo.h
diff -u llvm/include/llvm/Target/MRegisterInfo.h:1.103 
llvm/include/llvm/Target/MRegisterInfo.h:1.104
--- llvm/include/llvm/Target/MRegisterInfo.h:1.103  Tue Apr 17 15:23:34 2007
+++ llvm/include/llvm/Target/MRegisterInfo.hFri Apr 20 16:11:22 2007
@@ -38,10 +38,13 @@
 /// to a Zero terminated array of registers that this register aliases.  This 
is
 /// needed for architectures like X86 which have AL alias AX alias EAX.
 /// Registers that this does not apply to simply should set this to null.
+/// The SubRegs field is a zero terminated array of registers that are
+/// sub-registers of the specific register, e.g. AL, AH are sub-registers of 
AX.
 ///
 struct TargetRegisterDesc {
   const char *Name; // Assembly language name for the register
   const unsigned *AliasSet; // Register Alias Set, described above
+  const unsigned *SubRegs;  // Sub-register set, described above
 };
 
 class TargetRegisterClass {



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


[llvm-commits] CVS: llvm/include/llvm/CodeGen/SelectionDAG.h SelectionDAGNodes.h

2007-04-20 Thread Lauro Ramos Venancio


Changes in directory llvm/include/llvm/CodeGen:

SelectionDAG.h updated: 1.146 - 1.147
SelectionDAGNodes.h updated: 1.184 - 1.185
---
Log message:

Implement general dynamic, initial exec and local exec TLS models for
X86 32 bits.


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

 SelectionDAG.h  |3 +++
 SelectionDAGNodes.h |   17 +
 2 files changed, 16 insertions(+), 4 deletions(-)


Index: llvm/include/llvm/CodeGen/SelectionDAG.h
diff -u llvm/include/llvm/CodeGen/SelectionDAG.h:1.146 
llvm/include/llvm/CodeGen/SelectionDAG.h:1.147
--- llvm/include/llvm/CodeGen/SelectionDAG.h:1.146  Fri Jan 26 15:22:28 2007
+++ llvm/include/llvm/CodeGen/SelectionDAG.hFri Apr 20 16:38:10 2007
@@ -398,6 +398,9 @@
   SDNode *getTargetNode(unsigned Opcode, MVT::ValueType VT1,
 MVT::ValueType VT2, MVT::ValueType VT3,
 SDOperand Op1, SDOperand Op2);
+  SDNode *getTargetNode(unsigned Opcode, MVT::ValueType VT1,
+MVT::ValueType VT2, MVT::ValueType VT3,
+SDOperand Op1, SDOperand Op2, SDOperand Op3);
   SDNode *getTargetNode(unsigned Opcode, MVT::ValueType VT1, 
 MVT::ValueType VT2, MVT::ValueType VT3,
 const SDOperand *Ops, unsigned NumOps);


Index: llvm/include/llvm/CodeGen/SelectionDAGNodes.h
diff -u llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1.184 
llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1.185
--- llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1.184 Tue Apr 17 04:20:00 2007
+++ llvm/include/llvm/CodeGen/SelectionDAGNodes.h   Fri Apr 20 16:38:10 2007
@@ -19,6 +19,7 @@
 #ifndef LLVM_CODEGEN_SELECTIONDAGNODES_H
 #define LLVM_CODEGEN_SELECTIONDAGNODES_H
 
+#include llvm/GlobalVariable.h
 #include llvm/Value.h
 #include llvm/ADT/FoldingSet.h
 #include llvm/ADT/GraphTraits.h
@@ -95,7 +96,8 @@
 // Various leaf nodes.
 STRING, BasicBlock, VALUETYPE, CONDCODE, Register,
 Constant, ConstantFP,
-GlobalAddress, FrameIndex, JumpTable, ConstantPool, ExternalSymbol,
+GlobalAddress, GlobalTLSAddress, FrameIndex,
+JumpTable, ConstantPool, ExternalSymbol,
 
 // The address of the GOT
 GLOBAL_OFFSET_TABLE,
@@ -124,6 +126,7 @@
 // anything else with this node, and this is valid in the target-specific
 // dag, turning into a GlobalAddress operand.
 TargetGlobalAddress,
+TargetGlobalTLSAddress,
 TargetFrameIndex,
 TargetJumpTable,
 TargetConstantPool,
@@ -1164,7 +1167,12 @@
   friend class SelectionDAG;
   GlobalAddressSDNode(bool isTarget, const GlobalValue *GA, MVT::ValueType VT,
   int o = 0)
-: SDNode(isTarget ? ISD::TargetGlobalAddress : ISD::GlobalAddress,
+: SDNode(dyn_castGlobalVariable(GA) 
+ dyn_castGlobalVariable(GA)-isThreadLocal() ?
+ // Thread Local
+ (isTarget ? ISD::TargetGlobalTLSAddress : ISD::GlobalTLSAddress) :
+ // Non Thread Local
+ (isTarget ? ISD::TargetGlobalAddress : ISD::GlobalAddress),
  getSDVTList(VT)), Offset(o) {
 TheGlobal = const_castGlobalValue*(GA);
   }
@@ -1176,11 +1184,12 @@
   static bool classof(const GlobalAddressSDNode *) { return true; }
   static bool classof(const SDNode *N) {
 return N-getOpcode() == ISD::GlobalAddress ||
-   N-getOpcode() == ISD::TargetGlobalAddress;
+   N-getOpcode() == ISD::TargetGlobalAddress ||
+   N-getOpcode() == ISD::GlobalTLSAddress ||
+   N-getOpcode() == ISD::TargetGlobalTLSAddress;
   }
 };
 
-
 class FrameIndexSDNode : public SDNode {
   int FI;
   virtual void ANCHOR();  // Out-of-line virtual method to give class a home.



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

2007-04-20 Thread Lauro Ramos Venancio


Changes in directory llvm/include/llvm/Target:

TargetAsmInfo.h updated: 1.28 - 1.29
---
Log message:

Implement general dynamic, initial exec and local exec TLS models for
X86 32 bits.


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

 TargetAsmInfo.h |   16 +++-
 1 files changed, 15 insertions(+), 1 deletion(-)


Index: llvm/include/llvm/Target/TargetAsmInfo.h
diff -u llvm/include/llvm/Target/TargetAsmInfo.h:1.28 
llvm/include/llvm/Target/TargetAsmInfo.h:1.29
--- llvm/include/llvm/Target/TargetAsmInfo.h:1.28   Wed Mar  7 19:00:38 2007
+++ llvm/include/llvm/Target/TargetAsmInfo.hFri Apr 20 16:38:10 2007
@@ -43,7 +43,15 @@
 /// target doesn't support a BSS section.
 ///
 const char *BSSSection;   // Default to .bss.
-
+
+/// TLSDataSection - Section directive for Thread Local data.
+///
+const char *TLSDataSection;// Defaults to .section 
.tdata,awT,@progbits.
+
+/// TLSBSSSection - Section directive for Thread Local uninitialized data.
+/// Null if this target doesn't support a BSS section.
+///
+const char *TLSBSSSection;// Default to .section .tbss,awT,@nobits.
 /// ZeroFillDirective - Directive for emitting a global to the ZeroFill
 /// section on this target.  Null if this target doesn't support zerofill.
 const char *ZeroFillDirective;// Default is null.
@@ -362,6 +370,12 @@
 const char *getBSSSection() const {
   return BSSSection;
 }
+const char *getTLSDataSection() const {
+  return TLSDataSection;
+}
+const char *getTLSBSSSection() const {
+  return TLSBSSSection;
+}
 const char *getZeroFillDirective() const {
   return ZeroFillDirective;
 }



___
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 SelectionDAG.cpp

2007-04-20 Thread Lauro Ramos Venancio


Changes in directory llvm/lib/CodeGen/SelectionDAG:

LegalizeDAG.cpp updated: 1.486 - 1.487
SelectionDAG.cpp updated: 1.397 - 1.398
---
Log message:

Implement general dynamic, initial exec and local exec TLS models for
X86 32 bits.


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

 LegalizeDAG.cpp  |2 ++
 SelectionDAG.cpp |   22 --
 2 files changed, 22 insertions(+), 2 deletions(-)


Index: llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
diff -u llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp:1.486 
llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp:1.487
--- llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp:1.486 Mon Apr  2 16:36:32 2007
+++ llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp   Fri Apr 20 16:38:10 2007
@@ -622,6 +622,7 @@
   case ISD::TargetConstantFP:
   case ISD::TargetConstantPool:
   case ISD::TargetGlobalAddress:
+  case ISD::TargetGlobalTLSAddress:
   case ISD::TargetExternalSymbol:
   case ISD::VALUETYPE:
   case ISD::SRCVALUE:
@@ -653,6 +654,7 @@
 assert(0  Do not know how to legalize this operator!);
 abort();
   case ISD::GlobalAddress:
+  case ISD::GlobalTLSAddress:
   case ISD::ExternalSymbol:
   case ISD::ConstantPool:
   case ISD::JumpTable: // Nothing to do.


Index: llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
diff -u llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:1.397 
llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:1.398
--- llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:1.397Thu Apr 12 
00:58:43 2007
+++ llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp  Fri Apr 20 16:38:10 2007
@@ -14,6 +14,7 @@
 #include llvm/CodeGen/SelectionDAG.h
 #include llvm/Constants.h
 #include llvm/GlobalValue.h
+#include llvm/GlobalVariable.h
 #include llvm/Intrinsics.h
 #include llvm/Assembly/Writer.h
 #include llvm/CodeGen/MachineBasicBlock.h
@@ -296,7 +297,9 @@
 ID.AddDouble(castConstantFPSDNode(N)-getValue());
 break;
   case ISD::TargetGlobalAddress:
-  case ISD::GlobalAddress: {
+  case ISD::GlobalAddress:
+  case ISD::TargetGlobalTLSAddress:
+  case ISD::GlobalTLSAddress: {
 GlobalAddressSDNode *GA = castGlobalAddressSDNode(N);
 ID.AddPointer(GA-getGlobal());
 ID.AddInteger(GA-getOffset());
@@ -692,7 +695,12 @@
 SDOperand SelectionDAG::getGlobalAddress(const GlobalValue *GV,
  MVT::ValueType VT, int Offset,
  bool isTargetGA) {
-  unsigned Opc = isTargetGA ? ISD::TargetGlobalAddress : ISD::GlobalAddress;
+  const GlobalVariable *GVar = dyn_castGlobalVariable(GV);
+  unsigned Opc;
+  if (GVar  GVar-isThreadLocal())
+Opc = isTargetGA ? ISD::TargetGlobalTLSAddress : ISD::GlobalTLSAddress;
+  else
+Opc = isTargetGA ? ISD::TargetGlobalAddress : ISD::GlobalAddress;
   FoldingSetNodeID ID;
   AddNodeIDNode(ID, Opc, getVTList(VT), 0, 0);
   ID.AddPointer(GV);
@@ -2282,6 +2290,14 @@
   SDOperand Ops[] = { Op1, Op2 };
   return getNode(ISD::BUILTIN_OP_END+Opcode, VTs, 3, Ops, 2).Val;
 }
+SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT::ValueType VT1,
+MVT::ValueType VT2, MVT::ValueType VT3,
+SDOperand Op1, SDOperand Op2,
+SDOperand Op3) {
+  const MVT::ValueType *VTs = getNodeValueTypes(VT1, VT2, VT3);
+  SDOperand Ops[] = { Op1, Op2, Op3 };
+  return getNode(ISD::BUILTIN_OP_END+Opcode, VTs, 3, Ops, 3).Val;
+}
 SDNode *SelectionDAG::getTargetNode(unsigned Opcode, MVT::ValueType VT1, 
 MVT::ValueType VT2, MVT::ValueType VT3,
 const SDOperand *Ops, unsigned NumOps) {
@@ -2702,6 +2718,7 @@
   case ISD::Constant:  return Constant;
   case ISD::ConstantFP:return ConstantFP;
   case ISD::GlobalAddress: return GlobalAddress;
+  case ISD::GlobalTLSAddress: return GlobalTLSAddress;
   case ISD::FrameIndex:return FrameIndex;
   case ISD::JumpTable: return JumpTable;
   case ISD::GLOBAL_OFFSET_TABLE: return GLOBAL_OFFSET_TABLE;
@@ -2725,6 +2742,7 @@
   case ISD::TargetConstant: return TargetConstant;
   case ISD::TargetConstantFP:return TargetConstantFP;
   case ISD::TargetGlobalAddress: return TargetGlobalAddress;
+  case ISD::TargetGlobalTLSAddress: return TargetGlobalTLSAddress;
   case ISD::TargetFrameIndex: return TargetFrameIndex;
   case ISD::TargetJumpTable:  return TargetJumpTable;
   case ISD::TargetConstantPool:  return TargetConstantPool;



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


[llvm-commits] CVS: llvm/lib/Target/TargetAsmInfo.cpp TargetSelectionDAG.td

2007-04-20 Thread Lauro Ramos Venancio


Changes in directory llvm/lib/Target:

TargetAsmInfo.cpp updated: 1.21 - 1.22
TargetSelectionDAG.td updated: 1.78 - 1.79
---
Log message:

Implement general dynamic, initial exec and local exec TLS models for
X86 32 bits.


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

 TargetAsmInfo.cpp |2 ++
 TargetSelectionDAG.td |4 
 2 files changed, 6 insertions(+)


Index: llvm/lib/Target/TargetAsmInfo.cpp
diff -u llvm/lib/Target/TargetAsmInfo.cpp:1.21 
llvm/lib/Target/TargetAsmInfo.cpp:1.22
--- llvm/lib/Target/TargetAsmInfo.cpp:1.21  Wed Mar  7 19:00:38 2007
+++ llvm/lib/Target/TargetAsmInfo.cpp   Fri Apr 20 16:38:10 2007
@@ -20,6 +20,8 @@
   TextSection(.text),
   DataSection(.data),
   BSSSection(.bss),
+  TLSDataSection(\t.section .tdata,\awT\,@progbits),
+  TLSBSSSection(\t.section .tbss,\awT\,@nobits),
   ZeroFillDirective(0),
   AddressSize(4),
   NeedsSet(false),


Index: llvm/lib/Target/TargetSelectionDAG.td
diff -u llvm/lib/Target/TargetSelectionDAG.td:1.78 
llvm/lib/Target/TargetSelectionDAG.td:1.79
--- llvm/lib/Target/TargetSelectionDAG.td:1.78  Fri Jan 26 08:34:51 2007
+++ llvm/lib/Target/TargetSelectionDAG.td   Fri Apr 20 16:38:10 2007
@@ -211,6 +211,10 @@
 GlobalAddressSDNode;
 def tglobaladdr : SDNodeISD::TargetGlobalAddress,  SDTPtrLeaf, [],
  GlobalAddressSDNode;
+def globaltlsaddr : SDNodeISD::GlobalTLSAddress, SDTPtrLeaf, [],
+  GlobalAddressSDNode;
+def tglobaltlsaddr : SDNodeISD::TargetGlobalTLSAddress,  SDTPtrLeaf, [],
+   GlobalAddressSDNode;
 def constpool   : SDNodeISD::ConstantPool, SDTPtrLeaf, [],
  ConstantPoolSDNode;
 def tconstpool  : SDNodeISD::TargetConstantPool,   SDTPtrLeaf, [],



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


[llvm-commits] CVS: llvm/utils/TableGen/DAGISelEmitter.cpp

2007-04-20 Thread Lauro Ramos Venancio


Changes in directory llvm/utils/TableGen:

DAGISelEmitter.cpp updated: 1.292 - 1.293
---
Log message:

Implement general dynamic, initial exec and local exec TLS models for
X86 32 bits.


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

 DAGISelEmitter.cpp |7 +--
 1 files changed, 5 insertions(+), 2 deletions(-)


Index: llvm/utils/TableGen/DAGISelEmitter.cpp
diff -u llvm/utils/TableGen/DAGISelEmitter.cpp:1.292 
llvm/utils/TableGen/DAGISelEmitter.cpp:1.293
--- llvm/utils/TableGen/DAGISelEmitter.cpp:1.292Fri Jan 26 17:00:54 2007
+++ llvm/utils/TableGen/DAGISelEmitter.cpp  Fri Apr 20 16:38:10 2007
@@ -2654,10 +2654,12 @@
 } else {
   NodeOps.push_back(Val);
 }
-  } else if (!N-isLeaf()  N-getOperator()-getName() == tglobaladdr) 
{
+  } else if (!N-isLeaf()  (N-getOperator()-getName() == tglobaladdr
+ || N-getOperator()-getName() == tglobaltlsaddr)) {
 Record *Op = OperatorMap[N-getName()];
 // Transform GlobalAddress to TargetGlobalAddress
-if (Op  Op-getName() == globaladdr) {
+if (Op  (Op-getName() == globaladdr ||
+   Op-getName() == globaltlsaddr)) {
   emitCode(SDOperand Tmp + utostr(ResNo) +  = CurDAG-getTarget
GlobalAddress(castGlobalAddressSDNode( + Val +
)-getGlobal(),  + getEnumName(N-getTypeNum(0)) +
@@ -3716,6 +3718,7 @@
 case ISD::TargetConstantPool:\n
 case ISD::TargetFrameIndex:\n
 case ISD::TargetJumpTable:\n
+case ISD::TargetGlobalTLSAddress:\n
 case ISD::TargetGlobalAddress: {\n
   return NULL;\n
 }\n



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


[llvm-commits] CVS: llvm/lib/VMCore/Verifier.cpp

2007-04-20 Thread Chris Lattner


Changes in directory llvm/lib/VMCore:

Verifier.cpp updated: 1.203 - 1.204
---
Log message:

catch a case that was biting jeffc


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

 Verifier.cpp |8 +++-
 1 files changed, 7 insertions(+), 1 deletion(-)


Index: llvm/lib/VMCore/Verifier.cpp
diff -u llvm/lib/VMCore/Verifier.cpp:1.203 llvm/lib/VMCore/Verifier.cpp:1.204
--- llvm/lib/VMCore/Verifier.cpp:1.203  Tue Apr 17 12:36:12 2007
+++ llvm/lib/VMCore/Verifier.cppFri Apr 20 16:48:08 2007
@@ -867,12 +867,17 @@
   // taken.
   Assert1(!F-isIntrinsic() || (i == 0  isaCallInst(I)),
   Cannot take the address of an intrinsic!, I);
+  Assert1(F-getParent() == Mod, Referencing function in another module!,
+  I);
 } else if (BasicBlock *OpBB = dyn_castBasicBlock(I.getOperand(i))) {
   Assert1(OpBB-getParent() == BB-getParent(),
   Referring to a basic block in another function!, I);
 } else if (Argument *OpArg = dyn_castArgument(I.getOperand(i))) {
   Assert1(OpArg-getParent() == BB-getParent(),
   Referring to an argument in another function!, I);
+} else if (GlobalValue *GV = dyn_castGlobalValue(I.getOperand(i))) {
+  Assert1(GV-getParent() == Mod, Referencing global in another module!,
+  I);
 } else if (Instruction *Op = dyn_castInstruction(I.getOperand(i))) {
   BasicBlock *OpBlock = Op-getParent();
 
@@ -952,7 +957,8 @@
 ///
 void Verifier::visitIntrinsicFunctionCall(Intrinsic::ID ID, CallInst CI) {
   Function *IF = CI.getCalledFunction();
-  Assert1(IF-isDeclaration(), Intrinsic functions should never be defined!, 
IF);
+  Assert1(IF-isDeclaration(), Intrinsic functions should never be defined!,
+  IF);
   
 #define GET_INTRINSIC_VERIFIER
 #include llvm/Intrinsics.gen



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

2007-04-20 Thread Jeff Cohen


Changes in directory llvm/lib/Target/X86:

X86IntelAsmPrinter.cpp updated: 1.70 - 1.71
---
Log message:

Make Microsoft assembler and linker happy.

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

 X86IntelAsmPrinter.cpp |4 
 1 files changed, 4 insertions(+)


Index: llvm/lib/Target/X86/X86IntelAsmPrinter.cpp
diff -u llvm/lib/Target/X86/X86IntelAsmPrinter.cpp:1.70 
llvm/lib/Target/X86/X86IntelAsmPrinter.cpp:1.71
--- llvm/lib/Target/X86/X86IntelAsmPrinter.cpp:1.70 Tue Apr 17 12:21:52 2007
+++ llvm/lib/Target/X86/X86IntelAsmPrinter.cpp  Thu Apr 19 19:33:54 2007
@@ -355,6 +355,10 @@
   if (I-hasDLLImportLinkage()) {
 O  __imp_;
   }  
+  // Microsoft sticks an extra _ in front of _write (whether LLVM should
+  // hard-code usage of a Unix API is another question).
+  if (Name == _write)
+Name = __write;
   O  Name  :near\n;
 }
   



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


Re: [llvm-commits] CVS: llvm/lib/Target/X86/X86IntelAsmPrinter.cpp

2007-04-20 Thread Chris Lattner
This isn't the right place to do this.  Is LLVM synthesizing  
references to write?  Where is the reference coming from?

-Chris

On Apr 19, 2007, at 5:34 PM, Jeff Cohen wrote:



 Changes in directory llvm/lib/Target/X86:

 X86IntelAsmPrinter.cpp updated: 1.70 - 1.71
 ---
 Log message:

 Make Microsoft assembler and linker happy.

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

  X86IntelAsmPrinter.cpp |4 
  1 files changed, 4 insertions(+)


 Index: llvm/lib/Target/X86/X86IntelAsmPrinter.cpp
 diff -u llvm/lib/Target/X86/X86IntelAsmPrinter.cpp:1.70 llvm/lib/ 
 Target/X86/X86IntelAsmPrinter.cpp:1.71
 --- llvm/lib/Target/X86/X86IntelAsmPrinter.cpp:1.70   Tue Apr 17  
 12:21:52 2007
 +++ llvm/lib/Target/X86/X86IntelAsmPrinter.cppThu Apr 19 19:33:54  
 2007
 @@ -355,6 +355,10 @@
if (I-hasDLLImportLinkage()) {
  O  __imp_;
}
 +  // Microsoft sticks an extra _ in front of _write (whether  
 LLVM should
 +  // hard-code usage of a Unix API is another question).
 +  if (Name == _write)
 +Name = __write;
O  Name  :near\n;
  }




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

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


Re: [llvm-commits] CVS: llvm/include/llvm/Analysis/Dominators.h

2007-04-20 Thread Chris Lattner
/// Return the immediate dominator of A.
 -  BasicBlock *getIDom(BasicBlock *A) {
 +  BasicBlock *getIDom(BasicBlock *A) const {
 +if (!A) return 0;
 +
  ETNode *NodeA = getNode(A);

A can't be null here, please check that NodeA isn't null instead  
(i.e. that A is reachable).

-Chris

  const ETNode *idom = NodeA-getFather();
  return idom ? idom-getDataBasicBlock() : 0;
}

 -  void getChildren(BasicBlock *A, std::vectorBasicBlock*  
 children) {
 +  void getChildren(BasicBlock *A, std::vectorBasicBlock*  
 children) const {
 +if (!A) return;
  ETNode *NodeA = getNode(A);
  const ETNode* son = NodeA-getSon();




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

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


Re: [llvm-commits] CVS: llvm/lib/Target/X86/X86IntelAsmPrinter.cpp

2007-04-20 Thread Jeff Cohen

Chris Lattner wrote:
This isn't the right place to do this.  Is LLVM synthesizing  
references to write?  Where is the reference coming from?


-Chris
  


Transforms\Utils\LowerInvoke.cpp, line 152
Analysis\IPA\Andersens.cpp line 617

Yeah, I was afraid of that, but I'm just trying to get it to work at 
this point (at least code that doesn't actually call write() ).  It's 
also synthesizing references to abort() as well.



On Apr 19, 2007, at 5:34 PM, Jeff Cohen wrote:

  

Changes in directory llvm/lib/Target/X86:

X86IntelAsmPrinter.cpp updated: 1.70 - 1.71
---
Log message:

Make Microsoft assembler and linker happy.

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

 X86IntelAsmPrinter.cpp |4 
 1 files changed, 4 insertions(+)


Index: llvm/lib/Target/X86/X86IntelAsmPrinter.cpp
diff -u llvm/lib/Target/X86/X86IntelAsmPrinter.cpp:1.70 llvm/lib/ 
Target/X86/X86IntelAsmPrinter.cpp:1.71
--- llvm/lib/Target/X86/X86IntelAsmPrinter.cpp:1.70	Tue Apr 17  
12:21:52 2007
+++ llvm/lib/Target/X86/X86IntelAsmPrinter.cpp	Thu Apr 19 19:33:54  
2007

@@ -355,6 +355,10 @@
   if (I-hasDLLImportLinkage()) {
 O  __imp_;
   }
+  // Microsoft sticks an extra _ in front of _write (whether  
LLVM should

+  // hard-code usage of a Unix API is another question).
+  if (Name == _write)
+Name = __write;
   O  Name  :near\n;
 }




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



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



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


[llvm-commits] CVS: llvm/lib/Target/ARM/ARMRegisterInfo.cpp

2007-04-20 Thread Lauro Ramos Venancio


Changes in directory llvm/lib/Target/ARM:

ARMRegisterInfo.cpp updated: 1.86 - 1.87
---
Log message:

Fix a bug in getFrameRegister.
Reported by Raul Herbster.


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

 ARMRegisterInfo.cpp |5 -
 1 files changed, 4 insertions(+), 1 deletion(-)


Index: llvm/lib/Target/ARM/ARMRegisterInfo.cpp
diff -u llvm/lib/Target/ARM/ARMRegisterInfo.cpp:1.86 
llvm/lib/Target/ARM/ARMRegisterInfo.cpp:1.87
--- llvm/lib/Target/ARM/ARMRegisterInfo.cpp:1.86Mon Apr 16 13:10:22 2007
+++ llvm/lib/Target/ARM/ARMRegisterInfo.cpp Thu Apr 19 09:09:38 2007
@@ -1474,7 +1474,10 @@
 }
 
 unsigned ARMRegisterInfo::getFrameRegister(MachineFunction MF) const {
-  return STI.useThumbBacktraces() ? ARM::R7 : ARM::R11;
+  if (STI.isTargetDarwin() || hasFP(MF))
+return STI.useThumbBacktraces() ? ARM::R7 : ARM::R11;
+  else
+return ARM::SP;
 }
 
 unsigned ARMRegisterInfo::getEHExceptionRegister() const {



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


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

2007-04-20 Thread Chris Lattner


Changes in directory llvm/lib/Target:

TargetMachine.cpp updated: 1.61 - 1.62
---
Log message:

Fix a message, patch by Christopher Lamb.


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

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


Index: llvm/lib/Target/TargetMachine.cpp
diff -u llvm/lib/Target/TargetMachine.cpp:1.61 
llvm/lib/Target/TargetMachine.cpp:1.62
--- llvm/lib/Target/TargetMachine.cpp:1.61  Mon Jan 29 16:40:03 2007
+++ llvm/lib/Target/TargetMachine.cpp   Thu Apr 19 13:42:38 2007
@@ -93,7 +93,7 @@
   cl::optllvm::CodeModel::Model, true
   DefCodeModel(
 code-model,
-cl::desc(Choose relocation model),
+cl::desc(Choose code model),
 cl::location(CMModel),
 cl::init(CodeModel::Default),
 cl::values(



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


[llvm-commits] CVS: llvm-poolalloc/include/dsa/DSNode.h DataStructure.h

2007-04-20 Thread Andrew Lenharth


Changes in directory llvm-poolalloc/include/dsa:

DSNode.h updated: 1.62 - 1.63
DataStructure.h updated: 1.100 - 1.101
---
Log message:

First algorithmic change.

This is partially to make kernel work easier, and partially to make poolalloc
better.

All functions, even externals (but not intrinsics) get graphs.  Graphs for
externals are such that they cause similar behavior to what is happening now,
namely that the args are marked as external, and no type inference happens, etc.

Then, recognizing libc functions is split into its own pass.  A similar pass
could be written for any work involving a set of known externals (aka the 
llva linux kernel work).  Thus the core DSA only knows about what is in llvm
proper.  (there is some regressions here, I didn't carry all the libc stuff over
into the new pass).

This helps PA, since inlining during BU is just dependent on the completeness
of the function pointer, not on the completeness and having no externals around.
One of the major problems with PA, functionality wise, is hitting functions that
haven't been resolved.  Inlining earlier tends to put enough information in each
node that BU based transforms get things right more often.  Still some issues 
here.

As a bonus, special case logic gets removed from some passes.

Also, externals like qsort can have graphs fabricated for them that
reflect their calls back into the program.



---
Diffs of the changes:  (+35 -12)

 DSNode.h|4 
 DataStructure.h |   43 +++
 2 files changed, 35 insertions(+), 12 deletions(-)


Index: llvm-poolalloc/include/dsa/DSNode.h
diff -u llvm-poolalloc/include/dsa/DSNode.h:1.62 
llvm-poolalloc/include/dsa/DSNode.h:1.63
--- llvm-poolalloc/include/dsa/DSNode.h:1.62Tue Apr 17 18:41:06 2007
+++ llvm-poolalloc/include/dsa/DSNode.h Thu Apr 19 11:02:19 2007
@@ -337,6 +337,10 @@
   ///
   unsigned getNodeFlags() const { return NodeType  ~DeadNode; }
 
+  /// clearNodeFlags - Useful for completely resetting a node, 
+  /// used in external recognizers
+  DSNode* clearNodeFlags() { NodeType = 0; return this; }
+
   bool isAllocaNode() const { return NodeType  AllocaNode;}
   bool isHeapNode()   const { return NodeType  HeapNode;  }
   bool isGlobalNode() const { return NodeType  GlobalNode;}


Index: llvm-poolalloc/include/dsa/DataStructure.h
diff -u llvm-poolalloc/include/dsa/DataStructure.h:1.100 
llvm-poolalloc/include/dsa/DataStructure.h:1.101
--- llvm-poolalloc/include/dsa/DataStructure.h:1.100Wed Apr 11 12:37:43 2007
+++ llvm-poolalloc/include/dsa/DataStructure.h  Thu Apr 19 11:02:19 2007
@@ -76,6 +76,8 @@
 
   void formGlobalECs();
 
+  DataStructures() :TD(0), GraphSource(0), GlobalsGraph(0) {}
+
 public:
 
   bool hasGraph(const Function F) const {
@@ -114,6 +116,7 @@
 //
 class LocalDataStructures : public DataStructures {
 public:
+  LocalDataStructures() :DataStructures() {}
   ~LocalDataStructures() { releaseMemory(); }
 
   virtual bool runOnModule(Module M);
@@ -135,6 +138,31 @@
   }
 };
 
+// StdLibDataStructures - This analysis recognizes common standard c library
+// functions and generates graphs for them.
+class StdLibDataStructures : public DataStructures {
+public:
+  StdLibDataStructures() :DataStructures() {}
+  ~StdLibDataStructures() { releaseMemory(); }
+
+  virtual bool runOnModule(Module M);
+
+  /// print - Print out the analysis results...
+  ///
+  void print(std::ostream O, const Module *M) const;
+
+  /// releaseMemory - if the pass pipeline is done with this pass, we can
+  /// release our memory...
+  ///
+  virtual void releaseMemory();
+
+  /// getAnalysisUsage - This obviously provides a data structure graph.
+  ///
+  virtual void getAnalysisUsage(AnalysisUsage AU) const {
+AU.setPreservesAll();
+AU.addRequiredLocalDataStructures();
+  }
+};
 
 /// BUDataStructures - The analysis that computes the interprocedurally closed
 /// data structure graphs for all of the functions in the program.  This pass
@@ -149,6 +177,7 @@
std::pairDSGraph*, std::vectorDSNodeHandle   *IndCallGraphMap;
 
 public:
+  BUDataStructures() : DataStructures() {}
   ~BUDataStructures() { releaseMyMemory(); }
 
   virtual bool runOnModule(Module M);
@@ -170,7 +199,7 @@
 
   virtual void getAnalysisUsage(AnalysisUsage AU) const {
 AU.setPreservesAll();
-AU.addRequiredLocalDataStructures();
+AU.addRequiredStdLibDataStructures();
   }
 
   typedef std::setstd::pairInstruction*, Function*  ActualCalleesTy;
@@ -232,20 +261,11 @@
   std::mapstd::vectorFunction*, DSGraph* IndCallMap;
 
 public:
+  TDDataStructures() :DataStructures() {}
   ~TDDataStructures() { releaseMyMemory(); }
 
   virtual bool runOnModule(Module M);
 
-  /// getDSGraph - Return the data structure graph for the specified function.
-  ///
-  DSGraph getDSGraph(const Function F) const {
-hash_mapFunction*, DSGraph*::const_iterator I =
-  DSInfo.find(const_castFunction*(F));
-if (I != 

[llvm-commits] CVS: llvm/utils/TableGen/RegisterInfoEmitter.cpp

2007-04-20 Thread Evan Cheng


Changes in directory llvm/utils/TableGen:

RegisterInfoEmitter.cpp updated: 1.50 - 1.51
---
Log message:

Add sub-registers sets.

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

 RegisterInfoEmitter.cpp |   67 +++-
 1 files changed, 61 insertions(+), 6 deletions(-)


Index: llvm/utils/TableGen/RegisterInfoEmitter.cpp
diff -u llvm/utils/TableGen/RegisterInfoEmitter.cpp:1.50 
llvm/utils/TableGen/RegisterInfoEmitter.cpp:1.51
--- llvm/utils/TableGen/RegisterInfoEmitter.cpp:1.50Sun Feb 25 21:34:38 2007
+++ llvm/utils/TableGen/RegisterInfoEmitter.cpp Fri Apr 20 16:12:49 2007
@@ -107,6 +107,27 @@
   return true;
 }
 
+static void addSubReg(Record *R, Record *S,
+  std::mapRecord*, std::setRecord*  SubRegs,
+  std::mapRecord*, std::setRecord*  Aliases,
+  RegisterInfoEmitter RIE) {
+  if (R == S) {
+cerr  Error: recursive sub-register relationship between
+   register   RIE.getQualifiedName(R)
+   and its sub-registers?\n;
+abort();
+  }
+
+  if (!SubRegs[R].insert(S).second)
+return;
+  Aliases[R].insert(S);
+  Aliases[S].insert(R);
+  if (SubRegs.count(S))
+for (std::setRecord*::iterator I = SubRegs[S].begin(),
+   E = SubRegs[S].end(); I != E; ++I)
+  addSubReg(R, *I, SubRegs, Aliases, RIE);
+}
+
 // RegisterInfoEmitter::run - Main register file description emitter.
 //
 void RegisterInfoEmitter::run(std::ostream OS) {
@@ -273,7 +294,8 @@
 RegClass,\n;
   OS};\n;
 
-  // Emit register class aliases...
+  // Emit register sub-registers / aliases...
+  std::mapRecord*, std::setRecord*  RegisterSubRegs;
   std::mapRecord*, std::setRecord*  RegisterAliases;
   const std::vectorCodeGenRegister Regs = Target.getRegisters();
 
@@ -298,6 +320,20 @@
 }
   }
 
+  for (unsigned i = 0, e = Regs.size(); i != e; ++i) {
+Record *R = Regs[i].TheDef;
+std::vectorRecord* LI = Regs[i].TheDef-getValueAsListOfDefs(SubRegs);
+// Process sub-register set and add aliases information.
+for (unsigned j = 0, e = LI.size(); j != e; ++j) {
+  Record *SubReg = LI[j];
+  if (RegisterSubRegs[R].count(SubReg))
+cerr  Warning: register   getQualifiedName(SubReg)
+   specified as a sub-register of   getQualifiedName(R)
+   multiple times!\n;
+  addSubReg(R, SubReg, RegisterSubRegs, RegisterAliases, *this);
+}
+  }
+
   if (!RegisterAliases.empty())
 OS  \n\n  // Register Alias Sets...\n;
 
@@ -314,12 +350,27 @@
 OS  0 };\n;
   }
 
+  if (!RegisterSubRegs.empty())
+OS  \n\n  // Register Sub-registers Sets...\n;
+
+  // Emit the empty sub-registers list
+  OSconst unsigned Empty_SubRegsSet[] = { 0 };\n;
+  // Loop over all of the registers which have sub-registers, emitting the
+  // sub-registers list to memory.
+  for (std::mapRecord*, std::setRecord* ::iterator
+ I = RegisterSubRegs.begin(), E = RegisterSubRegs.end(); I != E; ++I) {
+OSconst unsigned   I-first-getName()  _SubRegsSet[] = { ;
+for (std::setRecord*::iterator ASI = I-second.begin(),
+   E = I-second.end(); ASI != E; ++ASI)
+  OS  getQualifiedName(*ASI)  , ;
+OS  0 };\n;
+  }
   OS\n  const TargetRegisterDesc RegisterDescriptors[] = { // 
Descriptors\n;
-  OS  { \NOREG\,\t0 },\n;
+  OS  { \NOREG\,\t0,\t0 },\n;
 
 
-  // Now that register alias sets have been emitted, emit the register
-  // descriptors now.
+  // Now that register alias and sub-registers sets have been emitted, emit the
+  // register descriptors now.
   const std::vectorCodeGenRegister Registers = Target.getRegisters();
   for (unsigned i = 0, e = Registers.size(); i != e; ++i) {
 const CodeGenRegister Reg = Registers[i];
@@ -330,9 +381,13 @@
   OS  Reg.getName();
 OS  \,\t;
 if (RegisterAliases.count(Reg.TheDef))
-  OS  Reg.getName()  _AliasSet },\n;
+  OS  Reg.getName()  _AliasSet,\t;
+else
+  OS  Empty_AliasSet,\t;
+if (RegisterSubRegs.count(Reg.TheDef))
+  OS  Reg.getName()  _SubRegsSet },\n;
 else
-  OS  Empty_AliasSet },\n;
+  OS  Empty_SubRegsSet },\n;
   }
   OS};\n;  // End of register descriptors...
   OS  }\n\n;   // End of anonymous namespace...



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


Re: [llvm-commits] CVS: llvm/lib/Target/X86/X86IntelAsmPrinter.cpp

2007-04-20 Thread Chris Lattner
On Apr 20, 2007, at 3:01 PM, Jeff Cohen wrote:
 Chris Lattner wrote:
 This isn't the right place to do this. Is LLVM synthesizing  
 references to write? Where is the reference coming from? -Chris

 Analysis\IPA\Andersens.cpp line 617

This code is research quality anyway, I wouldn't worry about it.

 Transforms\Utils\LowerInvoke.cpp, line 152

Interesting.  I'd be fine with just removing the calls to write, this  
code is going away in the next month or two anyway.  I'd rather  
remove the nice message than have code in the asmprinter to munge  
the name.

 Yeah, I was afraid of that, but I'm just trying to get it to work  
 at this point (at least code that doesn't actually call write() ).   
 It's also synthesizing references to abort() as well.

Sure, but finding the right solution is still important :).  Please  
remove the asmprinter code and remove the write stuff from  
lowerinvoke, and I think we're good,

Thanks Jeff!

-Chris

 On Apr 19, 2007, at 5:34 PM, Jeff Cohen wrote:
 Changes in directory llvm/lib/Target/X86: X86IntelAsmPrinter.cpp  
 updated: 1.70 - 1.71 --- Log message: Make Microsoft assembler  
 and linker happy. --- Diffs of the changes: (+4 -0)  
 X86IntelAsmPrinter.cpp | 4  1 files changed, 4 insertions(+)  
 Index: llvm/lib/Target/X86/X86IntelAsmPrinter.cpp diff -u llvm/ 
 lib/Target/X86/X86IntelAsmPrinter.cpp:1.70 llvm/lib/ Target/X86/ 
 X86IntelAsmPrinter.cpp:1.71 --- llvm/lib/Target/X86/ 
 X86IntelAsmPrinter.cpp:1.70 Tue Apr 17 12:21:52 2007 +++ llvm/lib/ 
 Target/X86/X86IntelAsmPrinter.cpp   Thu Apr 19 19:33:54 2007 @@  
 -355,6 +355,10 @@ if (I-hasDLLImportLinkage()) { O   
 __imp_; } + // Microsoft sticks an extra _ in front of  
 _write (whether LLVM should + // hard-code usage of a Unix API  
 is another question). + if (Name == _write) + Name = __write;  
 O  Name  :near\n; }  
 ___ llvm-commits  
 mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/ 
 mailman/listinfo/llvm-commits
 ___ llvm-commits  
 mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/ 
 mailman/listinfo/llvm-commits
 ___
 llvm-commits mailing list
 llvm-commits@cs.uiuc.edu
 http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits

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


[llvm-commits] CVS: llvm/lib/VMCore/Type.cpp

2007-04-20 Thread Chris Lattner


Changes in directory llvm/lib/VMCore:

Type.cpp updated: 1.183 - 1.184
---
Log message:

Fix a problem where primitive types lose their name after llvm_shutdown is 
called.
This also reduces the amount of work done at static construction time.


---
Diffs of the changes:  (+16 -12)

 Type.cpp |   28 
 1 files changed, 16 insertions(+), 12 deletions(-)


Index: llvm/lib/VMCore/Type.cpp
diff -u llvm/lib/VMCore/Type.cpp:1.183 llvm/lib/VMCore/Type.cpp:1.184
--- llvm/lib/VMCore/Type.cpp:1.183  Mon Apr 16 22:26:42 2007
+++ llvm/lib/VMCore/Type.cppFri Apr 20 17:33:47 2007
@@ -63,13 +63,6 @@
 static ManagedStaticstd::mapconst Type*,
   std::string  AbstractTypeDescriptions;
 
-Type::Type(const char *Name, TypeID id)
-  : ID(id), Abstract(false),  SubclassData(0), RefCount(0), ForwardType(0),
-NumContainedTys(0),  ContainedTys(0) {
-  assert(Name  Name[0]  Should use other ctor if no name!);
-  (*ConcreteTypeDescriptions)[this] = Name;
-}
-
 /// Because of the way Type subclasses are allocated, this function is 
necessary
 /// to use the correct kind of delete operator to deallocate the Type object.
 /// Some type objects (FunctionTy, StructTy) allocate additional space after 
@@ -250,7 +243,18 @@
   if (!Ty-isAbstract()) {   // Base case for the recursion
 std::mapconst Type*, std::string::iterator I =
   ConcreteTypeDescriptions-find(Ty);
-if (I != ConcreteTypeDescriptions-end()) return I-second;
+if (I != ConcreteTypeDescriptions-end()) 
+  return I-second;
+
+if (Ty-isPrimitiveType()) {
+  switch (Ty-getTypeID()) {
+  default: assert(0  Unknown prim type!);
+  case Type::VoidTyID:   return (*ConcreteTypeDescriptions)[Ty] = void;
+  case Type::FloatTyID:  return (*ConcreteTypeDescriptions)[Ty] = float;
+  case Type::DoubleTyID: return (*ConcreteTypeDescriptions)[Ty] = double;
+  case Type::LabelTyID:  return (*ConcreteTypeDescriptions)[Ty] = label;
+  }
+}
   }
 
   // Check to see if the Type is already on the stack...
@@ -391,10 +395,10 @@
 //  Primitive 'Type' data
 
//===--===//
 
-const Type *Type::VoidTy   = new Type(void, Type::VoidTyID);
-const Type *Type::FloatTy  = new Type(float, Type::FloatTyID);
-const Type *Type::DoubleTy = new Type(double, Type::DoubleTyID);
-const Type *Type::LabelTy  = new Type(label, Type::LabelTyID);
+const Type *Type::VoidTy   = new Type(Type::VoidTyID);
+const Type *Type::FloatTy  = new Type(Type::FloatTyID);
+const Type *Type::DoubleTy = new Type(Type::DoubleTyID);
+const Type *Type::LabelTy  = new Type(Type::LabelTyID);
 
 namespace {
   struct BuiltinIntegerType : public IntegerType {



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


[llvm-commits] CVS: llvm/include/llvm/Type.h

2007-04-20 Thread Chris Lattner


Changes in directory llvm/include/llvm:

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

Fix a problem where primitive types lose their name after llvm_shutdown is 
called.
This also reduces the amount of work done at static construction time.


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

 Type.h |1 -
 1 files changed, 1 deletion(-)


Index: llvm/include/llvm/Type.h
diff -u llvm/include/llvm/Type.h:1.106 llvm/include/llvm/Type.h:1.107
--- llvm/include/llvm/Type.h:1.106  Thu Apr  5 21:02:19 2007
+++ llvm/include/llvm/Type.hFri Apr 20 17:33:47 2007
@@ -107,7 +107,6 @@
   void destroy() const; // const is a lie, this does delete this!
 
 protected:
-  Type(const char *Name, TypeID id);
   explicit Type(TypeID id) : ID(id), Abstract(false), SubclassData(0),
  RefCount(0), ForwardType(0), NumContainedTys(0),
  ContainedTys(0) {}



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


[llvm-commits] CVS: llvm/lib/Transforms/Utils/LowerInvoke.cpp

2007-04-20 Thread Jeff Cohen


Changes in directory llvm/lib/Transforms/Utils:

LowerInvoke.cpp updated: 1.58 - 1.59
---
Log message:

Comment out usage of write() for now.

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

 LowerInvoke.cpp |6 ++
 1 files changed, 6 insertions(+)


Index: llvm/lib/Transforms/Utils/LowerInvoke.cpp
diff -u llvm/lib/Transforms/Utils/LowerInvoke.cpp:1.58 
llvm/lib/Transforms/Utils/LowerInvoke.cpp:1.59
--- llvm/lib/Transforms/Utils/LowerInvoke.cpp:1.58  Mon Apr 16 13:10:23 2007
+++ llvm/lib/Transforms/Utils/LowerInvoke.cpp   Fri Apr 20 17:40:10 2007
@@ -149,8 +149,12 @@
 
   // We need the 'write' and 'abort' functions for both models.
   AbortFn = M.getOrInsertFunction(abort, Type::VoidTy, (Type *)0);
+#if 0 // write is Unix-specific.. code is going away soon anyway.
   WriteFn = M.getOrInsertFunction(write, Type::VoidTy, Type::Int32Ty,
   VoidPtrTy, Type::Int32Ty, (Type *)0);
+#else
+  WriteFn = 0;
+#endif
   return true;
 }
 
@@ -185,6 +189,7 @@
 
 
 void LowerInvoke::writeAbortMessage(Instruction *IB) {
+#if 0
   if (AbortMessage == 0)
 createAbortMessage(IB-getParent()-getParent()-getParent());
 
@@ -194,6 +199,7 @@
   Args[1] = AbortMessage;
   Args[2] = ConstantInt::get(Type::Int32Ty, AbortMessageLength);
   (new CallInst(WriteFn, Args, 3, , IB))-setTailCall();
+#endif
 }
 
 bool LowerInvoke::insertCheapEHSupport(Function F) {



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


[llvm-commits] CVS: llvm/lib/ExecutionEngine/JIT/JIT.cpp JIT.h

2007-04-20 Thread Chris Lattner


Changes in directory llvm/lib/ExecutionEngine/JIT:

JIT.cpp updated: 1.94 - 1.95
JIT.h updated: 1.31 - 1.32
---
Log message:

rename JIT::state - JIT::jitstate to avoid shadowing ExecutionEngine::state


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

 JIT.cpp |   14 +++---
 JIT.h   |2 +-
 2 files changed, 8 insertions(+), 8 deletions(-)


Index: llvm/lib/ExecutionEngine/JIT/JIT.cpp
diff -u llvm/lib/ExecutionEngine/JIT/JIT.cpp:1.94 
llvm/lib/ExecutionEngine/JIT/JIT.cpp:1.95
--- llvm/lib/ExecutionEngine/JIT/JIT.cpp:1.94   Mon Mar  5 21:11:31 2007
+++ llvm/lib/ExecutionEngine/JIT/JIT.cppFri Apr 20 17:40:05 2007
@@ -50,7 +50,7 @@
 }
 
 JIT::JIT(ModuleProvider *MP, TargetMachine tm, TargetJITInfo tji)
-  : ExecutionEngine(MP), TM(tm), TJI(tji), state(MP) {
+  : ExecutionEngine(MP), TM(tm), TJI(tji), jitstate(MP) {
   setTargetData(TM.getTargetData());
 
   // Initialize MCE
@@ -58,7 +58,7 @@
 
   // Add target data
   MutexGuard locked(lock);
-  FunctionPassManager PM = state.getPM(locked);
+  FunctionPassManager PM = jitstate.getPM(locked);
   PM.add(new TargetData(*TM.getTargetData()));
 
   // Turn the machine code intermediate representation into bytes in memory 
that
@@ -235,15 +235,15 @@
 
   // JIT the function
   isAlreadyCodeGenerating = true;
-  state.getPM(locked).run(*F);
+  jitstate.getPM(locked).run(*F);
   isAlreadyCodeGenerating = false;
 
   // If the function referred to a global variable that had not yet been
   // emitted, it allocates memory for the global, but doesn't emit it yet.  
Emit
   // all of these globals now.
-  while (!state.getPendingGlobals(locked).empty()) {
-const GlobalVariable *GV = state.getPendingGlobals(locked).back();
-state.getPendingGlobals(locked).pop_back();
+  while (!jitstate.getPendingGlobals(locked).empty()) {
+const GlobalVariable *GV = jitstate.getPendingGlobals(locked).back();
+jitstate.getPendingGlobals(locked).pop_back();
 EmitGlobalVariable(GV);
   }
 }
@@ -335,7 +335,7 @@
   unsigned MisAligned = ((intptr_t)Ptr  (A-1));
   Ptr = (char*)Ptr + (MisAligned ? (A-MisAligned) : 0);
 }
-state.getPendingGlobals(locked).push_back(GV);
+jitstate.getPendingGlobals(locked).push_back(GV);
   }
   addGlobalMapping(GV, Ptr);
   return Ptr;


Index: llvm/lib/ExecutionEngine/JIT/JIT.h
diff -u llvm/lib/ExecutionEngine/JIT/JIT.h:1.31 
llvm/lib/ExecutionEngine/JIT/JIT.h:1.32
--- llvm/lib/ExecutionEngine/JIT/JIT.h:1.31 Sat Mar  3 12:19:18 2007
+++ llvm/lib/ExecutionEngine/JIT/JIT.h  Fri Apr 20 17:40:05 2007
@@ -54,7 +54,7 @@
   TargetJITInfo TJI;  // The JITInfo for the target we are compiling to
   MachineCodeEmitter *MCE; // MCE object
 
-  JITState state;
+  JITState jitstate;
 
   JIT(ModuleProvider *MP, TargetMachine tm, TargetJITInfo tji);
 public:



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

2007-04-20 Thread Jeff Cohen


Changes in directory llvm/lib/Target/X86:

X86IntelAsmPrinter.cpp updated: 1.71 - 1.72
---
Log message:

Comment out usage of write() for now.

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

 X86IntelAsmPrinter.cpp |4 
 1 files changed, 4 deletions(-)


Index: llvm/lib/Target/X86/X86IntelAsmPrinter.cpp
diff -u llvm/lib/Target/X86/X86IntelAsmPrinter.cpp:1.71 
llvm/lib/Target/X86/X86IntelAsmPrinter.cpp:1.72
--- llvm/lib/Target/X86/X86IntelAsmPrinter.cpp:1.71 Thu Apr 19 19:33:54 2007
+++ llvm/lib/Target/X86/X86IntelAsmPrinter.cpp  Fri Apr 20 17:40:10 2007
@@ -355,10 +355,6 @@
   if (I-hasDLLImportLinkage()) {
 O  __imp_;
   }  
-  // Microsoft sticks an extra _ in front of _write (whether LLVM should
-  // hard-code usage of a Unix API is another question).
-  if (Name == _write)
-Name = __write;
   O  Name  :near\n;
 }
   



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


[llvm-commits] CVS: llvm/lib/ExecutionEngine/JIT/JIT.h

2007-04-20 Thread Chris Lattner


Changes in directory llvm/lib/ExecutionEngine/JIT:

JIT.h updated: 1.32 - 1.33
---
Log message:

fit in 80 cols


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

 JIT.h |4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)


Index: llvm/lib/ExecutionEngine/JIT/JIT.h
diff -u llvm/lib/ExecutionEngine/JIT/JIT.h:1.32 
llvm/lib/ExecutionEngine/JIT/JIT.h:1.33
--- llvm/lib/ExecutionEngine/JIT/JIT.h:1.32 Fri Apr 20 17:40:05 2007
+++ llvm/lib/ExecutionEngine/JIT/JIT.h  Fri Apr 20 17:40:40 2007
@@ -39,11 +39,11 @@
 public:
   JITState(ModuleProvider *MP) : PM(MP) {}
 
-  FunctionPassManager getPM(const MutexGuard locked) {
+  FunctionPassManager getPM(const MutexGuard L) {
 return PM;
   }
 
-  std::vectorconst GlobalVariable* getPendingGlobals(const MutexGuard 
locked) {
+  std::vectorconst GlobalVariable* getPendingGlobals(const MutexGuard L) {
 return PendingGlobals;
   }
 };



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


Re: [llvm-commits] CVS: llvm/lib/Target/X86/X86IntelAsmPrinter.cpp

2007-04-20 Thread Chris Lattner
 Comment out usage of write() for now.

Thanks Jeff!

-Chris

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

  X86IntelAsmPrinter.cpp |4 
  1 files changed, 4 deletions(-)


 Index: llvm/lib/Target/X86/X86IntelAsmPrinter.cpp
 diff -u llvm/lib/Target/X86/X86IntelAsmPrinter.cpp:1.71 llvm/lib/ 
 Target/X86/X86IntelAsmPrinter.cpp:1.72
 --- llvm/lib/Target/X86/X86IntelAsmPrinter.cpp:1.71   Thu Apr 19  
 19:33:54 2007
 +++ llvm/lib/Target/X86/X86IntelAsmPrinter.cppFri Apr 20 17:40:10  
 2007
 @@ -355,10 +355,6 @@
if (I-hasDLLImportLinkage()) {
  O  __imp_;
}
 -  // Microsoft sticks an extra _ in front of _write (whether  
 LLVM should
 -  // hard-code usage of a Unix API is another question).
 -  if (Name == _write)
 -Name = __write;
O  Name  :near\n;
  }




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

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


[llvm-commits] CVS: llvm/lib/ExecutionEngine/JIT/TargetSelect.cpp

2007-04-20 Thread Chris Lattner


Changes in directory llvm/lib/ExecutionEngine/JIT:

TargetSelect.cpp updated: 1.14 - 1.15
---
Log message:

avoid mutating a global in an accessor


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

 TargetSelect.cpp |   11 ++-
 1 files changed, 6 insertions(+), 5 deletions(-)


Index: llvm/lib/ExecutionEngine/JIT/TargetSelect.cpp
diff -u llvm/lib/ExecutionEngine/JIT/TargetSelect.cpp:1.14 
llvm/lib/ExecutionEngine/JIT/TargetSelect.cpp:1.15
--- llvm/lib/ExecutionEngine/JIT/TargetSelect.cpp:1.14  Sat Mar  3 12:19:18 2007
+++ llvm/lib/ExecutionEngine/JIT/TargetSelect.cpp   Fri Apr 20 17:57:20 2007
@@ -39,15 +39,16 @@
 /// for the current target.  Otherwise, return null.
 ///
 ExecutionEngine *JIT::create(ModuleProvider *MP, std::string *ErrorStr) {
-  if (MArch == 0) {
+  const TargetMachineRegistry::Entry *TheArch = MArch;
+  if (TheArch == 0) {
 std::string Error;
-MArch = TargetMachineRegistry::getClosestTargetForJIT(Error);
-if (MArch == 0) {
+TheArch = TargetMachineRegistry::getClosestTargetForJIT(Error);
+if (TheArch == 0) {
   if (ErrorStr)
 *ErrorStr = Error;
   return 0;
 }
-  } else if (MArch-JITMatchQualityFn() == 0) {
+  } else if (TheArch-JITMatchQualityFn() == 0) {
 cerr  WARNING: This target JIT is not designed for the host you are
running.  If bad things happen, please choose a different 
   -march switch.\n;
@@ -64,7 +65,7 @@
   }
 
   // Allocate a target...
-  TargetMachine *Target = MArch-CtorFn(*MP-getModule(), FeaturesStr);
+  TargetMachine *Target = TheArch-CtorFn(*MP-getModule(), FeaturesStr);
   assert(Target  Could not allocate target machine!);
 
   // If the target supports JIT code generation, return a new JIT now.



___
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-04-20 Thread Lauro Ramos Venancio


Changes in directory llvm/lib/CodeGen/SelectionDAG:

LegalizeDAG.cpp updated: 1.487 - 1.488
---
Log message:

Allow the lowering of ISD::GLOBAL_OFFSET_TABLE.


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

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


Index: llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
diff -u llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp:1.487 
llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp:1.488
--- llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp:1.487 Fri Apr 20 16:38:10 2007
+++ llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp   Fri Apr 20 18:02:39 2007
@@ -628,7 +628,6 @@
   case ISD::SRCVALUE:
   case ISD::STRING:
   case ISD::CONDCODE:
-  case ISD::GLOBAL_OFFSET_TABLE:
 // Primitives must all be legal.
 assert(TLI.isOperationLegal(Node-getValueType(0), Node-getValueType(0)) 

This must be legal!);
@@ -653,6 +652,7 @@
 #endif
 assert(0  Do not know how to legalize this operator!);
 abort();
+  case ISD::GLOBAL_OFFSET_TABLE:
   case ISD::GlobalAddress:
   case ISD::GlobalTLSAddress:
   case ISD::ExternalSymbol:



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


[llvm-commits] CVS: llvm-www/SVNMigration.html

2007-04-20 Thread Reid Spencer


Changes in directory llvm-www:

SVNMigration.html updated: 1.8 - 1.9
---
Log message:

Define schedule, update status.


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

 SVNMigration.html |   28 +++-
 1 files changed, 23 insertions(+), 5 deletions(-)


Index: llvm-www/SVNMigration.html
diff -u llvm-www/SVNMigration.html:1.8 llvm-www/SVNMigration.html:1.9
--- llvm-www/SVNMigration.html:1.8  Sat Apr  7 16:19:10 2007
+++ llvm-www/SVNMigration.html  Fri Apr 20 18:26:14 2007
@@ -1,9 +1,27 @@
 !--#include virtual=header.incl --
 !-- *** 
--
-div class=www_sectiontitleSubversion Migration Notes/div
+div class=www_sectiontitleSubversion Migration/div
 div class=www_text
   pThis document contains notes about the planned migration of the CVS code
   repository to Subversion./p
+/div
+
+div class=www_subsectionSchedule/div
+div class=www_text
+  pbWhen/b: June 5, 2007/p
+  pbOutage Duration/b: Approximately 4 hours. During this perdiod CVS
+  access will be unavailable as the repository is converted to Subversion
+  format. When the conversion is completed, Subversion access will be
+  enabled./p
+  pbFallback Policy/b: If the conversion cannot be completed successfully
+  in 4 hours, we will turn CVS access back on and try again at a later 
date./p
+/div
+
+div class=www_subsectionNotes/div
+div class=www_text
+  pbStatus as of 2007-04-20/bbr/We have successfully migrated all the
+  sub-projects targeted for conversion over the UIUC internal network. The
+  conversion can happen. Conversion notice email should be sent soon./p
   pbStatus as of 2007-04-07/bbr/All the technology is in place for the
   migration to occur. We are now only waiting for TSG to install the 
   authentication tokens so that existing commit users will be granted 
@@ -27,7 +45,7 @@
 /div
 
 !-- *** 
--
-div class=www_sectiontitlea name=branchesRenaming/a/div
+div class=www_subsectiona name=branchesRenaming/a/div
 div class=www_text
   pSince everything will be in one SVN repository, we thought we'd take this
   opportunity to rename some top level directories to reduce redundancy. This
@@ -59,7 +77,7 @@
 /div
 
 !-- *** 
--
-div class=www_sectiontitlea name=branchesBranch Status/a/div
+div class=www_subsectiona name=branchesBranch Status/a/div
 div class=www_text
   pThe existing branches have been categorized as shown in the table below. 
If
   a branch is scheduled to be removed and you need it, please let 
@@ -114,7 +132,7 @@
 /div
 
 !-- *** 
--
-div class=www_sectiontitlea name=tagsTag Status/a/div
+div class=www_subsectiona name=tagsTag Status/a/div
 div class=www_text
   pBelow are some tables of tag names to be kept or removed when the 
migration
   occurs./p
@@ -166,6 +184,6 @@
   src=http://jigsaw.w3.org/css-validator/images/vcss; alt=Valid CSS!/a
   a href=http://validator.w3.org/check/referer;img
   src=http://www.w3.org/Icons/valid-html401; alt=Valid HTML 4.01!/a
-br/Last modified: $Date: 2007/04/07 21:19:10 $
+br/Last modified: $Date: 2007/04/20 23:26:14 $
 /address
 !--#include virtual=footer.incl --



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


[llvm-commits] CVS: llvm-www/SVNMigration.html

2007-04-20 Thread Reid Spencer


Changes in directory llvm-www:

SVNMigration.html updated: 1.9 - 1.10
---
Log message:

Add the SVN version.


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

 SVNMigration.html |3 ++-
 1 files changed, 2 insertions(+), 1 deletion(-)


Index: llvm-www/SVNMigration.html
diff -u llvm-www/SVNMigration.html:1.9 llvm-www/SVNMigration.html:1.10
--- llvm-www/SVNMigration.html:1.9  Fri Apr 20 18:26:14 2007
+++ llvm-www/SVNMigration.html  Fri Apr 20 18:31:12 2007
@@ -15,6 +15,7 @@
   enabled./p
   pbFallback Policy/b: If the conversion cannot be completed successfully
   in 4 hours, we will turn CVS access back on and try again at a later 
date./p
+  pbSubversion Version:/b 1.4.3/p
 /div
 
 div class=www_subsectionNotes/div
@@ -184,6 +185,6 @@
   src=http://jigsaw.w3.org/css-validator/images/vcss; alt=Valid CSS!/a
   a href=http://validator.w3.org/check/referer;img
   src=http://www.w3.org/Icons/valid-html401; alt=Valid HTML 4.01!/a
-br/Last modified: $Date: 2007/04/20 23:26:14 $
+br/Last modified: $Date: 2007/04/20 23:31:12 $
 /address
 !--#include virtual=footer.incl --



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


[llvm-commits] CVS: llvm/lib/VMCore/Pass.cpp

2007-04-20 Thread Chris Lattner


Changes in directory llvm/lib/VMCore:

Pass.cpp updated: 1.85 - 1.86
---
Log message:

Fix a bug that prevented the JIT from working correctly after llvm_shutdown.
Pass info objects are initialized by static ctors, so deleting them at
llvm_shutdown time prevents resurrection from working.


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

 Pass.cpp |   22 --
 1 files changed, 16 insertions(+), 6 deletions(-)


Index: llvm/lib/VMCore/Pass.cpp
diff -u llvm/lib/VMCore/Pass.cpp:1.85 llvm/lib/VMCore/Pass.cpp:1.86
--- llvm/lib/VMCore/Pass.cpp:1.85   Sun Mar  4 18:00:42 2007
+++ llvm/lib/VMCore/Pass.cppFri Apr 20 19:12:18 2007
@@ -189,9 +189,19 @@
 };
 }
 
-static ManagedStaticPassRegistrar PassRegistrarObj;
 static std::vectorPassRegistrationListener* *Listeners = 0;
 
+// FIXME: This should use ManagedStatic to manage the pass registrar.
+// Unfortunately, we can't do this, because passes are registered with static
+// ctors, and having llvm_shutdown clear this map prevents successful
+// ressurection after llvm_shutdown is run.
+static PassRegistrar *getPassRegistrar() {
+  static PassRegistrar *PassRegistrarObj = 0;
+  if (!PassRegistrarObj)
+PassRegistrarObj = new PassRegistrar();
+  return PassRegistrarObj;
+}
+
 // getPassInfo - Return the PassInfo data structure that corresponds to this
 // pass...
 const PassInfo *Pass::getPassInfo() const {
@@ -200,11 +210,11 @@
 }
 
 const PassInfo *Pass::lookupPassInfo(const std::type_info TI) {
-  return PassRegistrarObj-GetPassInfo(TI);
+  return getPassRegistrar()-GetPassInfo(TI);
 }
 
 void RegisterPassBase::registerPass() {
-  PassRegistrarObj-RegisterPass(PIObj);
+  getPassRegistrar()-RegisterPass(PIObj);
 
   // Notify any listeners.
   if (Listeners)
@@ -214,7 +224,7 @@
 }
 
 void RegisterPassBase::unregisterPass() {
-  PassRegistrarObj-UnregisterPass(PIObj);
+  getPassRegistrar()-UnregisterPass(PIObj);
 }
 
 
//===--===//
@@ -247,7 +257,7 @@
 PassInfo *IIPI = const_castPassInfo*(ImplementationInfo);
 IIPI-addInterfaceImplemented(InterfaceInfo);
 
-PassRegistrarObj-RegisterAnalysisGroup(InterfaceInfo, IIPI, isDefault);
+getPassRegistrar()-RegisterAnalysisGroup(InterfaceInfo, IIPI, isDefault);
   }
 }
 
@@ -286,7 +296,7 @@
 // passEnumerate callback on each PassInfo object.
 //
 void PassRegistrationListener::enumeratePasses() {
-  PassRegistrarObj-EnumerateWith(this);
+  getPassRegistrar()-EnumerateWith(this);
 }
 
 
//===--===//



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


[llvm-commits] CVS: llvm/test/Analysis/Dominators/2007-04-20-PostDom-Reset.ll

2007-04-20 Thread Devang Patel


Changes in directory llvm/test/Analysis/Dominators:

2007-04-20-PostDom-Reset.ll added (r1.1)
---
Log message:

New test case.


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

 2007-04-20-PostDom-Reset.ll |   28 
 1 files changed, 28 insertions(+)


Index: llvm/test/Analysis/Dominators/2007-04-20-PostDom-Reset.ll
diff -c /dev/null llvm/test/Analysis/Dominators/2007-04-20-PostDom-Reset.ll:1.1
*** /dev/null   Fri Apr 20 19:34:47 2007
--- llvm/test/Analysis/Dominators/2007-04-20-PostDom-Reset.ll   Fri Apr 20 
19:34:37 2007
***
*** 0 
--- 1,28 
+ ; RUN: llvm-upgrade  %s | llvm-as | opt -postdomfrontier -disable-output
+ 
+ void @args_out_of_range() {
+ entry:
+   br label %bb
+ 
+ bb:   ; preds = %bb, %entry
+   br label %bb
+ }
+ 
+ void @args_out_of_range_3() {
+ entry:
+   br label %bb
+ 
+ bb:   ; preds = %bb, %entry
+   br label %bb
+ }
+ 
+ void @Feq() {
+ entry:
+   br i1 false, label %cond_true, label %cond_next
+ 
+ cond_true:; preds = %entry
+   unreachable
+ 
+ cond_next:; preds = %entry
+   unreachable
+ }



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


[llvm-commits] CVS: llvm/lib/VMCore/Dominators.cpp

2007-04-20 Thread Devang Patel


Changes in directory llvm/lib/VMCore:

Dominators.cpp updated: 1.96 - 1.97
---
Log message:

Reset vertex.
Fix 
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20070416/048092.html



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

 Dominators.cpp |1 +
 1 files changed, 1 insertion(+)


Index: llvm/lib/VMCore/Dominators.cpp
diff -u llvm/lib/VMCore/Dominators.cpp:1.96 llvm/lib/VMCore/Dominators.cpp:1.97
--- llvm/lib/VMCore/Dominators.cpp:1.96 Sun Apr 15 18:14:18 2007
+++ llvm/lib/VMCore/Dominators.cpp  Fri Apr 20 19:36:45 2007
@@ -285,6 +285,7 @@
   Nodes.clear();
   IDoms.clear();
   Roots.clear();
+  Vertex.clear();
   RootNode = 0;
 }
 



___
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/CodeGen/SelectionDAG.h SelectionDAGNodes.h

2007-04-20 Thread Chris Lattner
 +++ llvm/include/llvm/CodeGen/SelectionDAGNodes.h Fri Apr 20  
 16:38:10 2007
 @@ -19,6 +19,7 @@
  #ifndef LLVM_CODEGEN_SELECTIONDAGNODES_H
  #define LLVM_CODEGEN_SELECTIONDAGNODES_H

 +#include llvm/GlobalVariable.h

Please don't add this #include, just define the GlobalAddressSDNode  
ctor method out-of-line as needed.

 @@ -1164,7 +1167,12 @@
friend class SelectionDAG;
GlobalAddressSDNode(bool isTarget, const GlobalValue *GA,  
 MVT::ValueType VT,
int o = 0)
 -: SDNode(isTarget ? ISD::TargetGlobalAddress :  
 ISD::GlobalAddress,
 +: SDNode(dyn_castGlobalVariable(GA) 

Please use isaGlobalVariable(GA) instead of dyncast because this  
is a predicate.

-Chris


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


Re: [llvm-commits] CVS: llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp SelectionDAG.cpp

2007-04-20 Thread Chris Lattner
 @@ -14,6 +14,7 @@
  #include llvm/CodeGen/SelectionDAG.h
  #include llvm/Constants.h
  #include llvm/GlobalValue.h
 +#include llvm/GlobalVariable.h

Please drop the #include of GlobalValue since GlobalVariable.h brings  
it in.

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


Re: [llvm-commits] CVS: llvm/lib/Target/X86/X86ATTAsmPrinter.cpp X86AsmPrinter.cpp X86ISelLowering.cpp X86ISelLowering.h X86InstrInfo.td

2007-04-20 Thread Chris Lattner
 Changes in directory llvm/lib/Target/X86:

 X86ATTAsmPrinter.cpp updated: 1.100 - 1.101
 X86AsmPrinter.cpp updated: 1.239 - 1.240
 X86ISelLowering.cpp updated: 1.393 - 1.394
 X86ISelLowering.h updated: 1.98 - 1.99
 X86InstrInfo.td updated: 1.302 - 1.303

I'll let Evan and/or Anton review this one.

Thanks Lauro, very nice!  Should the TLS bug be closed now?

-Chris

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


Re: [llvm-commits] Function aliases

2007-04-20 Thread Chris Lattner
 Why not simply reinsert the aliased GV into the symbol table under  
 the alias name? In this manner, alias objects would not need to  
 derive from GlobalValue at all. Aliases could be stored in a list  
 on the side as you describe, solving the memory usage problem. The  
 majority of code could remain ignorant of them, resolving the code  
 duplication Anton was worried about.

Unfortunately, this won't work.  Values can have at most one name in  
LLVM,

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

2007-04-20 Thread Evan Cheng


Changes in directory llvm/include/llvm/Target:

MRegisterInfo.h updated: 1.105 - 1.106
---
Log message:

Add super-register set.

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

 MRegisterInfo.h |   14 +-
 1 files changed, 13 insertions(+), 1 deletion(-)


Index: llvm/include/llvm/Target/MRegisterInfo.h
diff -u llvm/include/llvm/Target/MRegisterInfo.h:1.105 
llvm/include/llvm/Target/MRegisterInfo.h:1.106
--- llvm/include/llvm/Target/MRegisterInfo.h:1.105  Fri Apr 20 16:28:05 2007
+++ llvm/include/llvm/Target/MRegisterInfo.hFri Apr 20 19:54:06 2007
@@ -40,11 +40,15 @@
 /// Registers that this does not apply to simply should set this to null.
 /// The SubRegs field is a zero terminated array of registers that are
 /// sub-registers of the specific register, e.g. AL, AH are sub-registers of 
AX.
+/// The SuperRegs field is a zero terminated array of registers that are
+/// super-registers of the specific register, e.g. RAX, EAX, are sub-registers
+/// of AX.
 ///
 struct TargetRegisterDesc {
   const char *Name; // Assembly language name for the register
   const unsigned *AliasSet; // Register Alias Set, described above
   const unsigned *SubRegs;  // Sub-register set, described above
+  const unsigned *SuperRegs;// Super-register set, described above
 };
 
 class TargetRegisterClass {
@@ -271,13 +275,21 @@
   }
 
   /// getSubRegisters - Return the set of registers that are sub-registers of
-  // the specified register, or a null list of there are none. The list
+  /// the specified register, or a null list of there are none. The list
   /// returned is zero terminated.
   ///
   const unsigned *getSubRegisters(unsigned RegNo) const {
 return get(RegNo).SubRegs;
   }
 
+  /// getSuperRegisters - Return the set of registers that are super-registers
+  /// of the specified register, or a null list of there are none. The list
+  /// returned is zero terminated.
+  ///
+  const unsigned *getSuperRegisters(unsigned RegNo) const {
+return get(RegNo).SuperRegs;
+  }
+
   /// getName - Return the symbolic target specific name for the specified
   /// physical register.
   const char *getName(unsigned RegNo) const {



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


Re: [llvm-commits] CVS: llvm/lib/Target/X86/X86ATTAsmPrinter.cpp X86AsmPrinter.cpp X86ISelLowering.cpp X86ISelLowering.h X86InstrInfo.td

2007-04-20 Thread Jeff Cohen
What about the Intel printer?

Chris Lattner wrote:
 Changes in directory llvm/lib/Target/X86:

 X86ATTAsmPrinter.cpp updated: 1.100 - 1.101
 X86AsmPrinter.cpp updated: 1.239 - 1.240
 X86ISelLowering.cpp updated: 1.393 - 1.394
 X86ISelLowering.h updated: 1.98 - 1.99
 X86InstrInfo.td updated: 1.302 - 1.303
 

 I'll let Evan and/or Anton review this one.

 Thanks Lauro, very nice!  Should the TLS bug be closed now?

 -Chris

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



   

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


[llvm-commits] CVS: llvm/utils/TableGen/RegisterInfoEmitter.cpp

2007-04-20 Thread Evan Cheng


Changes in directory llvm/utils/TableGen:

RegisterInfoEmitter.cpp updated: 1.51 - 1.52
---
Log message:

Bug fix; add super-registers sets.

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

 RegisterInfoEmitter.cpp |   69 
 1 files changed, 58 insertions(+), 11 deletions(-)


Index: llvm/utils/TableGen/RegisterInfoEmitter.cpp
diff -u llvm/utils/TableGen/RegisterInfoEmitter.cpp:1.51 
llvm/utils/TableGen/RegisterInfoEmitter.cpp:1.52
--- llvm/utils/TableGen/RegisterInfoEmitter.cpp:1.51Fri Apr 20 16:12:49 2007
+++ llvm/utils/TableGen/RegisterInfoEmitter.cpp Fri Apr 20 19:55:29 2007
@@ -107,10 +107,33 @@
   return true;
 }
 
-static void addSubReg(Record *R, Record *S,
-  std::mapRecord*, std::setRecord*  SubRegs,
-  std::mapRecord*, std::setRecord*  Aliases,
-  RegisterInfoEmitter RIE) {
+static void addSuperReg(Record *R, Record *S,
+std::mapRecord*, std::setRecord*  SubRegs,
+std::mapRecord*, std::setRecord*  SuperRegs,
+std::mapRecord*, std::setRecord*  Aliases,
+RegisterInfoEmitter RIE) {
+  if (R == S) {
+cerr  Error: recursive sub-register relationship between
+   register   RIE.getQualifiedName(R)
+   and its sub-registers?\n;
+abort();
+  }
+  if (!SuperRegs[R].insert(S).second)
+return;
+  SubRegs[S].insert(R);
+  Aliases[R].insert(S);
+  Aliases[S].insert(R);
+  if (SuperRegs.count(S))
+for (std::setRecord*::iterator I = SuperRegs[S].begin(),
+   E = SuperRegs[S].end(); I != E; ++I)
+  addSuperReg(R, *I, SubRegs, SuperRegs, Aliases, RIE);
+}
+
+static void addSubSuperReg(Record *R, Record *S,
+   std::mapRecord*, std::setRecord*  SubRegs,
+   std::mapRecord*, std::setRecord*  SuperRegs,
+   std::mapRecord*, std::setRecord*  Aliases,
+   RegisterInfoEmitter RIE) {
   if (R == S) {
 cerr  Error: recursive sub-register relationship between
register   RIE.getQualifiedName(R)
@@ -120,12 +143,13 @@
 
   if (!SubRegs[R].insert(S).second)
 return;
+  addSuperReg(S, R, SubRegs, SuperRegs, Aliases, RIE);
   Aliases[R].insert(S);
   Aliases[S].insert(R);
   if (SubRegs.count(S))
 for (std::setRecord*::iterator I = SubRegs[S].begin(),
E = SubRegs[S].end(); I != E; ++I)
-  addSubReg(R, *I, SubRegs, Aliases, RIE);
+  addSubSuperReg(R, *I, SubRegs, SuperRegs, Aliases, RIE);
 }
 
 // RegisterInfoEmitter::run - Main register file description emitter.
@@ -294,8 +318,9 @@
 RegClass,\n;
   OS};\n;
 
-  // Emit register sub-registers / aliases...
+  // Emit register sub-registers / super-registers, aliases...
   std::mapRecord*, std::setRecord*  RegisterSubRegs;
+  std::mapRecord*, std::setRecord*  RegisterSuperRegs;
   std::mapRecord*, std::setRecord*  RegisterAliases;
   const std::vectorCodeGenRegister Regs = Target.getRegisters();
 
@@ -320,6 +345,7 @@
 }
   }
 
+  // Process sub-register sets.
   for (unsigned i = 0, e = Regs.size(); i != e; ++i) {
 Record *R = Regs[i].TheDef;
 std::vectorRecord* LI = Regs[i].TheDef-getValueAsListOfDefs(SubRegs);
@@ -330,7 +356,8 @@
 cerr  Warning: register   getQualifiedName(SubReg)
specified as a sub-register of   getQualifiedName(R)
multiple times!\n;
-  addSubReg(R, SubReg, RegisterSubRegs, RegisterAliases, *this);
+  addSubSuperReg(R, SubReg, RegisterSubRegs, RegisterSuperRegs,
+ RegisterAliases, *this);
 }
   }
 
@@ -365,9 +392,25 @@
   OS  getQualifiedName(*ASI)  , ;
 OS  0 };\n;
   }
-  OS\n  const TargetRegisterDesc RegisterDescriptors[] = { // 
Descriptors\n;
-  OS  { \NOREG\,\t0,\t0 },\n;
 
+  if (!RegisterSuperRegs.empty())
+OS  \n\n  // Register Super-registers Sets...\n;
+
+  // Emit the empty super-registers list
+  OSconst unsigned Empty_SuperRegsSet[] = { 0 };\n;
+  // Loop over all of the registers which have super-registers, emitting the
+  // super-registers list to memory.
+  for (std::mapRecord*, std::setRecord* ::iterator
+ I = RegisterSuperRegs.begin(), E = RegisterSuperRegs.end(); I != E; 
++I) {
+OSconst unsigned   I-first-getName()  _SuperRegsSet[] = { ;
+for (std::setRecord*::iterator ASI = I-second.begin(),
+   E = I-second.end(); ASI != E; ++ASI)
+  OS  getQualifiedName(*ASI)  , ;
+OS  0 };\n;
+  }
+
+  OS\n  const TargetRegisterDesc RegisterDescriptors[] = { // 
Descriptors\n;
+  OS  { \NOREG\,\t0,\t0,\t0 },\n;
 
   // Now that register alias and sub-registers sets have been emitted, emit the
   // register descriptors now.
@@ -385,9 +428,13 @@
 else
   OS  Empty_AliasSet,\t;
 if (RegisterSubRegs.count(Reg.TheDef))
-  OS  Reg.getName()  _SubRegsSet },\n;
+  OS  Reg.getName()  _SubRegsSet,\t;
+else

Re: [llvm-commits] Function aliases

2007-04-20 Thread Chris Lattner
 I don't think that really makes sense.  Aliases aren't really global
 variables or functions themselves, they are a third kind of object.
 Why the third? They definitely *are* either external functions or GVs.
 For example, function aliases can be called, we can take address of
 them, etc. The only difference is absence of body (because they are
 external) and two symbols they're emitting.

I disagree.  They *act like* functions or GV's, but they really  
aren't them.  For example, (from m understanding), it is not legal to  
give an alias a function body or a global variable initializer.

They clearly need to be usable as a global object (f.e. in a call  
instruction or a load instruction), so they should derive from  
GlobalValue, but they are not themselves functions or global variables.

 What do you think about making a new GlobalAlias class, which derives
 from GlobalValue.

 And after subdivide into FunctionAlias  GlobalVariableAlias? This  
 will
 lead to code duplication, since almost all methods of Functions should
 go to FunctionAlias, the same for GVs.

No, you wouldn't need both classes, just a single one.

 This will also require to
 carefully check all other places, where GVs and Functions are used and
 change corresponding logic. Considre for example CallInst. For it we
 should at least resolve issue with getCalledFunction(), which nowadays
 return Function* and we should probably add new method called
 getCalledFunctionAlias() or resolved the two possible return type  
 issues
 otherwise. I don't think it's worth to do so invasive changes  
 everywhere
 for such small feature.

Two things: getCalledFunction already returns null if the callee is  
not a function, e.g. an indirect call.  All of the users of this  
method will already do the right thing and treat aliases as unknown  
calls.  This will be correct.

However, I think that linker should try to resolve aliases when  
possible.  For example, consider something like this:

void foo() {}
void bar()  alias foo

void baz() {  bar(); }

I'd expect the linker (or something else) to want to resolve through  
aliases if the alias, if the actual destination function is around.   
If this happens, in practice, there will be very few (if any) direct  
users of the alias object.

-Chris


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


Re: [llvm-commits] CVS: llvm/lib/Target/X86/X86ATTAsmPrinter.cpp X86AsmPrinter.cpp X86ISelLowering.cpp X86ISelLowering.h X86InstrInfo.td

2007-04-20 Thread Chris Lattner
On Apr 20, 2007, at 5:54 PM, Jeff Cohen wrote:
 What about the Intel printer?

Presumably the win32 ABI uses completely different mechanisms for  
TLS.  Unless Lauro is signing up for it, it sounds like an entry for  
the top of the X86/README.txt file.

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


[llvm-commits] CVS: llvm-www/SVNMigration.html

2007-04-20 Thread Reid Spencer


Changes in directory llvm-www:

SVNMigration.html updated: 1.10 - 1.11
---
Log message:

Add a new section.


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

 SVNMigration.html |   36 ++--
 1 files changed, 34 insertions(+), 2 deletions(-)


Index: llvm-www/SVNMigration.html
diff -u llvm-www/SVNMigration.html:1.10 llvm-www/SVNMigration.html:1.11
--- llvm-www/SVNMigration.html:1.10 Fri Apr 20 18:31:12 2007
+++ llvm-www/SVNMigration.html  Fri Apr 20 22:31:55 2007
@@ -9,7 +9,7 @@
 div class=www_subsectionSchedule/div
 div class=www_text
   pbWhen/b: June 5, 2007/p
-  pbOutage Duration/b: Approximately 4 hours. During this perdiod CVS
+  pbOutage Duration/b: Approximately 4 hours. During this period CVS
   access will be unavailable as the repository is converted to Subversion
   format. When the conversion is completed, Subversion access will be
   enabled./p
@@ -18,6 +18,38 @@
   pbSubversion Version:/b 1.4.3/p
 /div
 
+div class=www_subsectionUser Impact/div
+div class=www_text
+  pHere are some things you need to know about how to use Subversion once the
+  migration is done and how to prepare for the change./p
+  ul
+libSubversion Version/b: 1.4.3. You can use older clients, but we
+recommend that you upgrade to 1.4.3 to gain most benefit./li
+libURLS/b: Subversion uses URLs to specify the repository. Our 
+configuration uses HTTP URLs. The host name portion of the URL for all
+LLVM related repositories is svn.llvm.org (which redirects to 
+subversion.cs.uiuc.edu). We encourage you to use the svn.llvm.org host name
+because that one will be correct in perpetuity as the redirect might not 
be.
+libRepository Access/b: There are two ways to access the
+repository: public (anonymous, read-only access) and private (named, 
+read-write access)./li
+liPublic Access/li: The URL for the public access repository is
+a 
href=http://svn.llvm.org/pub/svn/llvm;http://svn.llvm.org/pub/svn/llvm/a
+Use this URL with the ttsvn checkout/tt command to obtain a read-only
+copy of LLVM without a username or password./li
+liPrivate Access/li: The URL for the private access repository is
+a href=https://svn.llvm.org/svn/llvm;http://vn.llvm.org/svn/llvm/a. 
+Use this URL with the ttsvn checkout/tt command to obtain read-write 
/li
+access to the LLVM repository. The ttsvn/tt command will prompt you for
+your user name and password./li
+libBrowsable URLs/b: Both the public and private access URLs are
+browsable with any web browser./li
+libAvailable Now:/b: You can try these out now. Only a few users have
+commit access (those who are testing it). Any changes made will be 
discarded
+before the June 5th conversion./li
+  /ul
+/div
+
 div class=www_subsectionNotes/div
 div class=www_text
   pbStatus as of 2007-04-20/bbr/We have successfully migrated all the
@@ -185,6 +217,6 @@
   src=http://jigsaw.w3.org/css-validator/images/vcss; alt=Valid CSS!/a
   a href=http://validator.w3.org/check/referer;img
   src=http://www.w3.org/Icons/valid-html401; alt=Valid HTML 4.01!/a
-br/Last modified: $Date: 2007/04/20 23:31:12 $
+br/Last modified: $Date: 2007/04/21 03:31:55 $
 /address
 !--#include virtual=footer.incl --



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


[llvm-commits] CVS: llvm-www/SVNMigration.html

2007-04-20 Thread Reid Spencer


Changes in directory llvm-www:

SVNMigration.html updated: 1.11 - 1.12
---
Log message:

Clean up a bit.


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

 SVNMigration.html |   22 --
 1 files changed, 12 insertions(+), 10 deletions(-)


Index: llvm-www/SVNMigration.html
diff -u llvm-www/SVNMigration.html:1.11 llvm-www/SVNMigration.html:1.12
--- llvm-www/SVNMigration.html:1.11 Fri Apr 20 22:31:55 2007
+++ llvm-www/SVNMigration.html  Fri Apr 20 22:40:38 2007
@@ -8,14 +8,16 @@
 
 div class=www_subsectionSchedule/div
 div class=www_text
-  pbWhen/b: June 5, 2007/p
-  pbOutage Duration/b: Approximately 4 hours. During this period CVS
-  access will be unavailable as the repository is converted to Subversion
-  format. When the conversion is completed, Subversion access will be
-  enabled./p
-  pbFallback Policy/b: If the conversion cannot be completed successfully
-  in 4 hours, we will turn CVS access back on and try again at a later 
date./p
-  pbSubversion Version:/b 1.4.3/p
+  pbWhen/b: June 5, 2007, approx. 1pm CDT (Central Time USA) or 18:00 
GMT)./p
+  pbDuration/b: 4 hours/p
+  pbNotices:/b: Notices will be sent out 1 week before, 1 day before, and
+  1 hour before the conversion actually takes place./p
+  pbImpact/b: Both CVS and Subversion will be unavailable for 
approximately 
+  4 hours while the migration takes place. Once completed, CVS will be restored
+  in read-only mode and Subversion will permit read-write access./p
+  pbFallback Plan/b: If the conversion cannot be completed successfully
+  in 4 hours, we will turn CVS commit access back on and try the migration
+  again at a later date./p
 /div
 
 div class=www_subsectionUser Impact/div
@@ -54,7 +56,7 @@
 div class=www_text
   pbStatus as of 2007-04-20/bbr/We have successfully migrated all the
   sub-projects targeted for conversion over the UIUC internal network. The
-  conversion can happen. Conversion notice email should be sent soon./p
+  Subversion snapshot is available for access (for testing only)./p
   pbStatus as of 2007-04-07/bbr/All the technology is in place for the
   migration to occur. We are now only waiting for TSG to install the 
   authentication tokens so that existing commit users will be granted 
@@ -217,6 +219,6 @@
   src=http://jigsaw.w3.org/css-validator/images/vcss; alt=Valid CSS!/a
   a href=http://validator.w3.org/check/referer;img
   src=http://www.w3.org/Icons/valid-html401; alt=Valid HTML 4.01!/a
-br/Last modified: $Date: 2007/04/21 03:31:55 $
+br/Last modified: $Date: 2007/04/21 03:40:38 $
 /address
 !--#include virtual=footer.incl --



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


[llvm-commits] CVS: llvm-www/SVNMigration.html

2007-04-20 Thread Reid Spencer


Changes in directory llvm-www:

SVNMigration.html updated: 1.12 - 1.13
---
Log message:

Formatting/Validation issue.


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

 SVNMigration.html |6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)


Index: llvm-www/SVNMigration.html
diff -u llvm-www/SVNMigration.html:1.12 llvm-www/SVNMigration.html:1.13
--- llvm-www/SVNMigration.html:1.12 Fri Apr 20 22:40:38 2007
+++ llvm-www/SVNMigration.html  Fri Apr 20 22:41:44 2007
@@ -35,11 +35,11 @@
 libRepository Access/b: There are two ways to access the
 repository: public (anonymous, read-only access) and private (named, 
 read-write access)./li
-liPublic Access/li: The URL for the public access repository is
+libPublic Access/b: The URL for the public access repository is
 a 
href=http://svn.llvm.org/pub/svn/llvm;http://svn.llvm.org/pub/svn/llvm/a
 Use this URL with the ttsvn checkout/tt command to obtain a read-only
 copy of LLVM without a username or password./li
-liPrivate Access/li: The URL for the private access repository is
+libPrivate Access/b: The URL for the private access repository is
 a href=https://svn.llvm.org/svn/llvm;http://vn.llvm.org/svn/llvm/a. 
 Use this URL with the ttsvn checkout/tt command to obtain read-write 
/li
 access to the LLVM repository. The ttsvn/tt command will prompt you for
@@ -219,6 +219,6 @@
   src=http://jigsaw.w3.org/css-validator/images/vcss; alt=Valid CSS!/a
   a href=http://validator.w3.org/check/referer;img
   src=http://www.w3.org/Icons/valid-html401; alt=Valid HTML 4.01!/a
-br/Last modified: $Date: 2007/04/21 03:40:38 $
+br/Last modified: $Date: 2007/04/21 03:41:44 $
 /address
 !--#include virtual=footer.incl --



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


[llvm-commits] [llvm] r36266 - /llvm/trunk/CREDITS.TXT

2007-04-20 Thread cscollab-rspencer
Author: cscollab-rspencer
Date: Fri Apr 20 22:40:04 2007
New Revision: 36266

URL: http://subversion.cs.uiuc.edu/viewvc/llvm?rev=36266view=rev
Log:
Add a credit.

Modified:
llvm/trunk/CREDITS.TXT

Modified: llvm/trunk/CREDITS.TXT
URL: 
http://subversion.cs.uiuc.edu/viewvc/llvm/llvm/trunk/CREDITS.TXT?rev=36266r1=36265r2=36266view=diff
==
--- llvm/trunk/CREDITS.TXT (original)
+++ llvm/trunk/CREDITS.TXT Fri Apr 20 22:40:04 2007
@@ -191,7 +191,7 @@
 D: Stacker, llvmc, llvm-ld, llvm-ar, llvm2cpp, lib/Archive, lib/Linker, 
 D: lib/System, bytecode enhancements, symtab hacking, unoverloading of 
 D: intrinsics, makefile and configuration system, documentation, various bug 
-D: fixing.
+D: fixing, Subversion migration.
 
 N: Adam Treat
 E: [EMAIL PROTECTED]


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


[llvm-commits] CVS: llvm-www/SVNMigration.html

2007-04-20 Thread Reid Spencer


Changes in directory llvm-www:

SVNMigration.html updated: 1.13 - 1.14
---
Log message:

Validation error.


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

 SVNMigration.html |4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)


Index: llvm-www/SVNMigration.html
diff -u llvm-www/SVNMigration.html:1.13 llvm-www/SVNMigration.html:1.14
--- llvm-www/SVNMigration.html:1.13 Fri Apr 20 22:41:44 2007
+++ llvm-www/SVNMigration.html  Fri Apr 20 22:43:01 2007
@@ -41,7 +41,7 @@
 copy of LLVM without a username or password./li
 libPrivate Access/b: The URL for the private access repository is
 a href=https://svn.llvm.org/svn/llvm;http://vn.llvm.org/svn/llvm/a. 
-Use this URL with the ttsvn checkout/tt command to obtain read-write 
/li
+Use this URL with the ttsvn checkout/tt command to obtain read-write
 access to the LLVM repository. The ttsvn/tt command will prompt you for
 your user name and password./li
 libBrowsable URLs/b: Both the public and private access URLs are
@@ -219,6 +219,6 @@
   src=http://jigsaw.w3.org/css-validator/images/vcss; alt=Valid CSS!/a
   a href=http://validator.w3.org/check/referer;img
   src=http://www.w3.org/Icons/valid-html401; alt=Valid HTML 4.01!/a
-br/Last modified: $Date: 2007/04/21 03:41:44 $
+br/Last modified: $Date: 2007/04/21 03:43:01 $
 /address
 !--#include virtual=footer.incl --



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


Re: [llvm-commits] [llvm] r36266 - /llvm/trunk/CREDITS.TXT

2007-04-20 Thread Reid Spencer
Anton,

This is my first test commit on the test subversion repository. The
email generated looks okay, but I think we need to have the email
notification script enhanced slightly. I'm wondering if you could look
into these things ...

The subject line looks great! :)

but ..

On Sat, 2007-04-21 at 03:40 +, [EMAIL PROTECTED] wrote:

I thought we were going to turn these into the actual user's name. Has
that mapping gone away? I think the old CVS one make the reply-to field
be the user's actual email address rather than [EMAIL PROTECTED].
I think we need to do the same here. Otherwise the process of commit
review gets harder.

Is this just failing because you were expecting reid instead of
cscollab-rspencer. I have an email in to David asking if we can get rid
of the prefix. He forwarded it on to the people that do the user
authentication stuff.

Reid

 Author: cscollab-rspencer

Real name would be nice here too.

 Date: Fri Apr 20 22:40:04 2007
 New Revision: 36266
 
 URL: http://subversion.cs.uiuc.edu/viewvc/llvm?rev=36266view=rev
 Log:
 Add a credit.

If its a one line log comment, can we get it on the Log line,
otherwise can we indent the lines a few of spaces, as in Modified: field
below?

 
 Modified:
 llvm/trunk/CREDITS.TXT
 

I thought we were going to run the diff output through diffstat and
insert the histogram here like we did for CVS?

 Modified: llvm/trunk/CREDITS.TXT

The usual diff line here is Index:  Is this the way svn diff
generates it or can we fix it?

Thanks,

Reid.

 URL: 
 http://subversion.cs.uiuc.edu/viewvc/llvm/llvm/trunk/CREDITS.TXT?rev=36266r1=36265r2=36266view=diff
 ==
 --- llvm/trunk/CREDITS.TXT (original)
 +++ llvm/trunk/CREDITS.TXT Fri Apr 20 22:40:04 2007
 @@ -191,7 +191,7 @@
  D: Stacker, llvmc, llvm-ld, llvm-ar, llvm2cpp, lib/Archive, lib/Linker, 
  D: lib/System, bytecode enhancements, symtab hacking, unoverloading of 
  D: intrinsics, makefile and configuration system, documentation, various bug 
 -D: fixing.
 +D: fixing, Subversion migration.
  
  N: Adam Treat
  E: [EMAIL PROTECTED]
 
 
 ___
 llvm-commits mailing list
 llvm-commits@cs.uiuc.edu
 http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits

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


[llvm-commits] CVS: llvm-www/Name.html

2007-04-20 Thread Reid Spencer


Changes in directory llvm-www:

Name.html updated: 1.16 - 1.17
---
Log message:

Add Pertti's entry.


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

 Name.html |3 ++-
 1 files changed, 2 insertions(+), 1 deletion(-)


Index: llvm-www/Name.html
diff -u llvm-www/Name.html:1.16 llvm-www/Name.html:1.17
--- llvm-www/Name.html:1.16 Mon Apr 16 20:56:54 2007
+++ llvm-www/Name.html  Fri Apr 20 23:00:09 2007
@@ -282,6 +282,7 @@
 (on WP page, the three points about Pidgin creation are quite relevant 
 for LLVM :-) ).  Spelling it (Ssabir) not only makes the name 
unique, 
 but recalls LLVM is all about SSA./td/tr
+trtdPertti Kellomäki/tdthNopsa/thtdFinnish for 
rapid./td/tr
   /table
 /div
 
@@ -292,6 +293,6 @@
   src=http://jigsaw.w3.org/css-validator/images/vcss; alt=Valid CSS!/a
   a href=http://validator.w3.org/check/referer;img
   src=http://www.w3.org/Icons/valid-html401; alt=Valid HTML 4.01!/a
-br/Last modified: $Date: 2007/04/17 01:56:54 $
+br/Last modified: $Date: 2007/04/21 04:00:09 $
 /address
 !--#include virtual=footer.incl --



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


Re: [llvm-commits] [llvm] r36266 - /llvm/trunk/CREDITS.TXT

2007-04-20 Thread Chris Lattner
 URL: http://subversion.cs.uiuc.edu/viewvc/llvm/llvm/trunk/ 
 CREDITS.TXT?rev=36266r1=36265r2=36266view=diff
 == 
 

Also, can we get a blank line after the URL?  My mail client turns  
the URL and the  into one url...

Thanks!

-Chris

 --- llvm/trunk/CREDITS.TXT (original)
 +++ llvm/trunk/CREDITS.TXT Fri Apr 20 22:40:04 2007
 @@ -191,7 +191,7 @@
  D: Stacker, llvmc, llvm-ld, llvm-ar, llvm2cpp, lib/Archive, lib/ 
 Linker,
  D: lib/System, bytecode enhancements, symtab hacking,  
 unoverloading of
  D: intrinsics, makefile and configuration system, documentation,  
 various bug
 -D: fixing.
 +D: fixing, Subversion migration.

  N: Adam Treat
  E: [EMAIL PROTECTED]


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

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