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

2005-11-17 Thread Chris Lattner


Changes in directory llvm/tools/gccld:

gccld.cpp updated: 1.103 - 1.104
---
Log message:

Allow users to specify -Wl,-native* multiple times if they please


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

 gccld.cpp |4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)


Index: llvm/tools/gccld/gccld.cpp
diff -u llvm/tools/gccld/gccld.cpp:1.103 llvm/tools/gccld/gccld.cpp:1.104
--- llvm/tools/gccld/gccld.cpp:1.103Tue Aug  2 17:07:38 2005
+++ llvm/tools/gccld/gccld.cpp  Thu Nov 17 10:08:04 2005
@@ -78,10 +78,10 @@
  cl::aliasopt(LinkAsLibrary));
 
   cl::optbool
-  Native(native,
+  Native(native, cl::ZeroOrMore,
  cl::desc(Generate a native binary instead of a shell script));
   cl::optbool
-  NativeCBE(native-cbe,
+  NativeCBE(native-cbe, cl::ZeroOrMore,
 cl::desc(Generate a native binary with the C backend and GCC));
 
   cl::optbool



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


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

2005-11-17 Thread Chris Lattner


Changes in directory llvm/lib/Target/PowerPC:

PPCISelDAGToDAG.cpp updated: 1.128 - 1.129
---
Log message:

Teach the selector to fold lo(g) into load instruction immediate fields


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

 PPCISelDAGToDAG.cpp |8 
 1 files changed, 8 insertions(+)


Index: llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
diff -u llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp:1.128 
llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp:1.129
--- llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp:1.128   Thu Nov 17 01:30:41 2005
+++ llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp Thu Nov 17 12:02:16 2005
@@ -413,6 +413,14 @@
 Op2 = Select(Addr.getOperand(0));
   }
   return false;
+} else if (Addr.getOperand(1).getOpcode() == PPCISD::Lo) {
+  // Match LOAD (ADD (X, Lo(G))).
+  
assert(!castConstantSDNode(Addr.getOperand(1).getOperand(1))-getValue()
+  Cannot handle constant offsets yet!);
+  Op1 = Addr.getOperand(1).getOperand(0);  // The global address.
+  assert(Op1.getOpcode() == ISD::TargetGlobalAddress);
+  Op2 = Select(Addr.getOperand(0));
+  return false;   // [g+r]
 } else {
   Op1 = Select(Addr.getOperand(0));
   Op2 = Select(Addr.getOperand(1));



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


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

2005-11-17 Thread Chris Lattner


Changes in directory llvm/lib/Target/PowerPC:

PPCISelLowering.cpp updated: 1.43 - 1.44
---
Log message:

Fix a bug that resistor on IRC hit where we tried to create token factor
nodes of load results, not of their chain results.


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

 PPCISelLowering.cpp |4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)


Index: llvm/lib/Target/PowerPC/PPCISelLowering.cpp
diff -u llvm/lib/Target/PowerPC/PPCISelLowering.cpp:1.43 
llvm/lib/Target/PowerPC/PPCISelLowering.cpp:1.44
--- llvm/lib/Target/PowerPC/PPCISelLowering.cpp:1.43Thu Nov 17 12:26:56 2005
+++ llvm/lib/Target/PowerPC/PPCISelLowering.cpp Thu Nov 17 12:30:17 2005
@@ -670,7 +670,7 @@
 if (GPR_remaining  0) {
   SDOperand Load = DAG.getLoad(MVT::i32, Store, PtrOff,
DAG.getSrcValue(NULL));
-  MemOps.push_back(Load);
+  MemOps.push_back(Load.getValue(1));
   args_to_use.push_back(Load);
   --GPR_remaining;
 }
@@ -679,7 +679,7 @@
   PtrOff = DAG.getNode(ISD::ADD, MVT::i32, PtrOff, ConstFour);
   SDOperand Load = DAG.getLoad(MVT::i32, Store, PtrOff,
DAG.getSrcValue(NULL));
-  MemOps.push_back(Load);
+  MemOps.push_back(Load.getValue(1));
   args_to_use.push_back(Load);
   --GPR_remaining;
 }



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

2005-11-17 Thread Chris Lattner


Changes in directory llvm/lib/Transforms/Scalar:

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

This was checking the wrong GEP expression.  Fixing this fixes a gccas crash
compiling mysql reported by Ted Kremenek.


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

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


Index: llvm/lib/Transforms/Scalar/IndVarSimplify.cpp
diff -u llvm/lib/Transforms/Scalar/IndVarSimplify.cpp:1.80 
llvm/lib/Transforms/Scalar/IndVarSimplify.cpp:1.81
--- llvm/lib/Transforms/Scalar/IndVarSimplify.cpp:1.80  Tue Aug  9 20:12:06 2005
+++ llvm/lib/Transforms/Scalar/IndVarSimplify.cpp   Thu Nov 17 13:35:42 2005
@@ -162,7 +162,7 @@
   if (CE-getOperand(NumOps-1)-isNullValue()) {
 // Check to make sure the last index really is an array index.
 gep_type_iterator GTI = gep_type_begin(GEPI);
-for (unsigned i = 1, e = GEPI-getNumOperands()-1;
+for (unsigned i = 1, e = CE-getNumOperands()-1;
  i != e; ++i, ++GTI)
   /*empty*/;
 if (isaSequentialType(*GTI)) {



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


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

2005-11-17 Thread Nate Begeman


Changes in directory llvm/include/llvm/Target:

TargetLowering.h updated: 1.27 - 1.28
---
Log message:

Teach the type lowering code about turning packed types into vector types.
Next step: generating vector dag nodes, and legalizing them into scalar 
code.


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

 TargetLowering.h |1 +
 1 files changed, 1 insertion(+)


Index: llvm/include/llvm/Target/TargetLowering.h
diff -u llvm/include/llvm/Target/TargetLowering.h:1.27 
llvm/include/llvm/Target/TargetLowering.h:1.28
--- llvm/include/llvm/Target/TargetLowering.h:1.27  Thu Oct 20 19:02:42 2005
+++ llvm/include/llvm/Target/TargetLowering.h   Thu Nov 17 15:44:42 2005
@@ -189,6 +189,7 @@
 case Type::FloatTyID:   return MVT::f32;
 case Type::DoubleTyID:  return MVT::f64;
 case Type::PointerTyID: return PointerTy;
+case Type::PackedTyID:  return MVT::Vector;
 }
   }
 



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


[llvm-commits] CVS: llvm-www/pubs/2005-11-SAFECodeTR.html 2005-11-SAFECodeTR.pdf 2003-04-29-DataStructureAnalysisTR.html

2005-11-17 Thread Dinakar Dhurjati


Changes in directory llvm-www/pubs:

2005-11-SAFECodeTR.html added (r1.1)
2005-11-SAFECodeTR.pdf added (r1.1)
2003-04-29-DataStructureAnalysisTR.html updated: 1.7 - 1.8
---
Log message:

Added safecode tech report


---
Diffs of the changes:  (+73 -9)

 2003-04-29-DataStructureAnalysisTR.html |   12 +
 2005-11-SAFECodeTR.html |   70 
 2005-11-SAFECodeTR.pdf  |0 
 3 files changed, 73 insertions(+), 9 deletions(-)


Index: llvm-www/pubs/2005-11-SAFECodeTR.html
diff -c /dev/null llvm-www/pubs/2005-11-SAFECodeTR.html:1.1
*** /dev/null   Thu Nov 17 15:46:40 2005
--- llvm-www/pubs/2005-11-SAFECodeTR.html   Thu Nov 17 15:46:30 2005
***
*** 0 
--- 1,70 
+ !DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN
+ html
+ head
+   meta http-equiv=Content-Type content=text/html; charset=UTF-8 /
+   link rel=stylesheet href=../llvm.css type=text/css media=screen /
+   titleEnforcing Alias Analysis for Weakly Typed Languages/title
+ /head
+ body
+ 
+ div class=pub_title
+ Enforcing Alias Analysis for Weakly Typed Languages
+ /div
+ div class=pub_author
+ Dinakar Dhurjati, Sumant Kowshik, and Vikram Adve
+ /div
+ 
+ 
+ h2Abstract:/h2
+ blockquote
+ 
+ p
+ Static analysis of programs in weakly typed languages such as C and C++ is
+ generally not sound because of possible memory errors due to dangling
+ pointer references, uninitialized pointers, and array bounds overflow.
+ Optimizing compilers can produce unpredictable results when such errors
+ occur, but this is quite undesirable for many tools that aim to analyze
+ security and reliability properties with guarantees of soundness.  We
+ describe a relatively simple compilation strategy for standard C programs
+ that guarantees sound semantics for an aggressive interprocedural pointer
+ analysis (or simpler ones), a call graph, and type information for a
+ subset of memory. These provide the foundation for sophisticated static
+ analyses to be applied to such programs with a guarantee of soundness. Our
+ work builds on a previously published transformation called Automatic Pool
+ Allocation to ensure that hard-to-detect memory errors (dangling pointer
+ references and certain array bounds errors) cannot invalidate the call
+ graph, points-to information or type information.  The key insights behind
+ our approach is that pool allocation can be used to create a run-time
+ partitioning of memory that matches the compile-time memory partitioning
+ in a points-to graph, and efficient checks can be used to isolate the
+ run-time partitions. Furthermore, we show that the sound analysis
+ information enables static checking techniques that reliably eliminate
+ many run-time checks. We formalize our approach as a new type system with
+ the necessary run-time checks in operational semantics and prove the
+ correctness of our approach for a subset of C. Our approach requires no
+ source code changes, allows memory to be managed explicitly, and does not
+ use meta-data on pointers or individual tag bits for memory. Using several
+ benchmarks and system codes, we show experimentally that the run-time
+ overheads are low (less than 10% in nearly all cases and 30% in the worst
+ case we have seen).  We also show the effectiveness of reliable static
+ analyses for eliminating run-time checks.
+ 
+ /p
+ /blockquote
+ 
+ h2Published:/h2
+ blockquote
+   Enforcing Alias Analysis for Weakly Typed Languagesbr
+   By Dinakar Dhurjati, Sumant Kowshik, and Vikram Adve.br
+   Technical Report #UIUCDCS-R-2005-2657, Computer Science Dept., Univ. of
+   Illinois, Nov. 2005
+  /blockquote
+ 
+ h2Download:/h2
+ ul
+   lia href=2005-11-SAFECodeTR.pdfEnforcing Alias Analysis for
+   Weakly Typed Languages/a (PDF)/li
+ /ul
+ 
+ /body
+ /html


Index: llvm-www/pubs/2005-11-SAFECodeTR.pdf


Index: llvm-www/pubs/2003-04-29-DataStructureAnalysisTR.html
diff -u llvm-www/pubs/2003-04-29-DataStructureAnalysisTR.html:1.7 
llvm-www/pubs/2003-04-29-DataStructureAnalysisTR.html:1.8
--- llvm-www/pubs/2003-04-29-DataStructureAnalysisTR.html:1.7   Sat Apr 17 
15:13:02 2004
+++ llvm-www/pubs/2003-04-29-DataStructureAnalysisTR.html   Thu Nov 17 
15:46:30 2005
@@ -35,19 +35,13 @@
 blockquote
   Data Structure Analysis: An Efficient Context-Sensitive Heap Analysis,
   Chris Lattner amp; Vikram Advebr
-  Technical Report #UIUCDCS-R-2003-2340, Computer Science Dept., Univ. of
-  Illinois, Apr. 2003.
-/blockquote
-
-h2Update:/h2
-blockquote
-  This document was updated on 15 November 2003 to reflect improvements to the
-  algorithm, and to be more clear and precise.
+  Technical Report #UIUCDCS-R-2005-2657, Computer Science Dept., Univ. of
+  Illinois, Nov. 2005.
 /blockquote
 
 h2Download:/h2
 ul
-  lia href=2003-11-15-DataStructureAnalysisTR.psData Structure Analysis:
+  lia href=2005-11-DataStructureAnalysisTR.psData Structure Analysis:
   An Efficient Context-Sensitive Heap Analysis/a (PS)/li
   lia 

[llvm-commits] CVS: llvm-www/safecode/index.html

2005-11-17 Thread Dinakar Dhurjati


Changes in directory llvm-www/safecode:

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

*** empty log message ***

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

 index.html |1 +
 1 files changed, 1 insertion(+)


Index: llvm-www/safecode/index.html
diff -u llvm-www/safecode/index.html:1.11 llvm-www/safecode/index.html:1.12
--- llvm-www/safecode/index.html:1.11   Thu Nov 17 15:50:58 2005
+++ llvm-www/safecode/index.htmlThu Nov 17 15:53:31 2005
@@ -39,6 +39,7 @@
 H3 Publications/H3 
 
 ul
+  h2 Tech Report of PLDI submission/h2
   li a href=http://llvm.cs.uiuc.edu/pubs/2005-11-SAFECodeTR.html;/a 
Enforcing Alias Analysis for Weakly Typed Languages /a
   br
   Dinakar dhurjati, Sumant Kowshik, and Vikram Adve. UIUC TechReport/li



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


[llvm-commits] CVS: llvm-www/safecode/index.html

2005-11-17 Thread Dinakar Dhurjati


Changes in directory llvm-www/safecode:

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

*** empty log message ***

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

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


Index: llvm-www/safecode/index.html
diff -u llvm-www/safecode/index.html:1.12 llvm-www/safecode/index.html:1.13
--- llvm-www/safecode/index.html:1.12   Thu Nov 17 15:53:31 2005
+++ llvm-www/safecode/index.htmlThu Nov 17 15:55:49 2005
@@ -39,8 +39,8 @@
 H3 Publications/H3 
 
 ul
-  h2 Tech Report of PLDI submission/h2
-  li a href=http://llvm.cs.uiuc.edu/pubs/2005-11-SAFECodeTR.html;/a 
Enforcing Alias Analysis for Weakly Typed Languages /a
+  li   h4 Tech Report of PLDI submission/h4 br
+a href=http://llvm.cs.uiuc.edu/pubs/2005-11-SAFECodeTR.html;/a Enforcing 
Alias Analysis for Weakly Typed Languages /a
   br
   Dinakar dhurjati, Sumant Kowshik, and Vikram Adve. UIUC TechReport/li
   lia 
href=http://llvm.cs.uiuc.edu/pubs/2005-02-TECHREPORT-SAFECode.html;Memory 
Safety Without



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


[llvm-commits] CVS: llvm-www/safecode/index.html

2005-11-17 Thread Dinakar Dhurjati


Changes in directory llvm-www/safecode:

index.html updated: 1.14 - 1.15
---
Log message:

*** empty log message ***

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

 index.html |3 +--
 1 files changed, 1 insertion(+), 2 deletions(-)


Index: llvm-www/safecode/index.html
diff -u llvm-www/safecode/index.html:1.14 llvm-www/safecode/index.html:1.15
--- llvm-www/safecode/index.html:1.14   Thu Nov 17 15:56:06 2005
+++ llvm-www/safecode/index.htmlThu Nov 17 15:56:52 2005
@@ -39,8 +39,7 @@
 H3 Publications/H3 
 
 ul
-  li   h4 Tech Report of PLDI submission/h4 
-a href=http://llvm.cs.uiuc.edu/pubs/2005-11-SAFECodeTR.html;/a Enforcing 
Alias Analysis for Weakly Typed Languages /a
+  li   h4 Tech Report of PLDI submission/h4 a 
href=http://llvm.cs.uiuc.edu/pubs/2005-11-SAFECodeTR.html; Enforcing Alias 
Analysis for Weakly Typed Languages /a
   br
   Dinakar dhurjati, Sumant Kowshik, and Vikram Adve. UIUC TechReport/li
   lia 
href=http://llvm.cs.uiuc.edu/pubs/2005-02-TECHREPORT-SAFECode.html;Memory 
Safety Without



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


[llvm-commits] CVS: llvm-www/safecode/index.html

2005-11-17 Thread Dinakar Dhurjati


Changes in directory llvm-www/safecode:

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

*** empty log message ***

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

 index.html |7 ++-
 1 files changed, 6 insertions(+), 1 deletion(-)


Index: llvm-www/safecode/index.html
diff -u llvm-www/safecode/index.html:1.16 llvm-www/safecode/index.html:1.17
--- llvm-www/safecode/index.html:1.16   Thu Nov 17 15:58:35 2005
+++ llvm-www/safecode/index.htmlThu Nov 17 16:00:25 2005
@@ -20,6 +20,11 @@
 enforcement of safety, using aggressive compiler techniques developed in this
 project./p
 
+
+H2a href=http://llvm.cs.uiuc.edu/pubs/2005-11-SAFECodeTR.html;
+Enforcing Alias Analysis for Weakly Typed Languages : Technical Report
+of PLDI Submission/a/H2
+
 H3Project Members/H3
 
 H4Faculty/H4
@@ -39,7 +44,7 @@
 H3 Publications/H3 
 
 ul
-  li   h4 Tech Report of PLDI submission/h4 a 
href=http://llvm.cs.uiuc.edu/pubs/2005-11-SAFECodeTR.html; Enforcing Alias 
Analysis for Weakly Typed Languages /a
+  li  a href=http://llvm.cs.uiuc.edu/pubs/2005-11-SAFECodeTR.html; 
Enforcing Alias Analysis for Weakly Typed Languages /a
   br
   Dinakar dhurjati, Sumant Kowshik, and Vikram Adve. Technical Report
   #UIUCDCS-R-2005-2657, Computer Science Dept., University of



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


[llvm-commits] CVS: llvm-www/safecode/index.html

2005-11-17 Thread Dinakar Dhurjati


Changes in directory llvm-www/safecode:

index.html updated: 1.17 - 1.18
---
Log message:

*** empty log message ***

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

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


Index: llvm-www/safecode/index.html
diff -u llvm-www/safecode/index.html:1.17 llvm-www/safecode/index.html:1.18
--- llvm-www/safecode/index.html:1.17   Thu Nov 17 16:00:25 2005
+++ llvm-www/safecode/index.htmlThu Nov 17 16:01:51 2005
@@ -21,9 +21,9 @@
 project./p
 
 
-H2a href=http://llvm.cs.uiuc.edu/pubs/2005-11-SAFECodeTR.html;
+H2a href=http://llvm.cs.uiuc.edu/pubs/2005-11-SAFECodeTR.html;
 Enforcing Alias Analysis for Weakly Typed Languages : Technical Report
-of PLDI Submission/a/H2
+of PLDI Submission/a/H2
 
 H3Project Members/H3
 



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


[llvm-commits] CVS: llvm-www/safecode/index.html

2005-11-17 Thread Dinakar Dhurjati


Changes in directory llvm-www/safecode:

index.html updated: 1.18 - 1.19
---
Log message:

*** empty log message ***

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

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


Index: llvm-www/safecode/index.html
diff -u llvm-www/safecode/index.html:1.18 llvm-www/safecode/index.html:1.19
--- llvm-www/safecode/index.html:1.18   Thu Nov 17 16:01:51 2005
+++ llvm-www/safecode/index.htmlThu Nov 17 16:06:11 2005
@@ -66,9 +66,9 @@
   Sumant Kowshik, Dinakar Dhurjati, Vikram Adve. CASES 2002./li
 /ul  
 
-H3Implementation/H3
+!H3Implementation/H3
 
-pimg src=impl.jpg alt=Implementation picture/p
+!pimg src=impl.jpg alt=Implementation picture/p
 
 H3Download/H3
 



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


[llvm-commits] CVS: llvm-www/safecode/index.html

2005-11-17 Thread Dinakar Dhurjati


Changes in directory llvm-www/safecode:

index.html updated: 1.19 - 1.20
---
Log message:

*** empty log message ***

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

 index.html |4 
 1 files changed, 4 deletions(-)


Index: llvm-www/safecode/index.html
diff -u llvm-www/safecode/index.html:1.19 llvm-www/safecode/index.html:1.20
--- llvm-www/safecode/index.html:1.19   Thu Nov 17 16:06:11 2005
+++ llvm-www/safecode/index.htmlThu Nov 17 16:06:55 2005
@@ -66,10 +66,6 @@
   Sumant Kowshik, Dinakar Dhurjati, Vikram Adve. CASES 2002./li
 /ul  
 
-!H3Implementation/H3
-
-!pimg src=impl.jpg alt=Implementation picture/p
-
 H3Download/H3
 
 pNot in public domain for now. Check this page later./p



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


[llvm-commits] CVS: llvm-www/safecode/index.html

2005-11-17 Thread Dinakar Dhurjati


Changes in directory llvm-www/safecode:

index.html updated: 1.21 - 1.22
---
Log message:

*** empty log message ***

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

 index.html |5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)


Index: llvm-www/safecode/index.html
diff -u llvm-www/safecode/index.html:1.21 llvm-www/safecode/index.html:1.22
--- llvm-www/safecode/index.html:1.21   Thu Nov 17 16:07:29 2005
+++ llvm-www/safecode/index.htmlThu Nov 17 16:09:16 2005
@@ -22,8 +22,9 @@
 
 
 H2a href=http://llvm.cs.uiuc.edu/pubs/2005-11-SAFECodeTR.html;
-Enforcing Alias Analysis for Weakly Typed Languages : Technical Report
-of PLDI Submission/a/H2
+Accompanying Technical Report
+of our PLDI Submission/a/H2 Enforcing Alias Analysis for Weakly Typed 
Languages.
+
 
 H3Project Members/H3
 



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


[llvm-commits] CVS: llvm-www/safecode/index.html

2005-11-17 Thread Dinakar Dhurjati


Changes in directory llvm-www/safecode:

index.html updated: 1.22 - 1.23
---
Log message:

*** empty log message ***

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

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


Index: llvm-www/safecode/index.html
diff -u llvm-www/safecode/index.html:1.22 llvm-www/safecode/index.html:1.23
--- llvm-www/safecode/index.html:1.22   Thu Nov 17 16:09:16 2005
+++ llvm-www/safecode/index.htmlThu Nov 17 16:10:14 2005
@@ -21,10 +21,10 @@
 project./p
 
 
-H2a href=http://llvm.cs.uiuc.edu/pubs/2005-11-SAFECodeTR.html;
+H3a href=http://llvm.cs.uiuc.edu/pubs/2005-11-SAFECodeTR.html;
 Accompanying Technical Report
-of our PLDI Submission/a/H2 Enforcing Alias Analysis for Weakly Typed 
Languages.
-
+of our PLDI Submission/a: Enforcing Alias Analysis for Weakly Typed 
Languages.
+/H3
 
 H3Project Members/H3
 



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


[llvm-commits] CVS: llvm-www/pubs/2005-11-SAFECodeTR.pdf

2005-11-17 Thread Dinakar Dhurjati


Changes in directory llvm-www/pubs:

2005-11-SAFECodeTR.pdf updated: 1.2 - 1.3
---
Log message:

Fixed some inconsistencies
in safecode tech report


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

 2005-11-SAFECodeTR.pdf |0 
 1 files changed


Index: llvm-www/pubs/2005-11-SAFECodeTR.pdf



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


[llvm-commits] CVS: llvm-www/pubs/2005-11-SAFECodeTR.pdf

2005-11-17 Thread Dinakar Dhurjati


Changes in directory llvm-www/pubs:

2005-11-SAFECodeTR.pdf updated: 1.3 - 1.4
---
Log message:



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

 2005-11-SAFECodeTR.pdf |0 
 1 files changed


Index: llvm-www/pubs/2005-11-SAFECodeTR.pdf



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


[llvm-commits] CVS: llvm-www/pubs/index.html

2005-11-17 Thread Dinakar Dhurjati


Changes in directory llvm-www/pubs:

index.html updated: 1.32 - 1.33
---
Log message:

*** empty log message ***

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

 index.html |6 +-
 1 files changed, 5 insertions(+), 1 deletion(-)


Index: llvm-www/pubs/index.html
diff -u llvm-www/pubs/index.html:1.32 llvm-www/pubs/index.html:1.33
--- llvm-www/pubs/index.html:1.32   Mon Oct 24 10:16:23 2005
+++ llvm-www/pubs/index.htmlThu Nov 17 18:42:34 2005
@@ -33,7 +33,11 @@
 div class=www_sectiontitlePublications using LLVM/div
 
 ol
-
+lia href=2005-11-SAFECodeTR.htmlEnforcing Alias Analysis for
+Weakly Typed Languages/abr Dinakar Dhurjati, Sumant Kowshik, and 
Vikram
+Advebr iTechnical Report #UIUCDCS-R-2005-2657, Computer Science Dept., 
Univ. of
+Illinois/i, Nov. 2005.br /li
+
 lia href=2005-10-20-LCPC-RegAlloc.htmlRevisiting Graph Coloring Register
   Allocation: A Study of the Chaitin-Briggs and Callahan-Koblenz 
   Algorithms/abr



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


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

2005-11-17 Thread Nate Begeman


Changes in directory llvm/lib/Target:

Target.td updated: 1.56 - 1.57
---
Log message:

Also add the new vector value type here, for completeness.


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

 Target.td |1 +
 1 files changed, 1 insertion(+)


Index: llvm/lib/Target/Target.td
diff -u llvm/lib/Target/Target.td:1.56 llvm/lib/Target/Target.td:1.57
--- llvm/lib/Target/Target.td:1.56  Wed Oct 26 12:28:23 2005
+++ llvm/lib/Target/Target.td   Thu Nov 17 18:53:32 2005
@@ -38,6 +38,7 @@
 def f128   : ValueType128, 10;   // 128-bit floating point value
 def FlagVT : ValueType0  , 11;   // Condition code or machine flag
 def isVoid : ValueType0  , 12;   // Produces no value
+def Vector : ValueType0  , 13;   // Abstract vector type
 
 
//===--===//
 // Register file description - These classes are used to fill in the target



___
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/X86InstrInfo.td

2005-11-17 Thread Chris Lattner


Changes in directory llvm/lib/Target/X86:

X86InstrInfo.td updated: 1.137 - 1.138
---
Log message:

add more patterns, patch by Evan Cheng.


---
Diffs of the changes:  (+156 -108)

 X86InstrInfo.td |  264 +---
 1 files changed, 156 insertions(+), 108 deletions(-)


Index: llvm/lib/Target/X86/X86InstrInfo.td
diff -u llvm/lib/Target/X86/X86InstrInfo.td:1.137 
llvm/lib/Target/X86/X86InstrInfo.td:1.138
--- llvm/lib/Target/X86/X86InstrInfo.td:1.137   Wed Nov 16 20:01:55 2005
+++ llvm/lib/Target/X86/X86InstrInfo.td Thu Nov 17 19:04:42 2005
@@ -32,6 +32,12 @@
 def f64mem : X86MemOperandf64;
 def f80mem : X86MemOperandf80;
 
+// A couple of more descriptive operand definitions.
+// 16-bits but only 8 bits are significant.
+def i16i8imm  : Operandi16;
+// 32-bits but only 8 bits are significant.
+def i32i8imm  : Operandi32;
+
 // PCRelative calls need special operand formatting.
 let PrintMethod = printCallOperand in
   def calltarget : Operandi32;
@@ -127,12 +133,23 @@
 
 
 
//===--===//
+// Pattern fragments...
+//
+def immSExt8  : PatLeaf(imm), [{
+  // immSExt8 predicate - True if the immediate fits in a 8-bit sign extended
+  // field.
+  return (int)N-getValue() == (signed char)N-getValue();
+}];
+
+//===--===//
 // Instruction templates...
 
 class Ibits8 o, Format f, dag ops, string asm
   : X86Insto, f, NoImm, ops, asm;
-class Ii8 bits8 o, Format f, dag ops, string asm
-  : X86Insto, f, Imm8 , ops, asm;
+class Ii8 bits8 o, Format f, dag ops, string asm, listdag pattern
+  : X86Insto, f, Imm8 , ops, asm {
+  let Pattern = pattern;
+}
 class Ii16bits8 o, Format f, dag ops, string asm, listdag pattern
   : X86Insto, f, Imm16, ops, asm {
   let Pattern = pattern;
@@ -324,14 +341,16 @@
 def MOV32rr : I0x89, MRMDestReg, (ops R32:$dst, R32:$src),
 mov{l} {$src, $dst|$dst, $src};
 def MOV8ri  : Ii8 0xB0, AddRegFrm, (ops R8 :$dst, i8imm :$src),
-   mov{b} {$src, $dst|$dst, $src};
+   mov{b} {$src, $dst|$dst, $src},
+   [(set R8:$dst, imm:$src)];
 def MOV16ri : Ii160xB8, AddRegFrm, (ops R16:$dst, i16imm:$src),
-   mov{w} {$src, $dst|$dst, $src}, [(set R16:$dst, 
imm:$src)],
-   OpSize;
+   mov{w} {$src, $dst|$dst, $src},
+   [(set R16:$dst, imm:$src)], OpSize;
 def MOV32ri : Ii320xB8, AddRegFrm, (ops R32:$dst, i32imm:$src),
-   mov{l} {$src, $dst|$dst, $src}, [(set R32:$dst, 
imm:$src)];
+   mov{l} {$src, $dst|$dst, $src},
+   [(set R32:$dst, imm:$src)];
 def MOV8mi  : Ii8 0xC6, MRM0m, (ops i8mem :$dst, i8imm :$src),
-   mov{b} {$src, $dst|$dst, $src};
+   mov{b} {$src, $dst|$dst, $src}, [];
 def MOV16mi : Ii160xC7, MRM0m, (ops i16mem:$dst, i16imm:$src),
mov{w} {$src, $dst|$dst, $src}, [], OpSize;
 def MOV32mi : Ii320xC7, MRM0m, (ops i32mem:$dst, i32imm:$src),
@@ -676,7 +695,8 @@
 
 def AND8ri   : Ii80x80, MRM4r, 
(ops R8 :$dst, R8 :$src1, i8imm :$src2),
-   and{b} {$src2, $dst|$dst, $src2};
+   and{b} {$src2, $dst|$dst, $src2},
+   [(set R8:$dst, (and R8:$src1, imm:$src2))];
 def AND16ri  : Ii160x81, MRM4r, 
 (ops R16:$dst, R16:$src1, i16imm:$src2),
 and{w} {$src2, $dst|$dst, $src2},
@@ -686,11 +706,13 @@
 and{l} {$src2, $dst|$dst, $src2},
 [(set R32:$dst, (and R32:$src1, imm:$src2))];
 def AND16ri8 : Ii80x83, MRM4r, 
-   (ops R16:$dst, R16:$src1, i8imm:$src2),
-   and{w} {$src2, $dst|$dst, $src2} , OpSize;
+   (ops R16:$dst, R16:$src1, i16i8imm:$src2),
+   and{w} {$src2, $dst|$dst, $src2},
+   [(set R16:$dst, (and R16:$src1, immSExt8:$src2))], OpSize;
 def AND32ri8 : Ii80x83, MRM4r, 
-   (ops R32:$dst, R32:$src1, i8imm:$src2),
-   and{l} {$src2, $dst|$dst, $src2};
+   (ops R32:$dst, R32:$src1, i32i8imm:$src2),
+   and{l} {$src2, $dst|$dst, $src2},
+   [(set R32:$dst, (and R32:$src1, immSExt8:$src2))];
 
 let isTwoAddress = 0 in {
   def AND8mr   : I0x20, MRMDestMem,
@@ -704,7 +726,7 @@
and{l} {$src, $dst|$dst, $src};
   def AND8mi   : Ii80x80, MRM4m,
  (ops i8mem :$dst, i8imm :$src),
- and{b} {$src, $dst|$dst, $src};
+ and{b} {$src, $dst|$dst, $src}, [];
   def AND16mi  : Ii160x81, MRM4m,
   (ops i16mem:$dst, i16imm:$src),
   and{w} {$src, $dst|$dst, $src}, [], OpSize;
@@ -713,10 +735,10 @@
   and{l} {$src, $dst|$dst, $src}, [];
   def AND16mi8 : Ii80x83, MRM4m,
 

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

2005-11-17 Thread Chris Lattner


Changes in directory llvm/lib/VMCore:

Dominators.cpp updated: 1.63 - 1.64
---
Log message:

This requires proper dominance


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

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


Index: llvm/lib/VMCore/Dominators.cpp
diff -u llvm/lib/VMCore/Dominators.cpp:1.63 llvm/lib/VMCore/Dominators.cpp:1.64
--- llvm/lib/VMCore/Dominators.cpp:1.63 Mon Apr 25 15:50:33 2005
+++ llvm/lib/VMCore/Dominators.cpp  Fri Nov 18 01:27:53 2005
@@ -452,7 +452,7 @@
 
 DomSetType::const_iterator CDFI = ChildDF.begin(), CDFE = ChildDF.end();
 for (; CDFI != CDFE; ++CDFI) {
-  if (!Node-dominates(DT[*CDFI]))
+  if (!Node-properlyDominates(DT[*CDFI]))
 S.insert(*CDFI);
 }
   }



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

2005-11-17 Thread Chris Lattner


Changes in directory llvm/lib/Transforms/Utils:

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

This needs proper dominance


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

 PromoteMemoryToRegister.cpp |   19 ++-
 1 files changed, 14 insertions(+), 5 deletions(-)


Index: llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
diff -u llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp:1.80 
llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp:1.81
--- llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp:1.80  Thu Aug  4 
19:57:45 2005
+++ llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp   Fri Nov 18 
01:29:44 2005
@@ -96,12 +96,18 @@
 
 void run();
 
-/// dominates - Return true if I1 dominates I2 using the DominatorTree.
+/// properlyDominates - Return true if I1 properly dominates I2.
 ///
-bool dominates(Instruction *I1, Instruction *I2) const {
+bool properlyDominates(Instruction *I1, Instruction *I2) const {
   if (InvokeInst *II = dyn_castInvokeInst(I1))
 I1 = II-getNormalDest()-begin();
-  return DT[I1-getParent()]-dominates(DT[I2-getParent()]);
+  return DT[I1-getParent()]-properlyDominates(DT[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]);
 }
 
   private:
@@ -168,7 +174,8 @@
 // Remember the basic blocks which define new values for the alloca
 DefiningBlocks.push_back(SI-getParent());
 AllocaPointerVal = SI-getOperand(0);
-  } else if (LoadInst *LI = dyn_castLoadInst(User)) {
+  } else {
+LoadInst *LI = castLoadInst(User);
 // Otherwise it must be a load instruction, keep track of variable 
reads
 UsingBlocks.push_back(LI-getParent());
 AllocaPointerVal = LI;
@@ -194,6 +201,7 @@
   continue;
 }
 
+
 if (AST)
   PointerAllocaValues[AllocaNum] = AllocaPointerVal;
 
@@ -348,7 +356,8 @@
 for (unsigned i = 0, e = PNs.size(); i != e; ++i)
   if (PNs[i]) {
 if (Value *V = PNs[i]-hasConstantValue(true)) {
-  if (!isaInstruction(V) || dominates(castInstruction(V), PNs[i])) 
{
+  if (!isaInstruction(V) ||
+  properlyDominates(castInstruction(V), PNs[i])) {
 if (AST  isaPointerType(PNs[i]-getType()))
   AST-deleteValue(PNs[i]);
 PNs[i]-replaceAllUsesWith(V);



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

2005-11-17 Thread Chris Lattner


Changes in directory llvm/lib/Transforms/Utils:

PromoteMemoryToRegister.cpp updated: 1.81 - 1.82
---
Log message:

Implement a refinement to the mem2reg algorithm for cases where an alloca
has a single def.  In this case, look for uses that are dominated by the def
and attempt to rewrite them to directly use the stored value.

This speeds up mem2reg on these values and reduces the number of phi nodes
inserted.  This should address PR665: http://llvm.cs.uiuc.edu/PR665 .


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

 PromoteMemoryToRegister.cpp |   55 
 1 files changed, 55 insertions(+)


Index: llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
diff -u llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp:1.81 
llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp:1.82
--- llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp:1.81  Fri Nov 18 
01:29:44 2005
+++ llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp   Fri Nov 18 
01:31:42 2005
@@ -161,6 +161,7 @@
 std::vectorBasicBlock* DefiningBlocks;
 std::vectorBasicBlock* UsingBlocks;
 
+StoreInst  *OnlyStore = 0;
 BasicBlock *OnlyBlock = 0;
 bool OnlyUsedInOneBlock = true;
 
@@ -174,6 +175,7 @@
 // Remember the basic blocks which define new values for the alloca
 DefiningBlocks.push_back(SI-getParent());
 AllocaPointerVal = SI-getOperand(0);
+OnlyStore = SI;
   } else {
 LoadInst *LI = castLoadInst(User);
 // Otherwise it must be a load instruction, keep track of variable 
reads
@@ -201,6 +203,59 @@
   continue;
 }
 
+// If there is only a single store to this value, replace any loads of
+// it that are directly dominated by the definition with the value stored.
+if (DefiningBlocks.size() == 1) {
+  // Be aware of loads before the store.
+  std::setBasicBlock* ProcessedBlocks;
+  for (unsigned i = 0, e = UsingBlocks.size(); i != e; ++i)
+// If the store dominates the block and if we haven't processed it yet,
+// do so now.
+if (dominates(OnlyStore-getParent(), UsingBlocks[i]))
+  if (ProcessedBlocks.insert(UsingBlocks[i]).second) {
+BasicBlock *UseBlock = UsingBlocks[i];
+
+// If the use and store are in the same block, do a quick scan to
+// verify that there are no uses before the store.
+if (UseBlock == OnlyStore-getParent()) {
+  BasicBlock::iterator I = UseBlock-begin();
+  for (; *I != OnlyStore; ++I) { // scan block for store.
+if (isaLoadInst(I)  I-getOperand(0) == AI)
+  break;
+  }
+  if (*I != OnlyStore) break;  // Do not handle this case.
+}
+
+// Otherwise, if this is a different block or if all uses happen
+// after the store, do a simple linear scan to replace loads with
+// the stored value.
+for (BasicBlock::iterator I = UseBlock-begin(),E = 
UseBlock-end();
+ I != E; ) {
+  if (LoadInst *LI = dyn_castLoadInst(I++)) {
+if (LI-getOperand(0) == AI) {
+  LI-replaceAllUsesWith(OnlyStore-getOperand(0));
+  if (AST  isaPointerType(LI-getType()))
+AST-deleteValue(LI);
+  LI-eraseFromParent();
+}
+  }
+}
+
+// Finally, remove this block from the UsingBlock set.
+UsingBlocks[i] = UsingBlocks.back();
+--i; --e;
+  }
+
+  // Finally, after the scan, check to see if the store is all that is 
left.
+  if (UsingBlocks.empty()) {
+// The alloca has been processed, move on.
+Allocas[AllocaNum] = Allocas.back();
+Allocas.pop_back();
+--AllocaNum;
+continue;
+  }
+}
+
 
 if (AST)
   PointerAllocaValues[AllocaNum] = AllocaPointerVal;



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


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

2005-11-17 Thread Nate Begeman


Changes in directory llvm/lib/CodeGen/SelectionDAG:

SelectionDAGISel.cpp updated: 1.100 - 1.101
---
Log message:

Split out the shift code from visitBinary.


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

 SelectionDAGISel.cpp |   21 ++---
 1 files changed, 14 insertions(+), 7 deletions(-)


Index: llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
diff -u llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1.100 
llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1.101
--- llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1.100Wed Nov 16 
01:22:30 2005
+++ llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp  Fri Nov 18 01:42:56 2005
@@ -347,7 +347,8 @@
   void visitUnwind(UnwindInst I) { assert(0  TODO); }
 
   //
-  void visitBinary(User I, unsigned Opcode, bool isShift = false);
+  void visitBinary(User I, unsigned Opcode);
+  void visitShift(User I, unsigned Opcode);
   void visitAdd(User I) {
 visitBinary(I, I.getType()-isFloatingPoint() ? ISD::FADD : ISD::ADD);
   }
@@ -380,9 +381,9 @@
   void visitAnd(User I) { visitBinary(I, ISD::AND); }
   void visitOr (User I) { visitBinary(I, ISD::OR); }
   void visitXor(User I) { visitBinary(I, ISD::XOR); }
-  void visitShl(User I) { visitBinary(I, ISD::SHL, true); }
-  void visitShr(User I) {
-visitBinary(I, I.getType()-isUnsigned() ? ISD::SRL : ISD::SRA, true);
+  void visitShl(User I) { visitShift(I, ISD::SHL); }
+  void visitShr(User I) { 
+visitShift(I, I.getType()-isUnsigned() ? ISD::SRL : ISD::SRA);
   }
 
   void visitSetCC(User I, ISD::CondCode SignedOpc, ISD::CondCode UnsignedOpc);
@@ -520,13 +521,19 @@
   }
 }
 
-void SelectionDAGLowering::visitBinary(User I, unsigned Opcode, bool isShift) 
{
+void SelectionDAGLowering::visitBinary(User I, unsigned Opcode) {
   SDOperand Op1 = getValue(I.getOperand(0));
   SDOperand Op2 = getValue(I.getOperand(1));
 
-  if (isShift)
-Op2 = DAG.getNode(ISD::ANY_EXTEND, TLI.getShiftAmountTy(), Op2);
+  setValue(I, DAG.getNode(Opcode, Op1.getValueType(), Op1, Op2));
+}
 
+void SelectionDAGLowering::visitShift(User I, unsigned Opcode) {
+  SDOperand Op1 = getValue(I.getOperand(0));
+  SDOperand Op2 = getValue(I.getOperand(1));
+  
+  Op2 = DAG.getNode(ISD::ANY_EXTEND, TLI.getShiftAmountTy(), Op2);
+  
   setValue(I, DAG.getNode(Opcode, Op1.getValueType(), Op1, Op2));
 }
 



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