[llvm-commits] CVS: llvm/lib/Target/X86/README.txt
Changes in directory llvm/lib/Target/X86: README.txt updated: 1.122 -> 1.123 --- Log message: Update the readme to remove duplicate information and clarify the loop problem. --- Diffs of the changes: (+20 -45) README.txt | 65 ++--- 1 files changed, 20 insertions(+), 45 deletions(-) Index: llvm/lib/Target/X86/README.txt diff -u llvm/lib/Target/X86/README.txt:1.122 llvm/lib/Target/X86/README.txt:1.123 --- llvm/lib/Target/X86/README.txt:1.122Wed Jul 26 16:49:52 2006 +++ llvm/lib/Target/X86/README.txt Wed Aug 2 00:31:20 2006 @@ -198,7 +198,7 @@ _test: movl 8(%esp), %ebx - xor %eax, %eax + xor %eax, %eax cmpl %ebx, 4(%esp) setl %al ret @@ -340,22 +340,6 @@ //===-===// -Investigate whether it is better to codegen the following - -%tmp.1 = mul int %x, 9 -to - - movl4(%esp), %eax - leal(%eax,%eax,8), %eax - -as opposed to what llc is currently generating: - - imull $9, 4(%esp), %eax - -Currently the load folding imull has a higher complexity than the LEA32 pattern. - -//===-===// - We are currently lowering large (1MB+) memmove/memcpy to rep/stosl and rep/movsl We should leave these as libcalls for everything over a much lower threshold, since libc is hand tuned for medium and large mem ops (avoiding RFO for large @@ -671,35 +655,26 @@ //===-===// -Consider: -int foo(int *a, int t) { -int x; -for (x=0; x<40; ++x) - t = t + a[x] + x; -return t; -} - -We generate: -LBB1_1: #cond_true -movl %ecx, %esi -movl (%edx,%eax,4), %edi -movl %esi, %ecx -addl %edi, %ecx -addl %eax, %ecx -incl %eax -cmpl $40, %eax -jne LBB1_1 #cond_true - -GCC generates: - -L2: -addl(%ecx,%edx,4), %eax -addl%edx, %eax -addl$1, %edx -cmpl$40, %edx -jne L2 +int %foo(int* %a, int %t) { +entry: +br label %cond_true + +cond_true: ; preds = %cond_true, %entry +%x.0.0 = phi int [ 0, %entry ], [ %tmp9, %cond_true ] ; [#uses=3] +%t_addr.0.0 = phi int [ %t, %entry ], [ %tmp7, %cond_true ] ; [#uses=1] +%tmp2 = getelementptr int* %a, int %x.0.0 ; [#uses=1] +%tmp3 = load int* %tmp2 ; [#uses=1] +%tmp5 = add int %t_addr.0.0, %x.0.0 ; [#uses=1] +%tmp7 = add int %tmp5, %tmp3; [#uses=2] +%tmp9 = add int %x.0.0, 1 ; [#uses=2] +%tmp = setgt int %tmp9, 39 ; [#uses=1] +br bool %tmp, label %bb12, label %cond_true + +bb12: ; preds = %cond_true +ret int %tmp7 +} -Smells like a register coallescing/reassociation issue. +is pessimized by -loop-reduce and -indvars //===-===// ___ 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/X86TargetMachine.cpp
Changes in directory llvm/lib/Target/X86: X86TargetMachine.cpp updated: 1.119 -> 1.120 --- Log message: Disable LSR at -fast --- Diffs of the changes: (+1 -1) X86TargetMachine.cpp |2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/lib/Target/X86/X86TargetMachine.cpp diff -u llvm/lib/Target/X86/X86TargetMachine.cpp:1.119 llvm/lib/Target/X86/X86TargetMachine.cpp:1.120 --- llvm/lib/Target/X86/X86TargetMachine.cpp:1.119 Wed Jul 26 16:12:04 2006 +++ llvm/lib/Target/X86/X86TargetMachine.cppWed Aug 2 00:29:40 2006 @@ -91,7 +91,7 @@ FileType != TargetMachine::ObjectFile) return true; // Run loop strength reduction before anything else. - PM.add(createLoopStrengthReducePass(&TLInfo)); + if (!Fast) PM.add(createLoopStrengthReducePass(&TLInfo)); // FIXME: Implement efficient support for garbage collection intrinsics. PM.add(createLowerGCPass()); ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: nightlytest-serverside/individualfilesizegraph.php
Changes in directory nightlytest-serverside: individualfilesizegraph.php updated: 1.2 -> 1.3 --- Log message: Removed a mysql_free_result call that was unneeded --- Diffs of the changes: (+0 -1) individualfilesizegraph.php |1 - 1 files changed, 1 deletion(-) Index: nightlytest-serverside/individualfilesizegraph.php diff -u nightlytest-serverside/individualfilesizegraph.php:1.2 nightlytest-serverside/individualfilesizegraph.php:1.3 --- nightlytest-serverside/individualfilesizegraph.php:1.2 Tue Aug 1 18:35:41 2006 +++ nightlytest-serverside/individualfilesizegraph.php Tue Aug 1 19:30:05 2006 @@ -413,7 +413,6 @@ } print "\t\n"; } -mysql_free_result($night_table_query); print "\n"; ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/Transforms/Utils/LCSSA.cpp
Changes in directory llvm/lib/Transforms/Utils: LCSSA.cpp updated: 1.26 -> 1.27 --- Log message: Add special check to avoid isLoop call. Simple, but doesn't seem to speed up lcssa much in practice. --- Diffs of the changes: (+2 -2) LCSSA.cpp |4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) Index: llvm/lib/Transforms/Utils/LCSSA.cpp diff -u llvm/lib/Transforms/Utils/LCSSA.cpp:1.26 llvm/lib/Transforms/Utils/LCSSA.cpp:1.27 --- llvm/lib/Transforms/Utils/LCSSA.cpp:1.26Tue Aug 1 19:06:09 2006 +++ llvm/lib/Transforms/Utils/LCSSA.cpp Tue Aug 1 19:16:47 2006 @@ -177,7 +177,7 @@ } // If the user is in the loop, don't rewrite it! -if (inLoop(UserBB)) { +if (UserBB == Instr->getParent() || inLoop(UserBB)) { ++UI; continue; } @@ -215,7 +215,7 @@ UserBB = p->getIncomingBlock(OperandNo/2); } -if (!inLoop(UserBB)) { +if (*BB != UserBB && !inLoop(UserBB)) { AffectedValues.insert(I); break; } ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/Analysis/LoopInfo.cpp
Changes in directory llvm/lib/Analysis: LoopInfo.cpp updated: 1.74 -> 1.75 --- Log message: Speed up Loop::isLCSSAForm by using a binary search and single-entry cache. This reduces LCSSA pass time from 1.5s to 0.96s when run on eon in release+asserts mode. --- Diffs of the changes: (+14 -6) LoopInfo.cpp | 20 ++-- 1 files changed, 14 insertions(+), 6 deletions(-) Index: llvm/lib/Analysis/LoopInfo.cpp diff -u llvm/lib/Analysis/LoopInfo.cpp:1.74 llvm/lib/Analysis/LoopInfo.cpp:1.75 --- llvm/lib/Analysis/LoopInfo.cpp:1.74 Tue Jun 13 15:45:22 2006 +++ llvm/lib/Analysis/LoopInfo.cpp Tue Aug 1 19:14:16 2006 @@ -480,10 +480,15 @@ } /// isLCSSAForm - Return true if the Loop is in LCSSA form -bool Loop::isLCSSAForm() const { - for (Loop::block_iterator BB = block_begin(), E = block_end(); - BB != E; ++BB) { -for (BasicBlock::iterator I = (*BB)->begin(), E = (*BB)->end(); I != E; ++I) +bool Loop::isLCSSAForm() const { + // Sort the blocks vector so that we can use binary search to do quick + // lookups. + std::vector LoopBBs(block_begin(), block_end()); + std::sort(LoopBBs.begin(), LoopBBs.end()); + + for (unsigned i = 0, e = LoopBBs.size(); i != e; ++i) { +BasicBlock *BB = LoopBBs[i]; +for (BasicBlock::iterator I = BB->begin(), E = BB->end(); I != E; ++I) for (Value::use_iterator UI = I->use_begin(), E = I->use_end(); UI != E; ++UI) { BasicBlock *UserBB = cast(*UI)->getParent(); @@ -492,9 +497,12 @@ UserBB = p->getIncomingBlock(OperandNo/2); } -if (!contains(UserBB)) { +// Check the current block, as a fast-path. Most values are used in the +// same block they are defined in. +if (UserBB != BB && +// Otherwise, binary search LoopBBs for this block. +!std::binary_search(LoopBBs.begin(), LoopBBs.end(), UserBB)) return false; -} } } ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/Transforms/Utils/LCSSA.cpp
Changes in directory llvm/lib/Transforms/Utils: LCSSA.cpp updated: 1.25 -> 1.26 --- Log message: Replace the SSA update code in LCSSA with a bottom-up approach instead of a top down approach, inspired by discussions with Tanya. This approach is significantly faster, because it does not need dominator frontiers and it does not insert extraneous unused PHI nodes. For example, on 252.eon, in a release-asserts build, this speeds up LCSSA (which is the slowest pass in gccas) from 9.14s to 0.74s on my G5. This code is also slightly smaller and significantly simpler than the old code. Amusingly, in a normal Release build (which includes the "assert(L->isLCSSAForm());" assertion), asserting that the result of LCSSA is in LCSSA form is actually slower than the LCSSA transformation pass itself on 252.eon. I will see if Loop::isLCSSAForm can be sped up next. --- Diffs of the changes: (+97 -127) LCSSA.cpp | 224 ++ 1 files changed, 97 insertions(+), 127 deletions(-) Index: llvm/lib/Transforms/Utils/LCSSA.cpp diff -u llvm/lib/Transforms/Utils/LCSSA.cpp:1.25 llvm/lib/Transforms/Utils/LCSSA.cpp:1.26 --- llvm/lib/Transforms/Utils/LCSSA.cpp:1.25Sun Jul 9 16:35:40 2006 +++ llvm/lib/Transforms/Utils/LCSSA.cpp Tue Aug 1 19:06:09 2006 @@ -46,18 +46,15 @@ static Statistic<> NumLCSSA("lcssa", "Number of live out of a loop variables"); - class LCSSA : public FunctionPass { - public: - - -LoopInfo *LI; // Loop information -DominatorTree *DT; // Dominator Tree for the current Function... -DominanceFrontier *DF; // Current Dominance Frontier + struct LCSSA : public FunctionPass { +// Cached analysis information for the current function. +LoopInfo *LI; +DominatorTree *DT; std::vector LoopBlocks; virtual bool runOnFunction(Function &F); bool visitSubloop(Loop* L); -void processInstruction(Instruction* Instr, +void ProcessInstruction(Instruction* Instr, const std::vector& exitBlocks); /// This transformation requires natural loop information & requires that @@ -70,17 +67,13 @@ AU.addPreservedID(LoopSimplifyID); AU.addRequired(); AU.addRequired(); - AU.addRequired(); } private: SetVector getLoopValuesUsedOutsideLoop(Loop *L); -Value *getValueDominatingBlock(BasicBlock *BB, - std::map& PotDoms) { - return getValueDominatingDTNode(DT->getNode(BB), PotDoms); -} -Value *getValueDominatingDTNode(DominatorTree::Node *Node, - std::map& PotDoms); - + +PHINode *GetValueForBlock(DominatorTree::Node *BB, Instruction *OrigInst, + std::map &Phis); + /// inLoop - returns true if the given block is within the current loop const bool inLoop(BasicBlock* B) { return std::binary_search(LoopBlocks.begin(), LoopBlocks.end(), B); @@ -98,12 +91,10 @@ bool changed = false; LI = &getAnalysis(); - DF = &getAnalysis(); DT = &getAnalysis(); - for (LoopInfo::iterator I = LI->begin(), E = LI->end(); I != E; ++I) { + for (LoopInfo::iterator I = LI->begin(), E = LI->end(); I != E; ++I) changed |= visitSubloop(*I); - } return changed; } @@ -134,9 +125,8 @@ // for them in the appropriate exit blocks for (SetVector::iterator I = AffectedValues.begin(), - E = AffectedValues.end(); I != E; ++I) { -processInstruction(*I, exitBlocks); - } + E = AffectedValues.end(); I != E; ++I) +ProcessInstruction(*I, exitBlocks); assert(L->isLCSSAForm()); @@ -145,105 +135,62 @@ /// processInstruction - Given a live-out instruction, insert LCSSA Phi nodes, /// eliminate all out-of-loop uses. -void LCSSA::processInstruction(Instruction* Instr, - const std::vector& exitBlocks) -{ +void LCSSA::ProcessInstruction(Instruction *Instr, + const std::vector& exitBlocks) { ++NumLCSSA; // We are applying the transformation - - std::map Phis; - - // Add the base instruction to the Phis list. This makes tracking down - // the dominating values easier when we're filling in Phi nodes. This will - // be removed later, before we perform use replacement. - Phis[Instr->getParent()] = Instr; - - // Phi nodes that need to be IDF-processed - std::vector workList; - + + // Keep track of the blocks that have the value available already. + std::map Phis; + + DominatorTree::Node *InstrNode = DT->getNode(Instr->getParent()); + + // Insert the LCSSA phi's into the exit blocks (dominated by the value), and + // add them to the Phi's map. for (std::vector::const_iterator BBI = exitBlocks.begin(), BBE = exitBlocks.end(); BBI != BBE; ++BBI) { -Value*& phi = Phis[*BBI]; -if (phi == 0 && -DT->
[llvm-commits] CVS: nightlytest-serverside/NightlyTester.php
Changes in directory nightlytest-serverside: NightlyTester.php updated: 1.11 -> 1.12 --- Log message: Fixing up some indentation issues --- Diffs of the changes: (+2 -2) NightlyTester.php |4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) Index: nightlytest-serverside/NightlyTester.php diff -u nightlytest-serverside/NightlyTester.php:1.11 nightlytest-serverside/NightlyTester.php:1.12 --- nightlytest-serverside/NightlyTester.php:1.11 Tue Aug 1 18:43:47 2006 +++ nightlytest-serverside/NightlyTester.phpTue Aug 1 19:00:09 2006 @@ -183,8 +183,8 @@ $file_array = mysql_fetch_array($file_query); if(isset($file_array['file'])){ $result["{$row['added']}"]=array("{$file_array['file']}", - "{$file_array['size']}", - "{$file_array['type']}"); + "{$file_array['size']}", + "{$file_array['type']}"); }//end if else { $result["{$row['added']}"]=array("-", ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: nightlytest-serverside/drawmachinegraph.php fulltest.php NightlyTest.pl
Changes in directory nightlytest-serverside: drawmachinegraph.php updated: 1.1.1.1 -> 1.2 fulltest.php updated: 1.5 -> 1.6 NightlyTest.pl (r1.1.1.1) removed --- Log message: Some housekeeping stuff --- Diffs of the changes: (+2 -3) drawmachinegraph.php |1 - fulltest.php |4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) Index: nightlytest-serverside/drawmachinegraph.php diff -u nightlytest-serverside/drawmachinegraph.php:1.1.1.1 nightlytest-serverside/drawmachinegraph.php:1.2 --- nightlytest-serverside/drawmachinegraph.php:1.1.1.1 Wed Jul 5 15:56:33 2006 +++ nightlytest-serverside/drawmachinegraph.php Tue Aug 1 18:57:43 2006 @@ -212,7 +212,6 @@ while($row = mysql_fetch_array($night_table_query)){ - $night_id_arr= array(); preg_match("/(\d\d\d\d)\-(\d\d)\-(\d\d)\s(\d\d)\:(\d\d)\:(\d\d)/", $row['added'], $pjs); $seconds = mktime($pjs[4], $pjs[5], $pjs[6], $pjs[2], $pjs[3],$pjs[1]); array_push($xdata, $seconds); Index: nightlytest-serverside/fulltest.php diff -u nightlytest-serverside/fulltest.php:1.5 nightlytest-serverside/fulltest.php:1.6 --- nightlytest-serverside/fulltest.php:1.5 Thu Jul 27 14:11:12 2006 +++ nightlytest-serverside/fulltest.php Tue Aug 1 18:57:43 2006 @@ -469,8 +469,8 @@ * Printing file size information * **/ -print "(-) CVS information\n"; -print "\n"; +print "(-) File Size information\n"; +print "\n"; print"File Size information:\n"; ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: nightlytest-serverside/NightlyTester.php
Changes in directory nightlytest-serverside: NightlyTester.php updated: 1.10 -> 1.11 --- Log message: Fixing a crazy issue, the website doesnt seem to have the right file. --- Diffs of the changes: (+0 -1) NightlyTester.php |1 - 1 files changed, 1 deletion(-) Index: nightlytest-serverside/NightlyTester.php diff -u nightlytest-serverside/NightlyTester.php:1.10 nightlytest-serverside/NightlyTester.php:1.11 --- nightlytest-serverside/NightlyTester.php:1.10 Tue Aug 1 18:19:44 2006 +++ nightlytest-serverside/NightlyTester.phpTue Aug 1 18:43:47 2006 @@ -12,7 +12,6 @@ 'teststats_unexpfail' => 'Unexpected Test Failures', 'teststats_expfail' => 'Expected Test Failurs'); - /* * * Purpose: Get information about a certain machine ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: nightlytest-serverside/drawfilesizegraph.php individualfilesizegraph.php
Changes in directory nightlytest-serverside: drawfilesizegraph.php updated: 1.2 -> 1.3 individualfilesizegraph.php updated: 1.1 -> 1.2 --- Log message: Fixed include headers to no longer reflect the test file NightlyTester2.php which had experimental changes to NightlyTester.php --- Diffs of the changes: (+2 -2) drawfilesizegraph.php |2 +- individualfilesizegraph.php |2 +- 2 files changed, 2 insertions(+), 2 deletions(-) Index: nightlytest-serverside/drawfilesizegraph.php diff -u nightlytest-serverside/drawfilesizegraph.php:1.2 nightlytest-serverside/drawfilesizegraph.php:1.3 --- nightlytest-serverside/drawfilesizegraph.php:1.2Tue Aug 1 18:19:44 2006 +++ nightlytest-serverside/drawfilesizegraph.phpTue Aug 1 18:35:41 2006 @@ -3,7 +3,7 @@ include("jpgraph/jpgraph_line.php"); include("jpgraph/jpgraph_utils.inc"); include("jpgraph/jpgraph_date.php"); -include("NightlyTester2.php"); +include("NightlyTester.php"); $DEBUG=0; Index: nightlytest-serverside/individualfilesizegraph.php diff -u nightlytest-serverside/individualfilesizegraph.php:1.1 nightlytest-serverside/individualfilesizegraph.php:1.2 --- nightlytest-serverside/individualfilesizegraph.php:1.1 Tue Aug 1 18:19:44 2006 +++ nightlytest-serverside/individualfilesizegraph.php Tue Aug 1 18:35:41 2006 @@ -11,7 +11,7 @@ if(!(include "jpgraph_date.php")){ die("Error: could not load necessary files!\n"); }*/ -if(!(include "NightlyTester2.php")){ +if(!(include "NightlyTester.php")){ die("Error: could not load necessary files!\n"); } ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: nightlytest-serverside/individualfilesizegraph.php drawfilesizegraph.php NightlyTester.php
Changes in directory nightlytest-serverside: individualfilesizegraph.php added (r1.1) drawfilesizegraph.php updated: 1.1 -> 1.2 NightlyTester.php updated: 1.9 -> 1.10 --- Log message: Adding support for drawing graphs of an arbitrary number of file sizes over time. --- Diffs of the changes: (+485 -38) NightlyTester.php | 13 - drawfilesizegraph.php | 83 +--- individualfilesizegraph.php | 427 3 files changed, 485 insertions(+), 38 deletions(-) Index: nightlytest-serverside/individualfilesizegraph.php diff -c /dev/null nightlytest-serverside/individualfilesizegraph.php:1.1 *** /dev/null Tue Aug 1 18:19:55 2006 --- nightlytest-serverside/individualfilesizegraph.php Tue Aug 1 18:19:44 2006 *** *** 0 --- 1,427 + 0){ + $start = $HTTP_GET_VARS['start']; + $start_query = "and added >= \"$start\""; + $start_url = "&start=$start"; + } + else{ + print "Error: Incorrect URL!\n"; + die(); + } + } + else{ + $result = mysql_query("SELECT * FROM night WHERE machine=$machine ORDER BY added ASC") or die (mysql_error()); + $recent=mysql_fetch_array($result); + $start = $recent['added']; + mysql_free_result($result); + + $start_url="&start=$start"; + $start_query = " and added >= \"$start\""; + } + + if(isset($HTTP_GET_VARS['end'])){ + if(preg_match("/\d\d\d\d\-\d\d\-\d\d \d\d:\d\d:\d\d/", "{$HTTP_GET_VARS['end']}")>0){ + $end = $HTTP_GET_VARS['end']; + $end_query = "and added <= \"$end\""; + } + else{ + print "Error: Incorrect URL!\n"; + die(); + } + } + else{ + $result = mysql_query("SELECT * FROM night WHERE machine=$machine ORDER BY added DESC") or die (mysql_error()); + $recent=mysql_fetch_array($result); + $end = $recent['added']; + mysql_free_result($result); + + $end_url = "&end=$end"; + $end_query = " and added <= \"$end\""; + } + + if(isset($HTTP_GET_VARS['normalize'])){ + if(strcmp($HTTP_GET_VARS['normalize'],"true")==0){ + $NORMALIZE=1; + $normalize_url = "&normalize=true"; + $def_normalize="CHECKED"; + $def_unnormalize=""; + } + else{ + $normalize_url=""; + $NORMALIZE=0; + $def_normalize=""; + $def_unnormalize="CHECKED"; + } + } + else{ + $NORMALIZE=0; + $normalize_url=""; + $def_normalize=""; + $def_unnormalize="CHECKED"; + } + if(isset($HTTP_GET_VARS['showdata'])){ + if(strcmp($HTTP_GET_VARS['showdata'],"true")==0){ + $SHOWDATA=1; + $showdata="&showdata=true"; + } + else{ + $SHOWDATA=0; + $showdata=""; + } + } + else{ + $SHOWDATA=0; + $showdata=""; + } + + if(isset($HTTP_GET_VARS['showpoints'])){ + if(strcmp($HTTP_GET_VARS['showpoints'],"true")==0){ + $SHOWPOINTS=1; + $showpoints="&showpoints=true"; + } + else{ + $SHOWPOINTS=0; + $showpoints=""; + } + } + else{ + $SHOWPOINTS=0; + $showpoints=""; + } + + / + * + * printing error image if necessary + * + / + if($URL_ERROR==1){ + printErrorMsg("URL Error: $error_msg. Could not draw graph."); + } + + / + * + * creating the page + * + / + + ?> + + + + LLVM Nightly Test Results Machine Graph + + function toggleLayer(whichLayer) + { + if (document.getElementById) + { + // this is the way the standards work + var style2 = document.getElementById(whichLayer).style; + style2.display = style2.display? "":"none"; + var link = document.getElementById(whichLayer+"_").innerHTML; + if(link.indexOf("(+)") >= 0){ + document.getElementById(whichLayer+"_").innerHTML="(-)"+link.substring(3,link.length); + } + else{ + document.getElementById(whichLayer+"_").innerHTML="(+)"+link.substring(3,link.length); + } + + }//end if + else if (document.all) + { + // this is the way old msie versions work + var style2 = document.all[whichLayer].style; + style2.display = style2.display? "":"none"; + var link = document.all[wwhichLayer+"_"].innerHTML; + if(link.indexOf("(+)") >= 0){ + document.all[whichLayer+"_"].innerHTML="(-)"+link.substring(3,link.length); + } + else{ + document.all[whichLayer+"_"].innerHTML="(+)"+link.substring(3,link.length); + } + + } + else if (document.layers) + { + // this is the way nn4 works + var style2 = document.layers[whichLayer].style; + style2.display = style2.display? "":"none"; + var link = document.layers[whichLayer+"_"].innerHTML; + if(l
[llvm-commits] CVS: llvm/tools/lli/lli.cpp
Changes in directory llvm/tools/lli: lli.cpp updated: 1.57 -> 1.58 --- Log message: Fix the build on case-sensitive filesystems :( --- Diffs of the changes: (+1 -1) lli.cpp |2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/tools/lli/lli.cpp diff -u llvm/tools/lli/lli.cpp:1.57 llvm/tools/lli/lli.cpp:1.58 --- llvm/tools/lli/lli.cpp:1.57 Tue Aug 1 09:21:23 2006 +++ llvm/tools/lli/lli.cpp Tue Aug 1 17:34:35 2006 @@ -17,7 +17,7 @@ #include "llvm/ModuleProvider.h" #include "llvm/Type.h" #include "llvm/Bytecode/Reader.h" -#include "llvm/Codegen/LinkAllCodegenComponents.h" +#include "llvm/CodeGen/LinkAllCodegenComponents.h" #include "llvm/ExecutionEngine/JIT.h" #include "llvm/ExecutionEngine/Interpreter.h" #include "llvm/ExecutionEngine/GenericValue.h" ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/tools/llc/llc.cpp
Changes in directory llvm/tools/llc: llc.cpp updated: 1.135 -> 1.136 --- Log message: Fix the build on case-sensitive filesystems :( --- Diffs of the changes: (+1 -1) llc.cpp |2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/tools/llc/llc.cpp diff -u llvm/tools/llc/llc.cpp:1.135 llvm/tools/llc/llc.cpp:1.136 --- llvm/tools/llc/llc.cpp:1.135Tue Aug 1 09:21:23 2006 +++ llvm/tools/llc/llc.cpp Tue Aug 1 17:34:35 2006 @@ -14,7 +14,7 @@ //===--===// #include "llvm/Bytecode/Reader.h" -#include "llvm/Codegen/LinkAllCodegenComponents.h" +#include "llvm/CodeGen/LinkAllCodegenComponents.h" #include "llvm/Target/SubtargetFeature.h" #include "llvm/Target/TargetData.h" #include "llvm/Target/TargetMachine.h" ___ 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
Changes in directory llvm/lib/VMCore: Dominators.cpp updated: 1.71 -> 1.72 --- Log message: Add dominates/properlyDominates queries to IDom. --- Diffs of the changes: (+11 -0) Dominators.cpp | 11 +++ 1 files changed, 11 insertions(+) Index: llvm/lib/VMCore/Dominators.cpp diff -u llvm/lib/VMCore/Dominators.cpp:1.71 llvm/lib/VMCore/Dominators.cpp:1.72 --- llvm/lib/VMCore/Dominators.cpp:1.71 Wed Jun 7 17:00:26 2006 +++ llvm/lib/VMCore/Dominators.cpp Tue Aug 1 17:24:47 2006 @@ -211,6 +211,17 @@ return false; } +/// dominates - Return true if A dominates B. +/// +bool ImmediateDominatorsBase::dominates(BasicBlock *A, BasicBlock *B) const { + assert(A && B && "Null pointers?"); + + // Walk up the dominator tree from B to determine if A dom B. + while (A != B && B) +B = get(B); + return A == B; +} + void ImmediateDominatorsBase::print(std::ostream &o, const Module* ) const { Function *F = getRoots()[0]->getParent(); for (Function::iterator I = F->begin(), E = F->end(); I != E; ++I) { ___ 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
Changes in directory llvm/include/llvm/Analysis: Dominators.h updated: 1.58 -> 1.59 --- Log message: Add dominates/properlyDominates queries to IDom. --- Diffs of the changes: (+10 -0) Dominators.h | 10 ++ 1 files changed, 10 insertions(+) Index: llvm/include/llvm/Analysis/Dominators.h diff -u llvm/include/llvm/Analysis/Dominators.h:1.58 llvm/include/llvm/Analysis/Dominators.h:1.59 --- llvm/include/llvm/Analysis/Dominators.h:1.58Wed Jun 7 17:00:25 2006 +++ llvm/include/llvm/Analysis/Dominators.h Tue Aug 1 17:24:38 2006 @@ -101,7 +101,17 @@ inline BasicBlock *operator[](BasicBlock *BB) const { return get(BB); } + + /// dominates - Return true if A dominates B. + /// + bool dominates(BasicBlock *A, BasicBlock *B) const; + /// properlyDominates - Return true if A dominates B and A != B. + /// + bool properlyDominates(BasicBlock *A, BasicBlock *B) const { +return A != B || properlyDominates(A, B); + } + /// get() - Synonym for operator[]. /// inline BasicBlock *get(BasicBlock *BB) const { ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: nightlytest-serverside/NightlyTester.php
Changes in directory nightlytest-serverside: NightlyTester.php updated: 1.8 -> 1.9 --- Log message: Changed get_file_history to return an array of data that makes sense --- Diffs of the changes: (+4 -4) NightlyTester.php |8 1 files changed, 4 insertions(+), 4 deletions(-) Index: nightlytest-serverside/NightlyTester.php diff -u nightlytest-serverside/NightlyTester.php:1.8 nightlytest-serverside/NightlyTester.php:1.9 --- nightlytest-serverside/NightlyTester.php:1.8Tue Aug 1 15:36:16 2006 +++ nightlytest-serverside/NightlyTester.phpTue Aug 1 15:41:37 2006 @@ -168,7 +168,7 @@ * particular machine for a specific file * Returns: an array with the key being the date and * the value being an array containing file name, size - * night, and build type + * and build type * */ function get_file_history($mysql_link, $machine_id, $file_name){ @@ -183,9 +183,9 @@ $file_query = mysql_query($file_select); $file_array = mysql_fetch_array($file_query); if(isset($file_array['file'])){ - $file_array['size']=array(); - array_unshift($file_array['size'], "{$row['added']}"); - array_push($result, $file_array['size']); + $result["{$file_array['night']}"]=array("{$file_array[['file']}", + "{$file_array[['size']}", + "{$file_array[['type']}")); }//end if mysql_free_result($file_query); }//end while ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: nightlytest-serverside/NightlyTester.php
Changes in directory nightlytest-serverside: NightlyTester.php updated: 1.7 -> 1.8 --- Log message: Fixed issue where php didnt know we wanted to use a variable as an array --- Diffs of the changes: (+1 -0) NightlyTester.php |1 + 1 files changed, 1 insertion(+) Index: nightlytest-serverside/NightlyTester.php diff -u nightlytest-serverside/NightlyTester.php:1.7 nightlytest-serverside/NightlyTester.php:1.8 --- nightlytest-serverside/NightlyTester.php:1.7Tue Aug 1 15:33:01 2006 +++ nightlytest-serverside/NightlyTester.phpTue Aug 1 15:36:16 2006 @@ -183,6 +183,7 @@ $file_query = mysql_query($file_select); $file_array = mysql_fetch_array($file_query); if(isset($file_array['file'])){ + $file_array['size']=array(); array_unshift($file_array['size'], "{$row['added']}"); array_push($result, $file_array['size']); }//end if ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: nightlytest-serverside/NightlyTester.php
Changes in directory nightlytest-serverside: NightlyTester.php updated: 1.6 -> 1.7 --- Log message: Fixed the get_file_history function which returns the size of a file over time --- Diffs of the changes: (+4 -5) NightlyTester.php |9 - 1 files changed, 4 insertions(+), 5 deletions(-) Index: nightlytest-serverside/NightlyTester.php diff -u nightlytest-serverside/NightlyTester.php:1.6 nightlytest-serverside/NightlyTester.php:1.7 --- nightlytest-serverside/NightlyTester.php:1.6Wed Jul 26 14:11:15 2006 +++ nightlytest-serverside/NightlyTester.phpTue Aug 1 15:33:01 2006 @@ -155,7 +155,7 @@ * */ function get_file($mysql_link, $file, $night_id){ - $query = mysql_query("select * from file WHERE $file=\"$file\" and night=$night_id") or die (mysql_error()); + $query = mysql_query("select * from file WHERE file=\"$file\" and night=$night_id") or die (mysql_error()); $file = mysql_fetch_array($query); $result = array("{$file['file']}","{$file['size']}","{$file['night']}","{$file['type']}"); mysql_free_result($query); @@ -179,13 +179,12 @@ $result = array(); while($row = mysql_fetch_array($nights_query)){ $file_select = "select * from file where night={$row['id']} and ". - "file=\"$file_name\""; + "file=\"$file_name\""; $file_query = mysql_query($file_select); $file_array = mysql_fetch_array($file_query); if(isset($file_array['file'])){ - $value=get_file($mysql_link, $file_name, "{$row['id']}"); - array_unshift($value, "{$row['added']}"); - array_push($result, $value); + array_unshift($file_array['size'], "{$row['added']}"); + array_push($result, $file_array['size']); }//end if mysql_free_result($file_query); }//end while ___ 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
Changes in directory llvm/lib/CodeGen/SelectionDAG: SelectionDAGISel.cpp updated: 1.264 -> 1.265 --- Log message: Now that the ISel is available, it's possible to create a default instruction scheduler creator. --- Diffs of the changes: (+22 -17) SelectionDAGISel.cpp | 39 ++- 1 files changed, 22 insertions(+), 17 deletions(-) Index: llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp diff -u llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1.264 llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1.265 --- llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1.264Tue Aug 1 13:29:48 2006 +++ llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp Tue Aug 1 14:14:14 2006 @@ -68,7 +68,8 @@ cl::desc("Instruction schedulers available:")); static RegisterScheduler - defaultListDAGScheduler("default", " Best scheduler for the target", NULL); + defaultListDAGScheduler("default", " Best scheduler for the target", + createDefaultScheduler); } // namespace namespace { @@ -124,6 +125,24 @@ namespace llvm { //======// + /// createDefaultScheduler - This creates an instruction scheduler appropriate + /// for the target. + ScheduleDAG* createDefaultScheduler(SelectionDAGISel *IS, + SelectionDAG *DAG, + MachineBasicBlock *BB) { +TargetLowering &TLI = IS->getTargetLowering(); + +if (TLI.getSchedulingPreference() == TargetLowering::SchedulingForLatency) { + return createTDListDAGScheduler(IS, DAG, BB); +} else { + assert(TLI.getSchedulingPreference() == + TargetLowering::SchedulingForRegPressure && "Unknown sched type!"); + return createBURRListDAGScheduler(IS, DAG, BB); +} + } + + + //======// /// FunctionLoweringInfo - This contains information that is global to a /// function that is used when lowering a region of the function. class FunctionLoweringInfo { @@ -3614,22 +3633,8 @@ RegisterScheduler::getDefault(); if (!Ctor) { -if (std::string("default") == std::string(ISHeuristic)) { - if (TLI.getSchedulingPreference() == TargetLowering::SchedulingForLatency) -Ctor = RegisterScheduler::FindCtor("list-td"); - else { -assert(TLI.getSchedulingPreference() == - TargetLowering::SchedulingForRegPressure && "Unknown sched type!"); -Ctor = RegisterScheduler::FindCtor("list-burr"); - } - - assert(Ctor && "Default instruction scheduler not present"); - if (!Ctor) Ctor = RegisterScheduler::FindCtor("none"); -} else { - Ctor = RegisterScheduler::FindCtor(ISHeuristic); -} - - RegisterScheduler::setDefault(Ctor); +Ctor = RegisterScheduler::FindCtor(ISHeuristic); +RegisterScheduler::setDefault(Ctor); } assert(Ctor && "No instruction scheduler found"); ___ 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/LinkAllCodegenComponents.h ScheduleDAG.h SelectionDAGISel.h
Changes in directory llvm/include/llvm/CodeGen: LinkAllCodegenComponents.h updated: 1.2 -> 1.3 ScheduleDAG.h updated: 1.29 -> 1.30 SelectionDAGISel.h updated: 1.22 -> 1.23 --- Log message: Now that the ISel is available, it's possible to create a default instruction scheduler creator. --- Diffs of the changes: (+8 -0) LinkAllCodegenComponents.h |1 + ScheduleDAG.h |5 + SelectionDAGISel.h |2 ++ 3 files changed, 8 insertions(+) Index: llvm/include/llvm/CodeGen/LinkAllCodegenComponents.h diff -u llvm/include/llvm/CodeGen/LinkAllCodegenComponents.h:1.2 llvm/include/llvm/CodeGen/LinkAllCodegenComponents.h:1.3 --- llvm/include/llvm/CodeGen/LinkAllCodegenComponents.h:1.2Tue Aug 1 13:29:48 2006 +++ llvm/include/llvm/CodeGen/LinkAllCodegenComponents.hTue Aug 1 14:14:14 2006 @@ -38,6 +38,7 @@ (void) llvm::createBURRListDAGScheduler(NULL, NULL, NULL); (void) llvm::createTDRRListDAGScheduler(NULL, NULL, NULL); (void) llvm::createTDListDAGScheduler(NULL, NULL, NULL); + (void) llvm::createDefaultScheduler(NULL, NULL, NULL); } } ForceCodegenLinking; // Force link by creating a global definition. Index: llvm/include/llvm/CodeGen/ScheduleDAG.h diff -u llvm/include/llvm/CodeGen/ScheduleDAG.h:1.29 llvm/include/llvm/CodeGen/ScheduleDAG.h:1.30 --- llvm/include/llvm/CodeGen/ScheduleDAG.h:1.29Tue Aug 1 13:29:48 2006 +++ llvm/include/llvm/CodeGen/ScheduleDAG.h Tue Aug 1 14:14:14 2006 @@ -258,6 +258,11 @@ SelectionDAG *DAG, MachineBasicBlock *BB); + /// createDefaultScheduler - This creates an instruction scheduler appropriate + /// for the target. + ScheduleDAG* createDefaultScheduler(SelectionDAGISel *IS, + SelectionDAG *DAG, + MachineBasicBlock *BB); } #endif Index: llvm/include/llvm/CodeGen/SelectionDAGISel.h diff -u llvm/include/llvm/CodeGen/SelectionDAGISel.h:1.22 llvm/include/llvm/CodeGen/SelectionDAGISel.h:1.23 --- llvm/include/llvm/CodeGen/SelectionDAGISel.h:1.22 Tue Aug 1 13:29:48 2006 +++ llvm/include/llvm/CodeGen/SelectionDAGISel.hTue Aug 1 14:14:14 2006 @@ -41,6 +41,8 @@ MachineBasicBlock *BB; SelectionDAGISel(TargetLowering &tli) : TLI(tli), JT(0,0,0,0) {} + + TargetLowering &getTargetLowering() { return TLI; } virtual void getAnalysisUsage(AnalysisUsage &AU) 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/ARM/ARMAsmPrinter.cpp ARMInstrInfo.td
Changes in directory llvm/lib/Target/ARM: ARMAsmPrinter.cpp updated: 1.9 -> 1.10 ARMInstrInfo.td updated: 1.10 -> 1.11 --- Log message: start comments with # move the constant pool to .text correctly print loads of labels mark R0, R1, R2 and R3 as caller save --- Diffs of the changes: (+21 -7) ARMAsmPrinter.cpp | 22 +- ARMInstrInfo.td |6 -- 2 files changed, 21 insertions(+), 7 deletions(-) Index: llvm/lib/Target/ARM/ARMAsmPrinter.cpp diff -u llvm/lib/Target/ARM/ARMAsmPrinter.cpp:1.9 llvm/lib/Target/ARM/ARMAsmPrinter.cpp:1.10 --- llvm/lib/Target/ARM/ARMAsmPrinter.cpp:1.9 Tue Aug 1 07:58:43 2006 +++ llvm/lib/Target/ARM/ARMAsmPrinter.cpp Tue Aug 1 13:53:10 2006 @@ -43,8 +43,8 @@ Data32bitsDirective = "\t.word\t"; Data64bitsDirective = 0; ZeroDirective = "\t.skip\t"; - CommentString = "!"; - ConstantPoolSection = "\t.section \".rodata\",#alloc\n"; + CommentString = "#"; + ConstantPoolSection = "\t.text\n"; AlignmentIsInBytes = false; } @@ -60,9 +60,21 @@ } void printMemRegImm(const MachineInstr *MI, unsigned OpNo) { - printOperand(MI, OpNo + 1); - O << ", "; - printOperand(MI, OpNo); + const MachineOperand &MO1 = MI->getOperand(OpNo); + const MachineOperand &MO2 = MI->getOperand(OpNo + 1); + assert(MO1.isImmediate()); + + if (MO2.isConstantPoolIndex()) { + printOperand(MI, OpNo + 1); + } else if (MO2.isRegister()) { + O << '['; + printOperand(MI, OpNo + 1); + O << ", "; + printOperand(MI, OpNo); + O << ']'; + } else { + assert(0 && "Invalid Operand Type"); + } } void printOperand(const MachineInstr *MI, int opNum); Index: llvm/lib/Target/ARM/ARMInstrInfo.td diff -u llvm/lib/Target/ARM/ARMInstrInfo.td:1.10 llvm/lib/Target/ARM/ARMInstrInfo.td:1.11 --- llvm/lib/Target/ARM/ARMInstrInfo.td:1.10Fri Jul 21 07:26:16 2006 +++ llvm/lib/Target/ARM/ARMInstrInfo.td Tue Aug 1 13:53:10 2006 @@ -57,10 +57,12 @@ def bx: InstARM<(ops IntRegs:$dst), "bx $dst", [(brind IntRegs:$dst)]>; } -def bl: InstARM<(ops i32imm:$func, variable_ops), "bl $func", [(ARMcall tglobaladdr:$func)]>; +let Defs = [R0, R1, R2, R3] in { + def bl: InstARM<(ops i32imm:$func, variable_ops), "bl $func", [(ARMcall tglobaladdr:$func)]>; +} def ldr : InstARM<(ops IntRegs:$dst, memri:$addr), - "ldr $dst, [$addr]", + "ldr $dst, $addr", [(set IntRegs:$dst, (load iaddr:$addr))]>; def str : InstARM<(ops IntRegs:$src, IntRegs:$addr), ___ 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/ScheduleDAGList.cpp ScheduleDAGRRList.cpp ScheduleDAGSimple.cpp SelectionDAGISel.cpp
Changes in directory llvm/lib/CodeGen/SelectionDAG: ScheduleDAGList.cpp updated: 1.63 -> 1.64 ScheduleDAGRRList.cpp updated: 1.10 -> 1.11 ScheduleDAGSimple.cpp updated: 1.14 -> 1.15 SelectionDAGISel.cpp updated: 1.263 -> 1.264 --- Log message: 1. Change use of "Cache" to "Default". 2. Added argument to instruction scheduler creators so the creators can do special things. 3. Repaired target hazard code. 4. Misc. More to follow. --- Diffs of the changes: (+23 -11) ScheduleDAGList.cpp |6 -- ScheduleDAGRRList.cpp |6 -- ScheduleDAGSimple.cpp |9 ++--- SelectionDAGISel.cpp | 13 + 4 files changed, 23 insertions(+), 11 deletions(-) Index: llvm/lib/CodeGen/SelectionDAG/ScheduleDAGList.cpp diff -u llvm/lib/CodeGen/SelectionDAG/ScheduleDAGList.cpp:1.63 llvm/lib/CodeGen/SelectionDAG/ScheduleDAGList.cpp:1.64 --- llvm/lib/CodeGen/SelectionDAG/ScheduleDAGList.cpp:1.63 Tue Aug 1 09:21:23 2006 +++ llvm/lib/CodeGen/SelectionDAG/ScheduleDAGList.cpp Tue Aug 1 13:29:48 2006 @@ -21,6 +21,7 @@ #define DEBUG_TYPE "sched" #include "llvm/CodeGen/MachinePassRegistry.h" #include "llvm/CodeGen/ScheduleDAG.h" +#include "llvm/CodeGen/SelectionDAGISel.h" #include "llvm/CodeGen/SSARegMap.h" #include "llvm/Target/MRegisterInfo.h" #include "llvm/Target/TargetData.h" @@ -519,9 +520,10 @@ /// createTDListDAGScheduler - This creates a top-down list scheduler with a /// new hazard recognizer. This scheduler takes ownership of the hazard /// recognizer and deletes it when done. -ScheduleDAG* llvm::createTDListDAGScheduler(SelectionDAG *DAG, +ScheduleDAG* llvm::createTDListDAGScheduler(SelectionDAGISel *IS, +SelectionDAG *DAG, MachineBasicBlock *BB) { return new ScheduleDAGList(*DAG, BB, DAG->getTarget(), new LatencyPriorityQueue(), - new HazardRecognizer()); + IS->CreateTargetHazardRecognizer()); } Index: llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp diff -u llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp:1.10 llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp:1.11 --- llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp:1.10Tue Aug 1 09:21:23 2006 +++ llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp Tue Aug 1 13:29:48 2006 @@ -886,13 +886,15 @@ // Public Constructor Functions //===--===// -llvm::ScheduleDAG* llvm::createBURRListDAGScheduler(SelectionDAG *DAG, +llvm::ScheduleDAG* llvm::createBURRListDAGScheduler(SelectionDAGISel *IS, +SelectionDAG *DAG, MachineBasicBlock *BB) { return new ScheduleDAGRRList(*DAG, BB, DAG->getTarget(), true, new BURegReductionPriorityQueue()); } -llvm::ScheduleDAG* llvm::createTDRRListDAGScheduler(SelectionDAG *DAG, +llvm::ScheduleDAG* llvm::createTDRRListDAGScheduler(SelectionDAGISel *IS, +SelectionDAG *DAG, MachineBasicBlock *BB) { return new ScheduleDAGRRList(*DAG, BB, DAG->getTarget(), false, new TDRegReductionPriorityQueue()); Index: llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSimple.cpp diff -u llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSimple.cpp:1.14 llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSimple.cpp:1.15 --- llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSimple.cpp:1.14Tue Aug 1 09:21:23 2006 +++ llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSimple.cpp Tue Aug 1 13:29:48 2006 @@ -1120,21 +1120,24 @@ /// createSimpleDAGScheduler - This creates a simple two pass instruction /// scheduler using instruction itinerary. -llvm::ScheduleDAG* llvm::createSimpleDAGScheduler(SelectionDAG *DAG, +llvm::ScheduleDAG* llvm::createSimpleDAGScheduler(SelectionDAGISel *IS, + SelectionDAG *DAG, MachineBasicBlock *BB) { return new ScheduleDAGSimple(false, false, *DAG, BB, DAG->getTarget()); } /// createNoItinsDAGScheduler - This creates a simple two pass instruction /// scheduler without using instruction itinerary. -llvm::ScheduleDAG* llvm::createNoItinsDAGScheduler(SelectionDAG *DAG, +llvm::ScheduleDAG* llvm::createNoItinsDAGScheduler(SelectionDAGISel *IS, + SelectionDAG *DAG, MachineBasicBlock *BB) { return new ScheduleDAGSimple(false, true, *DAG, BB, DAG->getTarget()); } /// createBFS_DAGScheduler - This creates a simple breadth first instruction /// scheduler. -llvm::ScheduleDAG* llvm::createBFS_DAGScheduler(SelectionDAG *DAG, +llvm::ScheduleDAG* llvm::createBF
[llvm-commits] CVS: llvm/lib/CodeGen/MachinePassRegistry.cpp Passes.cpp
Changes in directory llvm/lib/CodeGen: MachinePassRegistry.cpp updated: 1.1 -> 1.2 Passes.cpp updated: 1.19 -> 1.20 --- Log message: 1. Change use of "Cache" to "Default". 2. Added argument to instruction scheduler creators so the creators can do special things. 3. Repaired target hazard code. 4. Misc. More to follow. --- Diffs of the changes: (+8 -4) MachinePassRegistry.cpp |8 ++-- Passes.cpp |4 ++-- 2 files changed, 8 insertions(+), 4 deletions(-) Index: llvm/lib/CodeGen/MachinePassRegistry.cpp diff -u llvm/lib/CodeGen/MachinePassRegistry.cpp:1.1 llvm/lib/CodeGen/MachinePassRegistry.cpp:1.2 --- llvm/lib/CodeGen/MachinePassRegistry.cpp:1.1Tue Aug 1 11:31:08 2006 +++ llvm/lib/CodeGen/MachinePassRegistry.cppTue Aug 1 13:29:48 2006 @@ -1,4 +1,4 @@ -//===-- MachineInstr.cpp --===// +//===-- CodeGen/MachineInstr.cpp --===// // // The LLVM Compiler Infrastructure // @@ -6,9 +6,13 @@ // the University of Illinois Open Source License. See LICENSE.TXT for details. // //===--===// +// +// This file contains the machine function pass registry for register allocators +// and instruction schedulers. +// +//===--===// #include "llvm/CodeGen/MachinePassRegistry.h" -#include using namespace llvm; Index: llvm/lib/CodeGen/Passes.cpp diff -u llvm/lib/CodeGen/Passes.cpp:1.19 llvm/lib/CodeGen/Passes.cpp:1.20 --- llvm/lib/CodeGen/Passes.cpp:1.19Tue Aug 1 09:21:23 2006 +++ llvm/lib/CodeGen/Passes.cpp Tue Aug 1 13:29:48 2006 @@ -27,13 +27,13 @@ } FunctionPass *llvm::createRegisterAllocator() { - RegisterRegAlloc::FunctionPassCtor Ctor = RegisterRegAlloc::getCache(); + RegisterRegAlloc::FunctionPassCtor Ctor = RegisterRegAlloc::getDefault(); if (!Ctor) { Ctor = RegisterRegAlloc::FindCtor(RegAlloc); assert(Ctor && "No register allocator found"); if (!Ctor) Ctor = RegisterRegAlloc::FirstCtor(); -RegisterRegAlloc::setCache(Ctor); +RegisterRegAlloc::setDefault(Ctor); } assert(Ctor && "No register allocator found"); ___ 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/LinkAllCodegenComponents.h MachinePassRegistry.h ScheduleDAG.h SelectionDAGISel.h
Changes in directory llvm/include/llvm/CodeGen: LinkAllCodegenComponents.h updated: 1.1 -> 1.2 MachinePassRegistry.h updated: 1.1 -> 1.2 ScheduleDAG.h updated: 1.28 -> 1.29 SelectionDAGISel.h updated: 1.21 -> 1.22 --- Log message: 1. Change use of "Cache" to "Default". 2. Added argument to instruction scheduler creators so the creators can do special things. 3. Repaired target hazard code. 4. Misc. More to follow. --- Diffs of the changes: (+51 -31) LinkAllCodegenComponents.h | 14 +++--- MachinePassRegistry.h | 44 ++-- ScheduleDAG.h | 20 ++-- SelectionDAGISel.h |4 4 files changed, 51 insertions(+), 31 deletions(-) Index: llvm/include/llvm/CodeGen/LinkAllCodegenComponents.h diff -u llvm/include/llvm/CodeGen/LinkAllCodegenComponents.h:1.1 llvm/include/llvm/CodeGen/LinkAllCodegenComponents.h:1.2 --- llvm/include/llvm/CodeGen/LinkAllCodegenComponents.h:1.1Tue Aug 1 11:31:08 2006 +++ llvm/include/llvm/CodeGen/LinkAllCodegenComponents.hTue Aug 1 13:29:48 2006 @@ -32,15 +32,15 @@ (void) llvm::createLocalRegisterAllocator(); (void) llvm::createLinearScanRegisterAllocator(); - (void) llvm::createBFS_DAGScheduler(NULL, NULL); - (void) llvm::createSimpleDAGScheduler(NULL, NULL); - (void) llvm::createNoItinsDAGScheduler(NULL, NULL); - (void) llvm::createBURRListDAGScheduler(NULL, NULL); - (void) llvm::createTDRRListDAGScheduler(NULL, NULL); - (void) llvm::createTDListDAGScheduler(NULL, NULL); + (void) llvm::createBFS_DAGScheduler(NULL, NULL, NULL); + (void) llvm::createSimpleDAGScheduler(NULL, NULL, NULL); + (void) llvm::createNoItinsDAGScheduler(NULL, NULL, NULL); + (void) llvm::createBURRListDAGScheduler(NULL, NULL, NULL); + (void) llvm::createTDRRListDAGScheduler(NULL, NULL, NULL); + (void) llvm::createTDListDAGScheduler(NULL, NULL, NULL); } } ForceCodegenLinking; // Force link by creating a global definition. } -#endif \ No newline at end of file +#endif Index: llvm/include/llvm/CodeGen/MachinePassRegistry.h diff -u llvm/include/llvm/CodeGen/MachinePassRegistry.h:1.1 llvm/include/llvm/CodeGen/MachinePassRegistry.h:1.2 --- llvm/include/llvm/CodeGen/MachinePassRegistry.h:1.1 Tue Aug 1 11:31:08 2006 +++ llvm/include/llvm/CodeGen/MachinePassRegistry.h Tue Aug 1 13:29:48 2006 @@ -2,10 +2,18 @@ // // The LLVM Compiler Infrastructure // -// This file was developed by the LLVM research group and is distributed under +// This file was developed by the James M. Laskey and is distributed under // the University of Illinois Open Source License. See LICENSE.TXT for details. // //===--===// +// +// This file contains the mechanics for machine function pass registries. A +// function pass registry (MachinePassRegistry) is auto filled by the static +// constructors of MachinePassRegistryNode. Further there is a command line +// parser (RegisterPassParser) which listens to each registry for additions +// and deletions, so that the appropriate command option is updated. +// +//===--===// #ifndef LLVM_CODEGEN_MACHINEPASSREGISTRY_H #define LLVM_CODEGEN_MACHINEPASSREGISTRY_H @@ -14,8 +22,6 @@ #include "llvm/CodeGen/ScheduleDAG.h" #include "llvm/Support/CommandLine.h" -#include - namespace llvm { @@ -83,7 +89,7 @@ MachinePassRegistryNode *List; // List of registry nodes. - FunctionPassCtor Cache; // Cached function pass creator. + FunctionPassCtor Default; // Default function pass creator. MachinePassRegistryListener* Listener;// Listener for list adds are removes. public: @@ -94,8 +100,8 @@ // Accessors. // MachinePassRegistryNode *getList() { return List; } - FunctionPassCtor getCache() { return Cache; } - void setCache(FunctionPassCtor C) { Cache = C; } + FunctionPassCtor getDefault() { return Default; } + void setDefault(FunctionPassCtor C) { Default = C; } void setListener(MachinePassRegistryListener *L) { Listener = L; } /// Add - Adds a function pass to the registration list. @@ -113,10 +119,8 @@ for (MachinePassRegistryNode **I = &List; *I; I = (*I)->getNextAddress()) { if (*I == Node) { -#if 0 // FIXME: Command opt needs to call a termination routine. if (Listener) Listener->NotifyRemove(Node->getName(), Node->getDescription()); -#endif *I = (*I)->getNext(); break; } @@ -166,11 +170,11 @@ static RegisterRegAlloc *getList() { return (RegisterRegAlloc *)Registry.getList(); } - static FunctionPassCtor getCache()
[llvm-commits] CVS: llvm/tools/llvm-nm/llvm-nm.cpp
Changes in directory llvm/tools/llvm-nm: llvm-nm.cpp updated: 1.27 -> 1.28 --- Log message: no need to check readability here --- Diffs of the changes: (+1 -1) llvm-nm.cpp |2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/tools/llvm-nm/llvm-nm.cpp diff -u llvm/tools/llvm-nm/llvm-nm.cpp:1.27 llvm/tools/llvm-nm/llvm-nm.cpp:1.28 --- llvm/tools/llvm-nm/llvm-nm.cpp:1.27 Fri Jul 7 15:56:50 2006 +++ llvm/tools/llvm-nm/llvm-nm.cpp Tue Aug 1 13:22:21 2006 @@ -119,7 +119,7 @@ void DumpSymbolNamesFromFile (std::string &Filename) { std::string ErrorMessage; sys::Path aPath(Filename); - if (Filename != "-" && !aPath.canRead()) { + if (Filename != "-") { std::cerr << ToolName << ": " << Filename << ": " << strerror (errno) << "\n"; return; ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] [release_18] CVS: llvm/docs/CFEBuildInstrs.html CodingStandards.html CommandLine.html GettingStarted.html
Changes in directory llvm/docs: CFEBuildInstrs.html updated: 1.58 -> 1.58.2.1 CodingStandards.html updated: 1.28 -> 1.28.2.1 CommandLine.html updated: 1.41 -> 1.41.2.1 GettingStarted.html updated: 1.136.2.5 -> 1.136.2.6 --- Log message: Transfer doc changes to 1.8 release. --- Diffs of the changes: (+11 -10) CFEBuildInstrs.html |5 +++-- CodingStandards.html |4 ++-- CommandLine.html |4 ++-- GettingStarted.html |8 4 files changed, 11 insertions(+), 10 deletions(-) Index: llvm/docs/CFEBuildInstrs.html diff -u llvm/docs/CFEBuildInstrs.html:1.58 llvm/docs/CFEBuildInstrs.html:1.58.2.1 --- llvm/docs/CFEBuildInstrs.html:1.58 Tue Jul 11 15:47:00 2006 +++ llvm/docs/CFEBuildInstrs.html Tue Aug 1 13:21:58 2006 @@ -117,7 +117,8 @@ a read-only mirror using subversion. To check out the code the first time use: -svn co svn://anonsvn.opensource.apple.com/svn/llvm dst-directory +svn co svn://anonsvn.opensource.apple.com/svn/llvm/trunk +dst-directory After that, the code can be be updated in the destination directory using; @@ -356,7 +357,7 @@ Brian Gaeke http://llvm.org";>LLVM Compiler Infrastructure - Last modified: $Date: 2006/07/11 20:47:00 $ + Last modified: $Date: 2006/08/01 18:21:58 $ Index: llvm/docs/CodingStandards.html diff -u llvm/docs/CodingStandards.html:1.28 llvm/docs/CodingStandards.html:1.28.2.1 --- llvm/docs/CodingStandards.html:1.28 Wed Jul 26 23:24:14 2006 +++ llvm/docs/CodingStandards.html Tue Aug 1 13:21:58 2006 @@ -161,7 +161,7 @@ Class overviews -Classes are one fundemental part of a good object oriented design. As such, +Classes are one fundamental part of a good object oriented design. As such, a class definition should have a comment block that explains what the class is used for... if it's not obvious. If it's so completely obvious your grandma could figure it out, it's probably safe to leave it out. Naming classes @@ -672,7 +672,7 @@ mailto:[EMAIL PROTECTED]">Chris Lattner http://llvm.org";>LLVM Compiler Infrastructure - Last modified: $Date: 2006/07/27 04:24:14 $ + Last modified: $Date: 2006/08/01 18:21:58 $ Index: llvm/docs/CommandLine.html diff -u llvm/docs/CommandLine.html:1.41 llvm/docs/CommandLine.html:1.41.2.1 --- llvm/docs/CommandLine.html:1.41 Mon Jun 5 12:30:16 2006 +++ llvm/docs/CommandLine.html Tue Aug 1 13:21:58 2006 @@ -1763,7 +1763,7 @@ This approach has the advantage that users of your custom data type will automatically use your custom parser whenever they define an option with a value type of your data type. The disadvantage of this approach is that it doesn't -work if your fundemental data type is something that is already supported. +work if your fundamental data type is something that is already supported. @@ -1923,7 +1923,7 @@ mailto:[EMAIL PROTECTED]">Chris Lattner http://llvm.org";>LLVM Compiler Infrastructure - Last modified: $Date: 2006/06/05 17:30:16 $ + Last modified: $Date: 2006/08/01 18:21:58 $ Index: llvm/docs/GettingStarted.html diff -u llvm/docs/GettingStarted.html:1.136.2.5 llvm/docs/GettingStarted.html:1.136.2.6 --- llvm/docs/GettingStarted.html:1.136.2.5 Thu Jul 27 02:26:00 2006 +++ llvm/docs/GettingStarted.html Tue Aug 1 13:21:58 2006 @@ -647,9 +647,9 @@ Binary release of the llvm-gcc4 front end for MacOS X/X86. -It is also possible to download the sources of the llvm-gcc4 front end from -a read-only subversion mirror at svn://anonsvn.opensource.apple.com/svn/llvm. - +It is also possible to download the sources of the llvm-gcc4 front end from a +read-only subversion mirror at +svn://anonsvn.opensource.apple.com/svn/llvm/trunk. @@ -1595,7 +1595,7 @@ mailto:[EMAIL PROTECTED]">Chris Lattner http://llvm.x10sys.com/rspencer/";>Reid Spencer http://llvm.org";>The LLVM Compiler Infrastructure - Last modified: $Date: 2006/07/27 07:26:00 $ + Last modified: $Date: 2006/08/01 18:21:58 $ ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/System/Unix/Path.inc
Changes in directory llvm/lib/System/Unix: Path.inc updated: 1.49 -> 1.50 --- Log message: Remove some now-dead methods. Use getFileStatus instead. --- Diffs of the changes: (+0 -34) Path.inc | 34 -- 1 files changed, 34 deletions(-) Index: llvm/lib/System/Unix/Path.inc diff -u llvm/lib/System/Unix/Path.inc:1.49 llvm/lib/System/Unix/Path.inc:1.50 --- llvm/lib/System/Unix/Path.inc:1.49 Tue Aug 1 12:51:09 2006 +++ llvm/lib/System/Unix/Path.inc Tue Aug 1 13:16:02 2006 @@ -236,38 +236,6 @@ return GetRootDirectory(); } -bool -Path::isFile() const { - if (!exists()) -return false; - struct stat buf; - if (stat(path.c_str(), &buf) != 0) { -ThrowErrno(path + ": can't determine type of path object: "); - } - return S_ISREG(buf.st_mode); -} - -bool -Path::isDirectory() const { - if (!exists()) -return false; - struct stat buf; - if (0 != stat(path.c_str(), &buf)) { -ThrowErrno(path + ": can't determine type of path object: "); - } - return S_ISDIR(buf.st_mode); -} - -bool -Path::isHidden() const { - if (!exists()) -return false; - size_t slash = path.rfind('/'); - return (slash != std::string::npos && - slash < path.length()-1 && - path[slash+1] == '.') || - (!path.empty() && slash == std::string::npos && path[0] == '.'); -} std::string Path::getBasename() const { @@ -432,8 +400,6 @@ bool Path::getDirectoryContents(std::set& result) const { - if (!isDirectory()) -return false; DIR* direntries = ::opendir(path.c_str()); if (direntries == 0) ThrowErrno(path + ": can't open directory"); ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/include/llvm/System/Path.h
Changes in directory llvm/include/llvm/System: Path.h updated: 1.34 -> 1.35 --- Log message: Remove some now-dead methods. Use getFileStatus instead. --- Diffs of the changes: (+0 -22) Path.h | 22 -- 1 files changed, 22 deletions(-) Index: llvm/include/llvm/System/Path.h diff -u llvm/include/llvm/System/Path.h:1.34 llvm/include/llvm/System/Path.h:1.35 --- llvm/include/llvm/System/Path.h:1.34Fri Jul 28 17:36:17 2006 +++ llvm/include/llvm/System/Path.h Tue Aug 1 13:16:02 2006 @@ -259,28 +259,6 @@ /// @name Disk Accessors /// @{ public: - /// This function determines if the object referenced by this path is - /// a file or not. This function accesses the underlying file system to - /// determine the type of entity referenced by the path. - /// @returns true if this path name references a file. - /// @brief Determines if the path name references a file. - bool isFile() const; - - /// This function determines if the object referenced by this path is a - /// directory or not. This function accesses the underlying file system to - /// determine the type of entity referenced by the path. - /// @returns true if the path name references a directory - /// @brief Determines if the path name references a directory. - bool isDirectory() const; - - /// This function determines if the path refers to a hidden file. The - /// notion of hidden files is defined by the underlying system. The - /// system may not support hidden files in which case this function always - /// returns false on such systems. Hidden files have the "hidden" - /// attribute set on Win32. On Unix, hidden files start with a period. - /// @brief Determines if the path name references a hidden file. - bool isHidden() const; - /// This function determines if the path name in this object references /// the root (top level directory) of the file system. The details of what /// is considered the "root" may vary from system to system so this method ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/System/Win32/Path.inc
Changes in directory llvm/lib/System/Win32: Path.inc updated: 1.50 -> 1.51 --- Log message: Remove some now-dead methods. Use getFileStatus instead. --- Diffs of the changes: (+0 -33) Path.inc | 33 - 1 files changed, 33 deletions(-) Index: llvm/lib/System/Win32/Path.inc diff -u llvm/lib/System/Win32/Path.inc:1.50 llvm/lib/System/Win32/Path.inc:1.51 --- llvm/lib/System/Win32/Path.inc:1.50 Tue Aug 1 12:51:09 2006 +++ llvm/lib/System/Win32/Path.inc Tue Aug 1 13:16:02 2006 @@ -216,39 +216,6 @@ } // FIXME: the above set of functions don't map to Windows very well. -bool -Path::isFile() const { - WIN32_FILE_ATTRIBUTE_DATA fi; - BOOL rc = GetFileAttributesEx(path.c_str(), GetFileExInfoStandard, &fi); - if (rc) -return !(fi.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY); - else if (GetLastError() != ERROR_FILE_NOT_FOUND) { -ThrowError("isFile(): " + std::string(path) + ": Can't get status: "); - } - return false; -} - -bool -Path::isDirectory() const { - WIN32_FILE_ATTRIBUTE_DATA fi; - BOOL rc = GetFileAttributesEx(path.c_str(), GetFileExInfoStandard, &fi); - if (rc) -return fi.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY; - else if (GetLastError() != ERROR_FILE_NOT_FOUND) -ThrowError("isDirectory(): " + std::string(path) + ": Can't get status: "); - return false; -} - -bool -Path::isHidden() const { - WIN32_FILE_ATTRIBUTE_DATA fi; - BOOL rc = GetFileAttributesEx(path.c_str(), GetFileExInfoStandard, &fi); - if (rc) -return fi.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN; - else if (GetLastError() != ERROR_FILE_NOT_FOUND) -ThrowError("isHidden(): " + std::string(path) + ": Can't get status: "); - return false; -} bool Path::isRootDirectory() const { ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/tools/llvmc/CompilerDriver.cpp
Changes in directory llvm/tools/llvmc: CompilerDriver.cpp updated: 1.36 -> 1.37 --- Log message: No need to check isWriteable here (which isn't sufficient anyway). Just attempt to do the operation and if it fails, oh well. --- Diffs of the changes: (+2 -1) CompilerDriver.cpp |3 ++- 1 files changed, 2 insertions(+), 1 deletion(-) Index: llvm/tools/llvmc/CompilerDriver.cpp diff -u llvm/tools/llvmc/CompilerDriver.cpp:1.36 llvm/tools/llvmc/CompilerDriver.cpp:1.37 --- llvm/tools/llvmc/CompilerDriver.cpp:1.36Mon May 29 13:52:05 2006 +++ llvm/tools/llvmc/CompilerDriver.cpp Tue Aug 1 13:12:29 2006 @@ -187,7 +187,8 @@ void cleanup() { if (!isSet(KEEP_TEMPS_FLAG)) { - if (TempDir.isDirectory() && TempDir.canWrite()) + sys::FileStatus Status; + if (!TempDir.getFileStatus(Status) && Status.isDir) TempDir.eraseFromDisk(/*remove_contents=*/true); } else { std::cout << "Temporary files are in " << TempDir << "\n"; ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/tools/llvm-ar/llvm-ar.cpp
Changes in directory llvm/tools/llvm-ar: llvm-ar.cpp updated: 1.33 -> 1.34 --- Log message: Use Path::getFileStatus --- Diffs of the changes: (+10 -7) llvm-ar.cpp | 17 ++--- 1 files changed, 10 insertions(+), 7 deletions(-) Index: llvm/tools/llvm-ar/llvm-ar.cpp diff -u llvm/tools/llvm-ar/llvm-ar.cpp:1.33 llvm/tools/llvm-ar/llvm-ar.cpp:1.34 --- llvm/tools/llvm-ar/llvm-ar.cpp:1.33 Fri Jul 28 17:03:44 2006 +++ llvm/tools/llvm-ar/llvm-ar.cpp Tue Aug 1 13:09:46 2006 @@ -270,19 +270,22 @@ // finds with all the files in that directory (recursively). It uses the // sys::Path::getDirectoryContent method to perform the actual directory scans. std::set recurseDirectories(const sys::Path& path) { - assert(path.isDirectory() && "Oops, can't recurse a file"); std::set result; if (RecurseDirectories) { std::set content; path.getDirectoryContents(content); for (std::set::iterator I = content.begin(), E = content.end(); I != E; ++I) { - if (I->isDirectory()) { -std::set moreResults = recurseDirectories(*I); -result.insert(moreResults.begin(), moreResults.end()); - } else { -result.insert(*I); - } + // Make sure it exists and is a directory + sys::FileStatus Status; + if (!I->getFileStatus(Status)) { + if (Status.isDir) { + std::set moreResults = recurseDirectories(*I); + result.insert(moreResults.begin(), moreResults.end()); + } else { + result.insert(*I); + } + } } } return result; ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/tools/gccld/GenerateCode.cpp
Changes in directory llvm/tools/gccld: GenerateCode.cpp updated: 1.58 -> 1.59 --- Log message: Use Path::getFileStatus to get status-related info. --- Diffs of the changes: (+5 -7) GenerateCode.cpp | 12 +--- 1 files changed, 5 insertions(+), 7 deletions(-) Index: llvm/tools/gccld/GenerateCode.cpp diff -u llvm/tools/gccld/GenerateCode.cpp:1.58 llvm/tools/gccld/GenerateCode.cpp:1.59 --- llvm/tools/gccld/GenerateCode.cpp:1.58 Fri Jun 16 13:23:48 2006 +++ llvm/tools/gccld/GenerateCode.cpp Tue Aug 1 13:04:01 2006 @@ -151,12 +151,9 @@ sys::Path LPath(LibPath); // Make sure it exists and is a directory - try { -if (!LPath.exists() || !LPath.isDirectory()) - return false; - } catch (std::string& xcptn) { + sys::FileStatus Status; + if (LPath.getFileStatus(Status) || !Status.isDir) return false; - } // Grab the contents of the -L path std::set Files; @@ -169,12 +166,13 @@ std::string dllsuffix = sys::Path::GetDLLSuffix(); for (; File != Files.end(); ++File) { -if ( File->isDirectory() ) +// Not a file? +if (File->getFileStatus(Status) || Status.isDir) continue; std::string path = File->toString(); -// Check for an ending '.dll,.so' or '.a' suffix as all +// Check for an ending '.dll', '.so' or '.a' suffix as all // other files are not of interest to us here if (path.find(dllsuffix, path.size()-dllsuffix.size()) == std::string::npos && path.find(".a", path.size()-2) == std::string::npos) ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/System/Win32/Signals.inc
Changes in directory llvm/lib/System/Win32: Signals.inc updated: 1.20 -> 1.21 --- Log message: Use getFileStatus instead of Path::isDirectory(). --- Diffs of the changes: (+8 -6) Signals.inc | 14 -- 1 files changed, 8 insertions(+), 6 deletions(-) Index: llvm/lib/System/Win32/Signals.inc diff -u llvm/lib/System/Win32/Signals.inc:1.20 llvm/lib/System/Win32/Signals.inc:1.21 --- llvm/lib/System/Win32/Signals.inc:1.20 Thu Jun 1 14:03:21 2006 +++ llvm/lib/System/Win32/Signals.inc Tue Aug 1 12:59:14 2006 @@ -96,17 +96,19 @@ // RemoveDirectoryOnSignal - The public API void sys::RemoveDirectoryOnSignal(const sys::Path& path) { + // Not a directory? + sys::FileStatus Status; + if (path.getFileStatus(Status) || !Status.isDir) +return; + RegisterHandler(); if (CleanupExecuted) throw std::string("Process terminating -- cannot register for removal"); - if (path.isDirectory()) { -if (DirectoriesToRemove == NULL) - DirectoriesToRemove = new std::vector; - -DirectoriesToRemove->push_back(path); - } + if (DirectoriesToRemove == NULL) +DirectoriesToRemove = new std::vector; + DirectoriesToRemove->push_back(path); LeaveCriticalSection(&CriticalSection); } ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/System/Unix/Signals.inc
Changes in directory llvm/lib/System/Unix: Signals.inc updated: 1.11 -> 1.12 --- Log message: Use getFileStatus instead of Path::isDirectory(). --- Diffs of the changes: (+6 -7) Signals.inc | 13 ++--- 1 files changed, 6 insertions(+), 7 deletions(-) Index: llvm/lib/System/Unix/Signals.inc diff -u llvm/lib/System/Unix/Signals.inc:1.11 llvm/lib/System/Unix/Signals.inc:1.12 --- llvm/lib/System/Unix/Signals.inc:1.11 Thu Jun 15 19:00:57 2006 +++ llvm/lib/System/Unix/Signals.incTue Aug 1 12:59:14 2006 @@ -21,6 +21,7 @@ #if HAVE_SIGNAL_H #include #endif +using namespace llvm; namespace { @@ -30,7 +31,7 @@ void (*InterruptFunction)() = 0; std::vector *FilesToRemove = 0 ; -std::vector *DirectoriesToRemove = 0; +std::vector *DirectoriesToRemove = 0; // IntSigs - Signals that may interrupt the program at any time. const int IntSigs[] = { @@ -146,7 +147,6 @@ } -namespace llvm { void sys::SetInterruptFunction(void (*IF)()) { InterruptFunction = IF; @@ -165,8 +165,10 @@ } // RemoveDirectoryOnSignal - The public API -void sys::RemoveDirectoryOnSignal(const llvm::sys::Path& path) { - if (!path.isDirectory()) +void sys::RemoveDirectoryOnSignal(const sys::Path& path) { + // Not a directory? + sys::FileStatus Status; + if (path.getFileStatus(Status) || !Status.isDir) return; if (DirectoriesToRemove == 0) @@ -184,6 +186,3 @@ StackTraceRequested = true; std::for_each(KillSigs, KillSigsEnd, RegisterHandler); } - -} - ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/System/Win32/Path.inc
Changes in directory llvm/lib/System/Win32: Path.inc updated: 1.49 -> 1.50 --- Log message: elimiante some syscalls --- Diffs of the changes: (+8 -8) Path.inc | 16 1 files changed, 8 insertions(+), 8 deletions(-) Index: llvm/lib/System/Win32/Path.inc diff -u llvm/lib/System/Win32/Path.inc:1.49 llvm/lib/System/Win32/Path.inc:1.50 --- llvm/lib/System/Win32/Path.inc:1.49 Tue Aug 1 03:07:22 2006 +++ llvm/lib/System/Win32/Path.inc Tue Aug 1 12:51:09 2006 @@ -281,8 +281,6 @@ bool Path::isBytecodeFile() const { - if (!isFile()) -return false; std::string actualMagic; if (!getMagicNumber(actualMagic, 4)) return false; @@ -574,12 +572,16 @@ bool Path::eraseFromDisk(bool remove_contents, std::string *ErrStr) const { - if (isFile()) { + FileStatus Status; + if (getFileStatus(Status, ErrStr)) +return true; + + if (Status.isFile) { DWORD attr = GetFileAttributes(path.c_str()); // If it doesn't exist, we're done. if (attr == INVALID_FILE_ATTRIBUTES) - return false; + return true; // Read-only files cannot be deleted on Windows. Must remove the read-only // attribute first. @@ -590,8 +592,8 @@ if (!DeleteFile(path.c_str())) ThrowError(path + ": Can't destroy file: "); -return true; - } else if (isDirectory()) { +return false; + } else if (Status.isDir) { // If it doesn't exist, we're done. if (!exists()) return false; @@ -657,8 +659,6 @@ } bool Path::getMagicNumber(std::string& Magic, unsigned len) const { - if (!isFile()) -return false; assert(len < 1024 && "Request for magic string too long"); char* buf = (char*) alloca(1 + len); ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/System/Unix/Path.inc
Changes in directory llvm/lib/System/Unix: Path.inc updated: 1.48 -> 1.49 --- Log message: elimiante some syscalls --- Diffs of the changes: (+12 -15) Path.inc | 27 --- 1 files changed, 12 insertions(+), 15 deletions(-) Index: llvm/lib/System/Unix/Path.inc diff -u llvm/lib/System/Unix/Path.inc:1.48 llvm/lib/System/Unix/Path.inc:1.49 --- llvm/lib/System/Unix/Path.inc:1.48 Fri Jul 28 17:36:17 2006 +++ llvm/lib/System/Unix/Path.inc Tue Aug 1 12:51:09 2006 @@ -241,7 +241,7 @@ if (!exists()) return false; struct stat buf; - if (0 != stat(path.c_str(), &buf)) { + if (stat(path.c_str(), &buf) != 0) { ThrowErrno(path + ": can't determine type of path object: "); } return S_ISREG(buf.st_mode); @@ -286,12 +286,10 @@ } bool Path::hasMagicNumber(const std::string &Magic) const { - if (!isFile()) -return false; size_t len = Magic.size(); assert(len < 1024 && "Request for magic string too long"); char* buf = (char*) alloca(1 + len); - int fd = ::open(path.c_str(),O_RDONLY); + int fd = ::open(path.c_str(), O_RDONLY); if (fd < 0) return false; size_t read_len = ::read(fd, buf, len); @@ -303,11 +301,9 @@ } bool Path::getMagicNumber(std::string& Magic, unsigned len) const { - if (!isFile()) -return false; assert(len < 1024 && "Request for magic string too long"); char* buf = (char*) alloca(1 + len); - int fd = ::open(path.c_str(),O_RDONLY); + int fd = ::open(path.c_str(), O_RDONLY); if (fd < 0) return false; ssize_t bytes_read = ::read(fd, buf, len); @@ -322,11 +318,9 @@ bool Path::isBytecodeFile() const { - if (!isFile()) -return false; - char buffer[ 4]; + char buffer[4]; buffer[0] = 0; - int fd = ::open(path.c_str(),O_RDONLY); + int fd = ::open(path.c_str(), O_RDONLY); if (fd < 0) return false; ssize_t bytes_read = ::read(fd, buffer, 4); @@ -335,7 +329,7 @@ return false; return (buffer[0] == 'l' && buffer[1] == 'l' && buffer[2] == 'v' && - (buffer[3] == 'c' || buffer[3] == 'm')); + (buffer[3] == 'c' || buffer[3] == 'm')); } bool @@ -605,14 +599,17 @@ bool Path::eraseFromDisk(bool remove_contents, std::string *ErrStr) const { - // Make sure we're dealing with a directory. - if (isFile()) { + FileStatus Status; + if (getFileStatus(Status, ErrStr)) +return true; + + if (Status.isFile) { if (unlink(path.c_str()) != 0) return GetErrno(path + ": can't destroy file", ErrStr); return false; } - if (!isDirectory()) { + if (!Status.isDir) { if (ErrStr) *ErrStr = "not a file or directory"; return true; } ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: nightlytest-serverside/drawresultsgraph.php
Changes in directory nightlytest-serverside: drawresultsgraph.php updated: 1.1.1.1 -> 1.2 --- Log message: The data in the database had html line breaks in it which caused regular expresions not to match. I do a search and replace for s// / before performing regular expressions now. This problem caused graphs to be generated with error messages because there was seemingly no data. --- Diffs of the changes: (+5 -2) drawresultsgraph.php |7 +-- 1 files changed, 5 insertions(+), 2 deletions(-) Index: nightlytest-serverside/drawresultsgraph.php diff -u nightlytest-serverside/drawresultsgraph.php:1.1.1.1 nightlytest-serverside/drawresultsgraph.php:1.2 --- nightlytest-serverside/drawresultsgraph.php:1.1.1.1 Wed Jul 5 15:56:33 2006 +++ nightlytest-serverside/drawresultsgraph.php Tue Aug 1 12:47:56 2006 @@ -231,7 +231,7 @@ $data_max=-1; - + $regexp = "/$preg_measure:\s*([0-9\.]+|\?)/"; while($row=mysql_fetch_array($night_table_query)){ $night_id = $row['night']; $query = mysql_query("select added from night where id=$night_id") or die(mysql_error()); @@ -241,7 +241,10 @@ $seconds = mktime($pjs[4], $pjs[5], $pjs[6], $pjs[2], $pjs[3],$pjs[1]); - $regexp = "/$preg_measure:\s*([0-9\.]+|\?)/"; + if($DEBUG){ + print "searching for $regexp \n"; + } + $row['result']=str_replace("", " ", "{$row['result']}"); preg_match($regexp, "{$row['result']}", $ans); if(isset($ans[1])){ ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/tools/lto/
Changes in directory llvm/tools/lto: --- Log message: Directory /var/cvs/llvm/llvm/tools/lto added to the repository --- Diffs of the changes: (+0 -0) 0 files changed ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] [release_18] CVS: llvm/tools/llvm-config/llvm-config.in.in
Changes in directory llvm/tools/llvm-config: llvm-config.in.in updated: 1.18 -> 1.18.2.1 --- Log message: Include the system libraries in the --ldflags options. This is required to enable correctly linking on win32 libraries where additional dlls are required. Patch contributed by Anton Korobeynikov. Release branch commit authorized by Chris Lattner. --- Diffs of the changes: (+2 -1) llvm-config.in.in |3 ++- 1 files changed, 2 insertions(+), 1 deletion(-) Index: llvm/tools/llvm-config/llvm-config.in.in diff -u llvm/tools/llvm-config/llvm-config.in.in:1.18 llvm/tools/llvm-config/llvm-config.in.in:1.18.2.1 --- llvm/tools/llvm-config/llvm-config.in.in:1.18 Tue Jun 6 19:43:18 2006 +++ llvm/tools/llvm-config/llvm-config.in.inTue Aug 1 12:32:58 2006 @@ -47,6 +47,7 @@ # begin Makefile values my $CXXFLAGS= [EMAIL PROTECTED]@}; my $LDFLAGS = [EMAIL PROTECTED]@}; +my $SYSTEM_LIBS = [EMAIL PROTECTED]@}; my $LLVM_BUILDMODE = [EMAIL PROTECTED]@}; # end Makefile values @@ -109,7 +110,7 @@ } elsif ($arg eq "--cxxflags") { $has_opt = 1; print "-I$INCLUDEDIR $CXXFLAGS\n"; } elsif ($arg eq "--ldflags") { -$has_opt = 1; print "-L$LIBDIR $LDFLAGS\n"; +$has_opt = 1; print "-L$LIBDIR $LDFLAGS $SYSTEM_LIBS\n"; } elsif ($arg eq "--libs") { $has_opt = 1; $want_libs = 1; } elsif ($arg eq "--libnames") { ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: nightlytest-serverside/NightlyTestAccept.cgi
Changes in directory nightlytest-serverside: NightlyTestAccept.cgi updated: 1.38 -> 1.39 --- Log message: fixed a misnamed variable --- Diffs of the changes: (+1 -1) NightlyTestAccept.cgi |2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: nightlytest-serverside/NightlyTestAccept.cgi diff -u nightlytest-serverside/NightlyTestAccept.cgi:1.38 nightlytest-serverside/NightlyTestAccept.cgi:1.39 --- nightlytest-serverside/NightlyTestAccept.cgi:1.38 Sun Jul 30 13:02:07 2006 +++ nightlytest-serverside/NightlyTestAccept.cgiTue Aug 1 12:26:33 2006 @@ -453,7 +453,7 @@ chomp($o_file_size); my @O_FILE_SIZE = split $spliton, $o_file_size; my $a_file_size = param('a_file_sizes'); - $a_file_size="" unless $o_file_size; + $a_file_size="" unless $a_file_size; chomp($a_file_size); my @A_FILE_SIZE = split $spliton, $a_file_size; ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/CREDITS.TXT
Changes in directory llvm: CREDITS.TXT updated: 1.60 -> 1.61 --- Log message: Update my entry. --- Diffs of the changes: (+3 -3) CREDITS.TXT |6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) Index: llvm/CREDITS.TXT diff -u llvm/CREDITS.TXT:1.60 llvm/CREDITS.TXT:1.61 --- llvm/CREDITS.TXT:1.60 Tue Aug 1 11:40:42 2006 +++ llvm/CREDITS.TXTTue Aug 1 11:52:07 2006 @@ -156,11 +156,11 @@ D: The `paths' pass N: Reid Spencer -E: [EMAIL PROTECTED] -W: http://llvm.x10sys.com/rspencer +E: [EMAIL PROTECTED] +W: http://reidspencer.com/ D: Stacker, llvmc, llvm-ld, llvm-ar, lib/Archive, lib/Linker, lib/System, D: bytecode enhancements, symtab hacking, unoverloading of intrinsics, makefile -D: and configuration system, documentation. +D: and configuration system, documentation, various bug fixing. 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/CREDITS.TXT
Changes in directory llvm: CREDITS.TXT updated: 1.59 -> 1.60 --- Log message: Update Bil's entry --- Diffs of the changes: (+2 -1) CREDITS.TXT |3 ++- 1 files changed, 2 insertions(+), 1 deletion(-) Index: llvm/CREDITS.TXT diff -u llvm/CREDITS.TXT:1.59 llvm/CREDITS.TXT:1.60 --- llvm/CREDITS.TXT:1.59 Tue Aug 1 04:01:40 2006 +++ llvm/CREDITS.TXTTue Aug 1 11:40:42 2006 @@ -167,8 +167,9 @@ D: C++ bugs filed, and C++ front-end bug fixes. N: Bill Wendling -E: [EMAIL PROTECTED] +E: [EMAIL PROTECTED] D: The `Lower Setjmp/Longjmp' pass, improvements to the -lowerswitch pass. +D: Bug hunter extraordinaire. N: Patrick Jenkins 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/include/llvm/CodeGen/LinkAllCodegenComponents.h MachinePassRegistry.h
Changes in directory llvm/include/llvm/CodeGen: LinkAllCodegenComponents.h added (r1.1) MachinePassRegistry.h added (r1.1) --- Log message: Forgot the added files for plugable machine passes. --- Diffs of the changes: (+358 -0) LinkAllCodegenComponents.h | 46 ++ MachinePassRegistry.h | 312 + 2 files changed, 358 insertions(+) Index: llvm/include/llvm/CodeGen/LinkAllCodegenComponents.h diff -c /dev/null llvm/include/llvm/CodeGen/LinkAllCodegenComponents.h:1.1 *** /dev/null Tue Aug 1 11:31:18 2006 --- llvm/include/llvm/CodeGen/LinkAllCodegenComponents.hTue Aug 1 11:31:08 2006 *** *** 0 --- 1,46 + //===- llvm/Codegen/LinkAllCodegenComponents.h --*- C++ -*-===// + // + // The LLVM Compiler Infrastructure + // + // This file was developed by James M. Laskey and is distributed under the + // University of Illinois Open Source License. See LICENSE.TXT for details. + // + //===--===// + // + // This header file pulls in all codegen related passes for tools like lli and + // llc that need this functionality. + // + //===--===// + + #ifndef LLVM_CODEGEN_LINKALLCODEGENCOMPONENTS_H + #define LLVM_CODEGEN_LINKALLCODEGENCOMPONENTS_H + + #include "llvm/CodeGen/Passes.h" + #include "llvm/CodeGen/ScheduleDAG.h" + + namespace { + struct ForceCodegenLinking { + ForceCodegenLinking() { + // We must reference the passes in such a way that compilers will not + // delete it all as dead code, even with whole program optimization, + // yet is effectively a NO-OP. As the compiler isn't smart enough + // to know that getenv() never returns -1, this will do the job. + if (std::getenv("bar") != (char*) -1) + return; + + (void) llvm::createSimpleRegisterAllocator(); + (void) llvm::createLocalRegisterAllocator(); + (void) llvm::createLinearScanRegisterAllocator(); + + (void) llvm::createBFS_DAGScheduler(NULL, NULL); + (void) llvm::createSimpleDAGScheduler(NULL, NULL); + (void) llvm::createNoItinsDAGScheduler(NULL, NULL); + (void) llvm::createBURRListDAGScheduler(NULL, NULL); + (void) llvm::createTDRRListDAGScheduler(NULL, NULL); + (void) llvm::createTDListDAGScheduler(NULL, NULL); + + } + } ForceCodegenLinking; // Force link by creating a global definition. + } + + #endif \ No newline at end of file Index: llvm/include/llvm/CodeGen/MachinePassRegistry.h diff -c /dev/null llvm/include/llvm/CodeGen/MachinePassRegistry.h:1.1 *** /dev/null Tue Aug 1 11:31:24 2006 --- llvm/include/llvm/CodeGen/MachinePassRegistry.h Tue Aug 1 11:31:08 2006 *** *** 0 --- 1,312 + //===-- llvm/CodeGen/MachinePassRegistry.h --*- C++ -*-===// + // + // The LLVM Compiler Infrastructure + // + // This file was developed by the LLVM research group and is distributed under + // the University of Illinois Open Source License. See LICENSE.TXT for details. + // + //===--===// + + #ifndef LLVM_CODEGEN_MACHINEPASSREGISTRY_H + #define LLVM_CODEGEN_MACHINEPASSREGISTRY_H + + #include "llvm/CodeGen/Passes.h" + #include "llvm/CodeGen/ScheduleDAG.h" + #include "llvm/Support/CommandLine.h" + + #include + + namespace llvm { + + + //===--===// + /// + /// MachinePassRegistryListener - Listener to adds and removals of nodes in + /// registration list. + /// + //===--===// + class MachinePassRegistryListener { + public: + MachinePassRegistryListener() {} + virtual ~MachinePassRegistryListener() {} + virtual void NotifyAdd(const char *N, const char *D) = 0; + virtual void NotifyRemove(const char *N, const char *D) = 0; + }; + + + //===--===// + /// + /// MachinePassRegistryNode - Machine pass node stored in registration list. + /// + //===--===// + template + class MachinePassRegistryNode { + + private: + + MachinePassRegistryNode *Next;// Next function pass in list. + const char *Name; // Name of function pass. + const char *Description; // Description string. + FunctionPassCtor Ctor;// Function pass creator. + + public: + + MachinePassRegistryNode(const char *N, const char *D, FunctionPassCtor C) + : Next(NULL) + , Name(N) + , Description(D) + , Ctor(C) + {} + + // Accessors + MachinePassRegistryNode *getNext() + const { return Next; } + M
[llvm-commits] CVS: llvm/lib/CodeGen/MachinePassRegistry.cpp
Changes in directory llvm/lib/CodeGen: MachinePassRegistry.cpp added (r1.1) --- Log message: Forgot the added files for plugable machine passes. --- Diffs of the changes: (+31 -0) MachinePassRegistry.cpp | 31 +++ 1 files changed, 31 insertions(+) Index: llvm/lib/CodeGen/MachinePassRegistry.cpp diff -c /dev/null llvm/lib/CodeGen/MachinePassRegistry.cpp:1.1 *** /dev/null Tue Aug 1 11:31:18 2006 --- llvm/lib/CodeGen/MachinePassRegistry.cppTue Aug 1 11:31:08 2006 *** *** 0 --- 1,31 + //===-- MachineInstr.cpp --===// + // + // The LLVM Compiler Infrastructure + // + // This file was developed by James M. Laskey and is distributed under + // the University of Illinois Open Source License. See LICENSE.TXT for details. + // + //===--===// + + #include "llvm/CodeGen/MachinePassRegistry.h" + #include + + using namespace llvm; + + + //===-===// + /// + /// RegisterRegAlloc class - Track the registration of register allocators. + /// + //===-===// + MachinePassRegistry + RegisterRegAlloc::Registry; + + + //===-===// + /// + /// RegisterScheduler class - Track the registration of instruction schedulers. + /// + //===-===// + MachinePassRegistry + RegisterScheduler::Registry; ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/docs/UsingLibraries.html
Changes in directory llvm/docs: UsingLibraries.html updated: 1.24 -> 1.25 --- Log message: Fix HTML 4.01 Strict errors. --- Diffs of the changes: (+7 -9) UsingLibraries.html | 16 +++- 1 files changed, 7 insertions(+), 9 deletions(-) Index: llvm/docs/UsingLibraries.html diff -u llvm/docs/UsingLibraries.html:1.24 llvm/docs/UsingLibraries.html:1.25 --- llvm/docs/UsingLibraries.html:1.24 Tue Aug 1 02:32:01 2006 +++ llvm/docs/UsingLibraries.html Tue Aug 1 11:23:54 2006 @@ -154,7 +154,7 @@ Using llvm-config - The llvm-config tool is a perl script that produces on its output + The llvm-config tool is a perl script that produces on its output various kinds of information. For example, the source or object directories used to build LLVM can be accessed by passing options to llvm-config. For complete details on this tool, please see the @@ -167,15 +167,15 @@ --ldflags. This generates the command line options necessary to be passed to the ld tool in order to link with LLVM. Most notably, the -L option is provided to specify a library search directory -that contains the LLVM libraries. +that contains the LLVM libraries. --libs. This generates command line options suitable for use with a gcc-style linker. That is, libraries are given with a -l option and object files are given with a full path. --libnames. This generates a list of just the library file names. If you know the directory in which these files reside (see --ldflags) then you can find the libraries there. ---libfiles. This generates the full path names of the -LLVM library files. +--libfiles. This generates the full path names of the +LLVM library files. If you wish to delve further into how llvm-config generates the correct order (based on library dependencies), please see the tool named @@ -277,8 +277,7 @@ libLLVMSystem.a libLLVMbzip2.a - libLLVMSystem.a - + libLLVMSystem.a libLLVMTarget.a libLLVMCodeGen.a libLLVMCore.a @@ -300,8 +299,7 @@ libLLVMTarget.a libLLVMTransformUtils.a - libLLVMbzip2.a - + libLLVMbzip2.a libLLVMipa.a libLLVMAnalysis.a libLLVMCore.a @@ -448,7 +446,7 @@ mailto:[EMAIL PROTECTED]">Reid Spencer http://llvm.org";>The LLVM Compiler Infrastructure -Last modified: $Date: 2006/08/01 07:32:01 $ +Last modified: $Date: 2006/08/01 16:23:54 $
[llvm-commits] CVS: llvm/lib/System/Win32/Path.inc
Changes in directory llvm/lib/System/Win32: Path.inc updated: 1.48 -> 1.49 --- Log message: Minor fix due to recent API changes --- Diffs of the changes: (+1 -1) Path.inc |2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/lib/System/Win32/Path.inc diff -u llvm/lib/System/Win32/Path.inc:1.48 llvm/lib/System/Win32/Path.inc:1.49 --- llvm/lib/System/Win32/Path.inc:1.48 Fri Jul 28 17:36:17 2006 +++ llvm/lib/System/Win32/Path.inc Tue Aug 1 03:07:22 2006 @@ -334,7 +334,7 @@ } bool -Path::getStatusInfo(FileStatus &info, std::string *ErrStr) const { +Path::getFileStatus(FileStatus &info, std::string *ErrStr) const { WIN32_FILE_ATTRIBUTE_DATA fi; if (!GetFileAttributesEx(path.c_str(), GetFileExInfoStandard, &fi)) return GetError("getStatusInfo():" + std::string(path) + ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/CREDITS.TXT
Changes in directory llvm: CREDITS.TXT updated: 1.57 -> 1.58 --- Log message: Added myself to credits. --- Diffs of the changes: (+4 -0) CREDITS.TXT |4 1 files changed, 4 insertions(+) Index: llvm/CREDITS.TXT diff -u llvm/CREDITS.TXT:1.57 llvm/CREDITS.TXT:1.58 --- llvm/CREDITS.TXT:1.57 Wed Jul 5 15:17:26 2006 +++ llvm/CREDITS.TXTTue Aug 1 02:06:00 2006 @@ -93,6 +93,10 @@ W: http://randomhacks.net/ D: llvm-config script +N: Anton Korobeynikov +E: [EMAIL PROTECTED] +D: Mingw32 fixes, cross-compiling support, minor changes here and there + N: Sumant Kowshik E: [EMAIL PROTECTED] D: Author of the original C backend ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/tools/llc/llc.cpp
Changes in directory llvm/tools/llc: llc.cpp updated: 1.134 -> 1.135 --- Log message: Introducing plugable register allocators and instruction schedulers. --- Diffs of the changes: (+1 -0) llc.cpp |1 + 1 files changed, 1 insertion(+) Index: llvm/tools/llc/llc.cpp diff -u llvm/tools/llc/llc.cpp:1.134 llvm/tools/llc/llc.cpp:1.135 --- llvm/tools/llc/llc.cpp:1.134Wed Jun 7 18:03:13 2006 +++ llvm/tools/llc/llc.cpp Tue Aug 1 09:21:23 2006 @@ -14,6 +14,7 @@ //===--===// #include "llvm/Bytecode/Reader.h" +#include "llvm/Codegen/LinkAllCodegenComponents.h" #include "llvm/Target/SubtargetFeature.h" #include "llvm/Target/TargetData.h" #include "llvm/Target/TargetMachine.h" ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/include/llvm/PassSupport.h
Changes in directory llvm/include/llvm: PassSupport.h updated: 1.25 -> 1.26 --- Log message: Introducing plugable register allocators and instruction schedulers. --- Diffs of the changes: (+0 -69) PassSupport.h | 69 -- 1 files changed, 69 deletions(-) Index: llvm/include/llvm/PassSupport.h diff -u llvm/include/llvm/PassSupport.h:1.25 llvm/include/llvm/PassSupport.h:1.26 --- llvm/include/llvm/PassSupport.h:1.25Thu Jul 27 15:04:59 2006 +++ llvm/include/llvm/PassSupport.h Tue Aug 1 09:21:23 2006 @@ -369,75 +369,6 @@ }; -//===-===// -/// -/// RegisterRegAlloc class - Track the registration of register allocators. -/// -class RegisterRegAlloc { - -public: - - typedef FunctionPass *(*FunctionPassCtor)(); - -private: - - static RegisterRegAlloc *List;// Linked list of register allocators. - - RegisterRegAlloc *Next; // Next allocation scheme in list. - const char *Name; // Name of register allocator. - const char *Description; // Description string. - FunctionPassCtor Ctor;// Function to construct register -// allocator pass. -public: - - RegisterRegAlloc(const char *N, const char *D, FunctionPassCtor C) - : Name(N) - , Description(D) - , Ctor(C) { -Add(); - } - - ~RegisterRegAlloc() { -Remove(); - } - - - // Accessors - const char *getName()const { return Name; } - const char *getDescription() const { return Description; } - FunctionPassCtor getCtor() const { return Ctor; } - - - /// Add - Adds a register allocator to the registration list. - /// - void Add() { -Next = List; -List = this; - } - - - /// Remove - Removes a register allocator from the registration list. - /// - void Remove() { -for (RegisterRegAlloc **RA = &List; *RA; RA = &(*RA)->Next) { - if (*RA == this) { -*RA = Next; -break; - } -} - } - - - /// Find - Finds a register allocator in registration list. - /// - static FunctionPassCtor Find(const char *N); - -#ifndef NDEBUG - static void print(); -#endif -}; - - } // End llvm namespace #endif ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/tools/lli/lli.cpp
Changes in directory llvm/tools/lli: lli.cpp updated: 1.56 -> 1.57 --- Log message: Introducing plugable register allocators and instruction schedulers. --- Diffs of the changes: (+1 -0) lli.cpp |1 + 1 files changed, 1 insertion(+) Index: llvm/tools/lli/lli.cpp diff -u llvm/tools/lli/lli.cpp:1.56 llvm/tools/lli/lli.cpp:1.57 --- llvm/tools/lli/lli.cpp:1.56 Thu Mar 23 20:53:49 2006 +++ llvm/tools/lli/lli.cpp Tue Aug 1 09:21:23 2006 @@ -17,6 +17,7 @@ #include "llvm/ModuleProvider.h" #include "llvm/Type.h" #include "llvm/Bytecode/Reader.h" +#include "llvm/Codegen/LinkAllCodegenComponents.h" #include "llvm/ExecutionEngine/JIT.h" #include "llvm/ExecutionEngine/Interpreter.h" #include "llvm/ExecutionEngine/GenericValue.h" ___ 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/LinkAllPasses.h
Changes in directory llvm/include/llvm/Transforms: LinkAllPasses.h updated: 1.31 -> 1.32 --- Log message: Introducing plugable register allocators and instruction schedulers. --- Diffs of the changes: (+1 -1) LinkAllPasses.h |2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/include/llvm/Transforms/LinkAllPasses.h diff -u llvm/include/llvm/Transforms/LinkAllPasses.h:1.31 llvm/include/llvm/Transforms/LinkAllPasses.h:1.32 --- llvm/include/llvm/Transforms/LinkAllPasses.h:1.31 Fri May 26 08:58:26 2006 +++ llvm/include/llvm/Transforms/LinkAllPasses.hTue Aug 1 09:21:23 2006 @@ -110,7 +110,7 @@ (void) llvm::createRSProfilingPass(); (void) llvm::createIndMemRemPass(); } - } ForcePassLinking; + } ForcePassLinking; // Force link by creating a global definition. } #endif ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/CodeGen/Passes.cpp RegAllocLinearScan.cpp RegAllocLocal.cpp RegAllocSimple.cpp
Changes in directory llvm/lib/CodeGen: Passes.cpp updated: 1.18 -> 1.19 RegAllocLinearScan.cpp updated: 1.125 -> 1.126 RegAllocLocal.cpp updated: 1.83 -> 1.84 RegAllocSimple.cpp updated: 1.70 -> 1.71 --- Log message: Introducing plugable register allocators and instruction schedulers. --- Diffs of the changes: (+31 -57) Passes.cpp | 71 + RegAllocLinearScan.cpp |5 +++ RegAllocLocal.cpp |7 RegAllocSimple.cpp |5 +++ 4 files changed, 31 insertions(+), 57 deletions(-) Index: llvm/lib/CodeGen/Passes.cpp diff -u llvm/lib/CodeGen/Passes.cpp:1.18 llvm/lib/CodeGen/Passes.cpp:1.19 --- llvm/lib/CodeGen/Passes.cpp:1.18Thu Jul 27 15:05:00 2006 +++ llvm/lib/CodeGen/Passes.cpp Tue Aug 1 09:21:23 2006 @@ -12,74 +12,31 @@ // //===-===// +#include "llvm/CodeGen/MachinePassRegistry.h" #include "llvm/CodeGen/Passes.h" -#include "llvm/Pass.h" #include "llvm/Support/CommandLine.h" #include + using namespace llvm; namespace { - enum RegAllocName { simple, local, linearscan }; - - static cl::opt - RegAlloc( -"regalloc", -cl::desc("Register allocator to use: (default = linearscan)"), -cl::Prefix, -cl::values( - clEnumVal(simple," simple register allocator"), - clEnumVal(local, " local register allocator"), - clEnumVal(linearscan," linear scan register allocator"), - clEnumValEnd), -cl::init(linearscan)); -} - - -RegisterRegAlloc *RegisterRegAlloc::List = NULL; - -/// Find - Finds a register allocator in registration list. -/// -RegisterRegAlloc::FunctionPassCtor RegisterRegAlloc::Find(const char *N) { - for (RegisterRegAlloc *RA = List; RA; RA = RA->Next) { -if (strcmp(N, RA->Name) == 0) return RA->Ctor; - } - return NULL; -} - - -#ifndef NDEBUG -void RegisterRegAlloc::print() { - for (RegisterRegAlloc *RA = List; RA; RA = RA->Next) { -std::cerr << "RegAlloc:" << RA->Name << "\n"; - } + cl::opt > + RegAlloc("regalloc", + cl::init("linearscan"), + cl::desc("Register allocator to use: (default = linearscan)")); } -#endif - - -static RegisterRegAlloc - simpleRegAlloc("simple", " simple register allocator", - createSimpleRegisterAllocator); - -static RegisterRegAlloc - localRegAlloc("local", " local register allocator", -createLocalRegisterAllocator); - -static RegisterRegAlloc - linearscanRegAlloc("linearscan", "linear scan register allocator", - createLinearScanRegisterAllocator); - FunctionPass *llvm::createRegisterAllocator() { - const char *Names[] = {"simple", "local", "linearscan"}; - const char *DefltName = "linearscan"; + RegisterRegAlloc::FunctionPassCtor Ctor = RegisterRegAlloc::getCache(); + + if (!Ctor) { +Ctor = RegisterRegAlloc::FindCtor(RegAlloc); +assert(Ctor && "No register allocator found"); +if (!Ctor) Ctor = RegisterRegAlloc::FirstCtor(); +RegisterRegAlloc::setCache(Ctor); + } - RegisterRegAlloc::FunctionPassCtor Ctor = -RegisterRegAlloc::Find(Names[RegAlloc]); - if (!Ctor) Ctor = RegisterRegAlloc::Find(DefltName); - assert(Ctor && "No register allocator found"); return Ctor(); } - - Index: llvm/lib/CodeGen/RegAllocLinearScan.cpp diff -u llvm/lib/CodeGen/RegAllocLinearScan.cpp:1.125 llvm/lib/CodeGen/RegAllocLinearScan.cpp:1.126 --- llvm/lib/CodeGen/RegAllocLinearScan.cpp:1.125 Thu Jul 20 12:28:38 2006 +++ llvm/lib/CodeGen/RegAllocLinearScan.cpp Tue Aug 1 09:21:23 2006 @@ -18,6 +18,7 @@ #include "llvm/Function.h" #include "llvm/CodeGen/MachineFunctionPass.h" #include "llvm/CodeGen/MachineInstr.h" +#include "llvm/CodeGen/MachinePassRegistry.h" #include "llvm/CodeGen/Passes.h" #include "llvm/CodeGen/SSARegMap.h" #include "llvm/Target/MRegisterInfo.h" @@ -42,6 +43,10 @@ static Statistic<> NumBacktracks ("regalloc", "Number of times we had to backtrack"); + static RegisterRegAlloc +linearscanRegAlloc("linearscan", " linear scan register allocator", + createLinearScanRegisterAllocator); + static unsigned numIterations = 0; static unsigned numIntervals = 0; Index: llvm/lib/CodeGen/RegAllocLocal.cpp diff -u llvm/lib/CodeGen/RegAllocLocal.cpp:1.83 llvm/lib/CodeGen/RegAllocLocal.cpp:1.84 --- llvm/lib/CodeGen/RegAllocLocal.cpp:1.83 Fri Jul 21 16:15:20 2006 +++ llvm/lib/CodeGen/RegAllocLocal.cpp Tue Aug 1 09:21:23 2006 @@ -18,6 +18,7 @@ #include "llvm/CodeGen/MachineInstr.h" #include "llvm/CodeGen/SSARegMap.h" #include "llvm/CodeGen/MachineFrameInfo.h" +#include "llvm/CodeGen/MachinePassRegistry.h" #include "llvm/CodeGen/LiveVariables.h" #include "llvm/Target/TargetInstrInfo.h" #include "llvm/Target/TargetMachine.h" @@ -35,6 +36,12 @@ static Statistic<> NumLoads ("ra-local", "Number of loads added"); static Statistic<> NumFolded("ra-l
[llvm-commits] CVS: llvm/lib/CodeGen/SelectionDAG/ScheduleDAGList.cpp ScheduleDAGRRList.cpp ScheduleDAGSimple.cpp SelectionDAGISel.cpp
Changes in directory llvm/lib/CodeGen/SelectionDAG: ScheduleDAGList.cpp updated: 1.62 -> 1.63 ScheduleDAGRRList.cpp updated: 1.9 -> 1.10 ScheduleDAGSimple.cpp updated: 1.13 -> 1.14 SelectionDAGISel.cpp updated: 1.262 -> 1.263 --- Log message: Introducing plugable register allocators and instruction schedulers. --- Diffs of the changes: (+87 -82) ScheduleDAGList.cpp | 19 ++ ScheduleDAGRRList.cpp | 18 +++-- ScheduleDAGSimple.cpp | 37 --- SelectionDAGISel.cpp | 95 +++--- 4 files changed, 87 insertions(+), 82 deletions(-) Index: llvm/lib/CodeGen/SelectionDAG/ScheduleDAGList.cpp diff -u llvm/lib/CodeGen/SelectionDAG/ScheduleDAGList.cpp:1.62 llvm/lib/CodeGen/SelectionDAG/ScheduleDAGList.cpp:1.63 --- llvm/lib/CodeGen/SelectionDAG/ScheduleDAGList.cpp:1.62 Thu Jul 20 12:28:38 2006 +++ llvm/lib/CodeGen/SelectionDAG/ScheduleDAGList.cpp Tue Aug 1 09:21:23 2006 @@ -19,6 +19,7 @@ //===--===// #define DEBUG_TYPE "sched" +#include "llvm/CodeGen/MachinePassRegistry.h" #include "llvm/CodeGen/ScheduleDAG.h" #include "llvm/CodeGen/SSARegMap.h" #include "llvm/Target/MRegisterInfo.h" @@ -38,6 +39,10 @@ static Statistic<> NumStalls("scheduler", "Number of pipeline stalls"); } +static RegisterScheduler + tdListDAGScheduler("list-td", " Top-down list scheduler", + createTDListDAGScheduler); + namespace { //===--===// /// ScheduleDAGList - The actual list scheduler implementation. This supports @@ -511,12 +516,12 @@ // Public Constructor Functions //===--===// -/// createTDListDAGScheduler - This creates a top-down list scheduler with the -/// specified hazard recognizer. -ScheduleDAG* llvm::createTDListDAGScheduler(SelectionDAG &DAG, -MachineBasicBlock *BB, -HazardRecognizer *HR) { - return new ScheduleDAGList(DAG, BB, DAG.getTarget(), +/// createTDListDAGScheduler - This creates a top-down list scheduler with a +/// new hazard recognizer. This scheduler takes ownership of the hazard +/// recognizer and deletes it when done. +ScheduleDAG* llvm::createTDListDAGScheduler(SelectionDAG *DAG, +MachineBasicBlock *BB) { + return new ScheduleDAGList(*DAG, BB, DAG->getTarget(), new LatencyPriorityQueue(), - HR); + new HazardRecognizer()); } Index: llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp diff -u llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp:1.9 llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp:1.10 --- llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp:1.9 Fri Jul 21 15:57:35 2006 +++ llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp Tue Aug 1 09:21:23 2006 @@ -16,6 +16,7 @@ //===--===// #define DEBUG_TYPE "sched" +#include "llvm/CodeGen/MachinePassRegistry.h" #include "llvm/CodeGen/ScheduleDAG.h" #include "llvm/CodeGen/SSARegMap.h" #include "llvm/Target/MRegisterInfo.h" @@ -31,6 +32,15 @@ #include "llvm/Support/CommandLine.h" using namespace llvm; +static RegisterScheduler + burrListDAGScheduler("list-burr", + " Bottom-up register reduction list scheduling", + createBURRListDAGScheduler); +static RegisterScheduler + tdrListrDAGScheduler("list-tdrr", + " Top-down register reduction list scheduling", + createTDRRListDAGScheduler); + namespace { //===--===// /// ScheduleDAGRRList - The actual register reduction list scheduler @@ -876,15 +886,15 @@ // Public Constructor Functions //===--===// -llvm::ScheduleDAG* llvm::createBURRListDAGScheduler(SelectionDAG &DAG, +llvm::ScheduleDAG* llvm::createBURRListDAGScheduler(SelectionDAG *DAG, MachineBasicBlock *BB) { - return new ScheduleDAGRRList(DAG, BB, DAG.getTarget(), true, + return new ScheduleDAGRRList(*DAG, BB, DAG->getTarget(), true, new BURegReductionPriorityQueue()); } -llvm::ScheduleDAG* llvm::createTDRRListDAGScheduler(SelectionDAG &DAG, +llvm::ScheduleDAG* llvm::createTDRRListDAGScheduler(SelectionDAG *DAG, MachineBasicBlock *BB) { - return new ScheduleDAGRRList(DAG, BB, DAG.getTarget(), false, + return new ScheduleDAGRRList(*DAG, BB, DAG->getTarget(), false,
[llvm-commits] CVS: llvm/include/llvm/CodeGen/ScheduleDAG.h SelectionDAGISel.h
Changes in directory llvm/include/llvm/CodeGen: ScheduleDAG.h updated: 1.27 -> 1.28 SelectionDAGISel.h updated: 1.20 -> 1.21 --- Log message: Introducing plugable register allocators and instruction schedulers. --- Diffs of the changes: (+16 -14) ScheduleDAG.h | 26 -- SelectionDAGISel.h |4 2 files changed, 16 insertions(+), 14 deletions(-) Index: llvm/include/llvm/CodeGen/ScheduleDAG.h diff -u llvm/include/llvm/CodeGen/ScheduleDAG.h:1.27 llvm/include/llvm/CodeGen/ScheduleDAG.h:1.28 --- llvm/include/llvm/CodeGen/ScheduleDAG.h:1.27Wed May 24 12:04:03 2006 +++ llvm/include/llvm/CodeGen/ScheduleDAG.h Tue Aug 1 09:21:23 2006 @@ -221,29 +221,35 @@ std::map &VRBaseMap); }; - ScheduleDAG *createBFS_DAGScheduler(SelectionDAG &DAG, MachineBasicBlock *BB); + /// createBFS_DAGScheduler - This creates a simple breadth first instruction + /// scheduler. + ScheduleDAG *createBFS_DAGScheduler(SelectionDAG *DAG, MachineBasicBlock *BB); /// createSimpleDAGScheduler - This creates a simple two pass instruction - /// scheduler. - ScheduleDAG* createSimpleDAGScheduler(bool NoItins, SelectionDAG &DAG, + /// scheduler using instruction itinerary. + ScheduleDAG* createSimpleDAGScheduler(SelectionDAG *DAG, MachineBasicBlock *BB); + /// createNoItinsDAGScheduler - This creates a simple two pass instruction + /// scheduler without using instruction itinerary. + ScheduleDAG* createNoItinsDAGScheduler(SelectionDAG *DAG, + MachineBasicBlock *BB); + /// createBURRListDAGScheduler - This creates a bottom up register usage /// reduction list scheduler. - ScheduleDAG* createBURRListDAGScheduler(SelectionDAG &DAG, + ScheduleDAG* createBURRListDAGScheduler(SelectionDAG *DAG, MachineBasicBlock *BB); /// createTDRRListDAGScheduler - This creates a top down register usage /// reduction list scheduler. - ScheduleDAG* createTDRRListDAGScheduler(SelectionDAG &DAG, + ScheduleDAG* createTDRRListDAGScheduler(SelectionDAG *DAG, MachineBasicBlock *BB); /// createTDListDAGScheduler - This creates a top-down list scheduler with - /// the specified hazard recognizer. This takes ownership of the hazard - /// recognizer and deletes it when done. - ScheduleDAG* createTDListDAGScheduler(SelectionDAG &DAG, -MachineBasicBlock *BB, -HazardRecognizer *HR); + /// a hazard recognizer. + ScheduleDAG* createTDListDAGScheduler(SelectionDAG *DAG, +MachineBasicBlock *BB); + } #endif Index: llvm/include/llvm/CodeGen/SelectionDAGISel.h diff -u llvm/include/llvm/CodeGen/SelectionDAGISel.h:1.20 llvm/include/llvm/CodeGen/SelectionDAGISel.h:1.21 --- llvm/include/llvm/CodeGen/SelectionDAGISel.h:1.20 Thu Jul 27 20:03:48 2006 +++ llvm/include/llvm/CodeGen/SelectionDAGISel.hTue Aug 1 09:21:23 2006 @@ -67,10 +67,6 @@ /// folded during instruction selection? virtual bool CanBeFoldedBy(SDNode *N, SDNode *U) { return true; } - /// CreateTargetHazardRecognizer - Return a newly allocated hazard recognizer - /// to use for this target when scheduling the DAG. - virtual HazardRecognizer *CreateTargetHazardRecognizer(); - /// CaseBlock - This structure is used to communicate between SDLowering and /// SDISel for the code generation of additional basic blocks needed by multi- /// case switch statements. ___ 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/ARMAsmPrinter.cpp ARMISelDAGToDAG.cpp
Changes in directory llvm/lib/Target/ARM: ARMAsmPrinter.cpp updated: 1.8 -> 1.9 ARMISelDAGToDAG.cpp updated: 1.18 -> 1.19 --- Log message: implement LowerConstantPool and LowerGlobalAddress --- Diffs of the changes: (+26 -3) ARMAsmPrinter.cpp |4 ++-- ARMISelDAGToDAG.cpp | 25 - 2 files changed, 26 insertions(+), 3 deletions(-) Index: llvm/lib/Target/ARM/ARMAsmPrinter.cpp diff -u llvm/lib/Target/ARM/ARMAsmPrinter.cpp:1.8 llvm/lib/Target/ARM/ARMAsmPrinter.cpp:1.9 --- llvm/lib/Target/ARM/ARMAsmPrinter.cpp:1.8 Mon Jul 31 15:38:13 2006 +++ llvm/lib/Target/ARM/ARMAsmPrinter.cpp Tue Aug 1 07:58:43 2006 @@ -168,8 +168,8 @@ abort(); break; case MachineOperand::MO_ConstantPoolIndex: -assert(0 && "not implemented"); -abort(); +O << PrivateGlobalPrefix << "CPI" << getFunctionNumber() + << '_' << MO.getConstantPoolIndex(); break; default: O << ""; abort (); break; Index: llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp diff -u llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp:1.18 llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp:1.19 --- llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp:1.18Thu Jul 27 19:46:15 2006 +++ llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp Tue Aug 1 07:58:43 2006 @@ -41,7 +41,9 @@ ARMTargetLowering::ARMTargetLowering(TargetMachine &TM) : TargetLowering(TM) { - setOperationAction(ISD::RET, MVT::Other, Custom); + setOperationAction(ISD::RET, MVT::Other, Custom); + setOperationAction(ISD::GlobalAddress, MVT::i32, Custom); + setOperationAction(ISD::ConstantPool, MVT::i32, Custom); } namespace llvm { @@ -218,6 +220,23 @@ } } +static SDOperand LowerConstantPool(SDOperand Op, SelectionDAG &DAG) { + MVT::ValueType PtrVT = Op.getValueType(); + ConstantPoolSDNode *CP = cast(Op); + Constant *C = CP->get(); + SDOperand CPI = DAG.getTargetConstantPool(C, PtrVT, CP->getAlignment()); + + return CPI; +} + +static SDOperand LowerGlobalAddress(SDOperand Op, + SelectionDAG &DAG) { + GlobalValue *GV = cast(Op)->getGlobal(); + SDOperand CPAddr = DAG.getConstantPool(GV, MVT::i32, 2); + return DAG.getLoad(MVT::i32, DAG.getEntryNode(), CPAddr, +DAG.getSrcValue(NULL)); +} + static SDOperand LowerFORMAL_ARGUMENTS(SDOperand Op, SelectionDAG &DAG) { std::vector ArgValues; SDOperand Root = Op.getOperand(0); @@ -244,6 +263,10 @@ default: assert(0 && "Should not custom lower this!"); abort(); + case ISD::ConstantPool: +return LowerConstantPool(Op, DAG); + case ISD::GlobalAddress: +return LowerGlobalAddress(Op, DAG); case ISD::FORMAL_ARGUMENTS: return LowerFORMAL_ARGUMENTS(Op, DAG); case ISD::CALL: ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/CREDITS.TXT
Changes in directory llvm: CREDITS.TXT updated: 1.58 -> 1.59 --- Log message: Adding to credibility. --- Diffs of the changes: (+3 -1) CREDITS.TXT |4 +++- 1 files changed, 3 insertions(+), 1 deletion(-) Index: llvm/CREDITS.TXT diff -u llvm/CREDITS.TXT:1.58 llvm/CREDITS.TXT:1.59 --- llvm/CREDITS.TXT:1.58 Tue Aug 1 02:06:00 2006 +++ llvm/CREDITS.TXTTue Aug 1 04:01:40 2006 @@ -104,7 +104,9 @@ N: Jim Laskey E: [EMAIL PROTECTED] D: Improvements to the PPC backend, instruction scheduling -D: Debug implementation, Dwarf implementation +D: Debug and Dwarf implementation +D: Auto upgrade mangler +D: llvm-gcc4 svn wrangler N: Chris Lattner 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/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
Changes in directory llvm/lib/CodeGen/SelectionDAG: SelectionDAG.cpp updated: 1.314 -> 1.315 --- Log message: Added AssignTopologicalOrder() to assign each node an unique id based on their topological order. --- Diffs of the changes: (+38 -2) SelectionDAG.cpp | 40 ++-- 1 files changed, 38 insertions(+), 2 deletions(-) Index: llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp diff -u llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:1.314 llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:1.315 --- llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:1.314Thu Jul 27 19:45:53 2006 +++ llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp Tue Aug 1 03:20:41 2006 @@ -28,6 +28,7 @@ #include #include #include +#include using namespace llvm; static bool isCommutativeBinOp(unsigned Opcode) { @@ -2698,8 +2699,8 @@ } -/// AssignNodeIds - Assign a unique node id for each node in the DAG. It returns -/// the maximum id. +/// AssignNodeIds - Assign a unique node id for each node in the DAG based on +/// their allnodes order. It returns the maximum id. unsigned SelectionDAG::AssignNodeIds() { unsigned Id = 0; for (allnodes_iterator I = allnodes_begin(), E = allnodes_end(); I != E; ++I){ @@ -2709,6 +2710,41 @@ return Id; } +/// AssignTopologicalOrder - Assign a unique node id for each node in the DAG +/// based on their topological order. It returns a vector of the SDNodes* in +/// assigned order. +std::vector SelectionDAG::AssignTopologicalOrder() { + unsigned DAGSize = AllNodes.size(); + std::vector TopOrder; + std::map InDegree; + std::deque Sources; + for (allnodes_iterator I = allnodes_begin(),E = allnodes_end(); I != E; ++I){ +SDNode *N = I; +unsigned Degree = N->use_size(); +InDegree[N] = Degree; +if (Degree == 0) + Sources.push_back(I); + } + + int Id = 0; + while (!Sources.empty()) { +SDNode *N = Sources.front(); +Sources.pop_front(); +TopOrder.push_back(N); +N->setNodeId(Id++); +for (SDNode::op_iterator I = N->op_begin(), E = N->op_end(); I != E; ++I) { + SDNode *P = I->Val; + unsigned Degree = InDegree[P] - 1; + if (Degree == 0) +Sources.push_back(P); + InDegree[P] = Degree; +} + } + + return TopOrder; +} + + //===--===// // SDNode Class ___ 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
Changes in directory llvm/include/llvm/CodeGen: SelectionDAG.h updated: 1.105 -> 1.106 --- Log message: Added AssignTopologicalOrder() to assign each node an unique id based on their topological order. --- Diffs of the changes: (+7 -2) SelectionDAG.h |9 +++-- 1 files changed, 7 insertions(+), 2 deletions(-) Index: llvm/include/llvm/CodeGen/SelectionDAG.h diff -u llvm/include/llvm/CodeGen/SelectionDAG.h:1.105 llvm/include/llvm/CodeGen/SelectionDAG.h:1.106 --- llvm/include/llvm/CodeGen/SelectionDAG.h:1.105 Thu Jul 27 19:44:29 2006 +++ llvm/include/llvm/CodeGen/SelectionDAG.hTue Aug 1 03:19:46 2006 @@ -422,10 +422,15 @@ /// have no referrers. void DeleteNode(SDNode *N); - /// AssignNodeIds - Assign a unique node id for each node in the DAG. It - /// returns the maximum id. + /// AssignNodeIds - Assign a unique node id for each node in the DAG based on + /// their allnodes order. It returns the maximum id. unsigned AssignNodeIds(); + /// AssignTopologicalOrder - Assign a unique node id for each node in the DAG + /// based on their topological order. It returns a vector of the SDNodes* in + /// assigned order. + std::vector AssignTopologicalOrder(); + void dump() const; /// InsertISelMapEntry - A helper function to insert a key / element pair ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
Changes in directory llvm/lib/Target/X86: X86ISelDAGToDAG.cpp updated: 1.85 -> 1.86 --- Log message: Factor topological order code to SelectionDAG. Clean up. --- Diffs of the changes: (+23 -87) X86ISelDAGToDAG.cpp | 110 ++-- 1 files changed, 23 insertions(+), 87 deletions(-) Index: llvm/lib/Target/X86/X86ISelDAGToDAG.cpp diff -u llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.85 llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.86 --- llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.85Fri Jul 28 01:33:41 2006 +++ llvm/lib/Target/X86/X86ISelDAGToDAG.cpp Tue Aug 1 03:17:22 2006 @@ -99,8 +99,7 @@ : SelectionDAGISel(X86Lowering), X86Lowering(*TM.getTargetLowering()), Subtarget(&TM.getSubtarget()), -DAGSize(0), TopOrder(NULL), IdToOrder(NULL), -RMRange(NULL), ReachabilityMatrix(NULL) {} +DAGSize(0) {} virtual bool runOnFunction(Function &Fn) { // Make sure we re-emit a set of the global base reg if necessary @@ -124,7 +123,6 @@ #include "X86GenDAGISel.inc" private: -void DetermineTopologicalOrdering(); void DetermineReachability(SDNode *f, SDNode *t); void Select(SDOperand &Result, SDOperand N); @@ -187,43 +185,37 @@ /// TopOrder - Topological ordering of all nodes in the DAG. /// -SDNode* *TopOrder; +std::vector TopOrder; -/// IdToOrder - Node id to topological order map. -/// -unsigned *IdToOrder; +/// ReachabilityMatrix - A N x N matrix representing all pairs reachability +/// information. One bit per potential edge. +std::vector ReachabilityMatrix; -/// RMRange - The range of reachibility information available for the +/// RMRange - The range of reachability information available for the /// particular source node. -unsigned *RMRange; - -/// ReachabilityMatrix - A N x N matrix representing all pairs reachibility -/// information. One bit per potential edge. -unsigned char *ReachabilityMatrix; +std::vector ReachMatrixRange; inline void setReachable(SDNode *f, SDNode *t) { unsigned Idx = f->getNodeId() * DAGSize + t->getNodeId(); - ReachabilityMatrix[Idx / 8] |= 1 << (Idx % 8); + ReachabilityMatrix[Idx] = true; } inline bool isReachable(SDNode *f, SDNode *t) { unsigned Idx = f->getNodeId() * DAGSize + t->getNodeId(); - return ReachabilityMatrix[Idx / 8] & (1 << (Idx % 8)); + return ReachabilityMatrix[Idx]; } /// UnfoldableSet - An boolean array representing nodes which have been /// folded into addressing modes and therefore should not be folded in /// another operation. -unsigned char *UnfoldableSet; +std::vector UnfoldableSet; inline void setUnfoldable(SDNode *N) { - unsigned Id = N->getNodeId(); - UnfoldableSet[Id / 8] |= 1 << (Id % 8); + UnfoldableSet[N->getNodeId()] = true; } inline bool isUnfoldable(SDNode *N) { - unsigned Id = N->getNodeId(); - return UnfoldableSet[Id / 8] & (1 << (Id % 8)); + return UnfoldableSet[N->getNodeId()]; } #ifndef NDEBUG @@ -259,58 +251,12 @@ return true; } -/// DetermineTopologicalOrdering - Determine topological ordering of the nodes -/// in the DAG. -void X86DAGToDAGISel::DetermineTopologicalOrdering() { - TopOrder = new SDNode*[DAGSize]; - IdToOrder = new unsigned[DAGSize]; - memset(IdToOrder, 0, DAGSize * sizeof(unsigned)); - RMRange = new unsigned[DAGSize]; - memset(RMRange, 0, DAGSize * sizeof(unsigned)); - - std::vector InDegree(DAGSize); - std::deque Sources; - for (SelectionDAG::allnodes_iterator I = CurDAG->allnodes_begin(), - E = CurDAG->allnodes_end(); I != E; ++I) { -SDNode *N = I; -unsigned Degree = N->use_size(); -InDegree[N->getNodeId()] = Degree; -if (Degree == 0) - Sources.push_back(I); - } - - unsigned Order = 0; - while (!Sources.empty()) { -SDNode *N = Sources.front(); -Sources.pop_front(); -TopOrder[Order] = N; -IdToOrder[N->getNodeId()] = Order; -Order++; -for (SDNode::op_iterator I = N->op_begin(), E = N->op_end(); I != E; ++I) { - SDNode *P = I->Val; - int PId = P->getNodeId(); - unsigned Degree = InDegree[PId] - 1; - if (Degree == 0) -Sources.push_back(P); - InDegree[PId] = Degree; -} - } -} - -/// DetermineReachability - Determine reachibility between all pairs of nodes +/// DetermineReachability - Determine reachability between all pairs of nodes /// between f and t in topological order. void X86DAGToDAGISel::DetermineReachability(SDNode *f, SDNode *t) { - if (!ReachabilityMatrix) { -unsigned RMSize = (DAGSize * DAGSize + 7) / 8; -ReachabilityMatrix = new unsigned char[RMSize]; -memset(ReachabilityMatrix, 0, RMSize); - } - - int Idf = f->getNodeId(); - int Idt = t->getNodeId(); - unsigned Orderf = IdToOrder[Idf]; - unsigned Ordert = IdToOrder[Idt]; - unsigned Range = R
[llvm-commits] CVS: llvm/utils/GenLibDeps.pl
Changes in directory llvm/utils: GenLibDeps.pl updated: 1.10 -> 1.11 --- Log message: Fix a problem with use of undefined variables. Print an error message if the first argument is omitted. Attempt to use a standard/default font. Make the generation of the DOT file readable. --- Diffs of the changes: (+39 -9) GenLibDeps.pl | 48 +++- 1 files changed, 39 insertions(+), 9 deletions(-) Index: llvm/utils/GenLibDeps.pl diff -u llvm/utils/GenLibDeps.pl:1.10 llvm/utils/GenLibDeps.pl:1.11 --- llvm/utils/GenLibDeps.pl:1.10 Thu Jul 27 18:00:30 2006 +++ llvm/utils/GenLibDeps.plTue Aug 1 03:09:03 2006 @@ -24,6 +24,9 @@ # Give first option a name. my $Directory = $ARGV[0]; +if (!defined($Directory)) { + die "First argument must be the directory containing LLVM libs\n"; +} my $nmPath = $ARGV[1]; # Find the "dot" program @@ -33,9 +36,9 @@ die "Can't find 'dot'" if (! -x "$DotPath"); } -if ($nmPath eq "") { -chomp($nmPath=`which nm`); -die "Can't find 'nm'" if (! -x "$nmPath"); +if (!defined($nmPath) || $nmPath eq "") { + chomp($nmPath=`which nm`); + die "Can't find 'nm'" if (! -x "$nmPath"); } # Open the directory and read its contents, sorting by name and differentiating @@ -145,9 +148,23 @@ open DOT, "| $DotPath -Tgif > libdeps.gif"; - print DOT "digraph LibDeps {size=\"40,15\"; ratio=\"1.3\"; margin=\"0.25\"; rankdir=\"LR\"; mclimit=\"50.0\"; ordering=\"out\"; center=\"1\";\n"; - print DOT "node [shape=\"box\",color=\"#88\",fillcolor=\"#FFFACD\",fontcolor=\"#5577DD\",style=\"filled\",fontsize=\"24\"];\n"; - print DOT "edge [style=\"solid\",color=\"#88\"];\n"; + print DOT "digraph LibDeps {\n"; + print DOT " size=\"40,15\"; \n"; + print DOT " ratio=\"1.3\"; \n"; + print DOT " margin=\"0.25\"; \n"; + print DOT " rankdir=\"LR\"; \n"; + print DOT " mclimit=\"50.0\"; \n"; + print DOT " ordering=\"out\"; \n"; + print DOT " center=\"1\";\n"; + print DOT "node [shape=\"box\",\n"; + print DOT " color=\"#88\",\n"; + print DOT " fillcolor=\"#FFFACD\",\n"; + print DOT " fontcolor=\"#3355BB\",\n"; + print DOT " style=\"filled\",\n"; + print DOT " fontname=\"sans\",\n"; + print DOT " fontsize=\"24\"\n"; + print DOT "];\n"; + print DOT "edge [dir=\"forward\",style=\"solid\",color=\"#88\"];\n"; } # Print libraries first @@ -159,9 +176,22 @@ print DOT "}\n"; close DOT; open DOT, "| $DotPath -Tgif > objdeps.gif"; - print DOT "digraph ObjDeps {size=\"40,15\"; ratio=\"1.3\"; margin=\"0.25\"; rankdir=\"LR\"; mclimit=\"50.0\"; ordering=\"out\"; center=\"1\";\n"; - print DOT "node [shape=\"box\",color=\"#88\",fillcolor=\"#FFFACD\",fontcolor=\"#5577DD\",style=\"filled\",fontsize=\"24\"];\n"; - print DOT "edge [style=\"solid\",color=\"#88\"];\n"; + print DOT "digraph ObjDeps {\n"; + print DOT " size=\"8,10\";\n"; + print DOT " margin=\"0.25\";\n"; + print DOT " rankdir=\"LR\";\n"; + print DOT " mclimit=\"50.0\";\n"; + print DOT " ordering=\"out\";\n"; + print DOT " center=\"1\";\n"; + print DOT "node [shape=\"box\",\n"; + print DOT " color=\"#88\",\n"; + print DOT " fillcolor=\"#FFFACD\",\n"; + print DOT " fontcolor=\"#3355BB\",\n"; + print DOT " fontname=\"sans\",\n"; + print DOT " style=\"filled\",\n"; + print DOT " fontsize=\"24\"\n"; + print DOT "];\n"; + print DOT "edge [dir=\"forward\",style=\"solid\",color=\"#88\"];\n"; } # Print objects second ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] [release_18] CVS: llvm/docs/CommandGuide/llvm-config.pod
Changes in directory llvm/docs/CommandGuide: llvm-config.pod updated: 1.2 -> 1.2.2.1 --- Log message: Merge changes for 1.8 release (new options in llvm-config) --- Diffs of the changes: (+12 -0) llvm-config.pod | 12 1 files changed, 12 insertions(+) Index: llvm/docs/CommandGuide/llvm-config.pod diff -u llvm/docs/CommandGuide/llvm-config.pod:1.2 llvm/docs/CommandGuide/llvm-config.pod:1.2.2.1 --- llvm/docs/CommandGuide/llvm-config.pod:1.2 Tue Jun 6 17:39:59 2006 +++ llvm/docs/CommandGuide/llvm-config.pod Tue Aug 1 02:39:54 2006 @@ -38,6 +38,14 @@ Print the installation prefix for LLVM. +=item B<--src-root> + +Print the source root from which LLVM was built. + +=item B<--obj-root> + +Print the object root used to build LLVM. + =item B<--bindir> Print the installation directory for LLVM binaries. @@ -83,6 +91,10 @@ Print the component names for all targets supported by this copy of LLVM. +=item B<--build-mode> + +Print the build mode used when LLVM was built (e.g. Debug or Release) + =back =head1 COMPONENTS ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/docs/CommandGuide/llvm-config.pod
Changes in directory llvm/docs/CommandGuide: llvm-config.pod updated: 1.2 -> 1.3 --- Log message: Update to include new options. --- Diffs of the changes: (+12 -0) llvm-config.pod | 12 1 files changed, 12 insertions(+) Index: llvm/docs/CommandGuide/llvm-config.pod diff -u llvm/docs/CommandGuide/llvm-config.pod:1.2 llvm/docs/CommandGuide/llvm-config.pod:1.3 --- llvm/docs/CommandGuide/llvm-config.pod:1.2 Tue Jun 6 17:39:59 2006 +++ llvm/docs/CommandGuide/llvm-config.pod Tue Aug 1 02:38:39 2006 @@ -38,6 +38,14 @@ Print the installation prefix for LLVM. +=item B<--src-root> + +Print the source root from which LLVM was built. + +=item B<--obj-root> + +Print the object root used to build LLVM. + =item B<--bindir> Print the installation directory for LLVM binaries. @@ -83,6 +91,10 @@ Print the component names for all targets supported by this copy of LLVM. +=item B<--build-mode> + +Print the build mode used when LLVM was built (e.g. Debug or Release) + =back =head1 COMPONENTS ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/docs/UsingLibraries.html
Changes in directory llvm/docs: UsingLibraries.html updated: 1.23 -> 1.24 --- Log message: Update library dependency information, describe new libraries, talk a little about llvm-config as a source for help with library dependencies. --- Diffs of the changes: (+164 -107) UsingLibraries.html | 271 +++- 1 files changed, 164 insertions(+), 107 deletions(-) Index: llvm/docs/UsingLibraries.html diff -u llvm/docs/UsingLibraries.html:1.23 llvm/docs/UsingLibraries.html:1.24 --- llvm/docs/UsingLibraries.html:1.23 Fri May 12 21:22:01 2006 +++ llvm/docs/UsingLibraries.html Tue Aug 1 02:32:01 2006 @@ -33,8 +33,10 @@ tools. In addition to the LLVM tool set, the functionality of LLVM is available through a set of libraries. To use LLVM as a toolkit for constructing tools, a developer needs to understand what is contained in the - various libraries, what they depend on, and how to use them. This document - describes the contents of the libraries and how and when to use them. + various libraries, what they depend on, and how to use them. Fortunately, + there is a tool, llvm-config to aid with this. This document + describes the contents of the libraries and how to use llvm-config + to generate command line options. @@ -44,20 +46,20 @@ If you're writing a compiler, virtual machine, or any other utility based on LLVM, you'll need to figure out which of the many libraries files you will need to link with to be successful. An understanding of the contents of these - files and their inter-relationships will be useful in coming up with an optimal - specification for the libraries to link with. The purpose of this document is - to reduce some of the trial and error that the author experienced in using - LLVM. + libraries will be useful in coming up with an optimal specification for the + libraries to link with. The purpose of this document is to reduce some of + the trial and error that the author experienced in using LLVM. LLVM produces two types of libraries: archives (ending in .a) and objects (ending in .o). However, both are libraries. Libraries ending in .o are known as re-linked libraries because they contain all the compilation units of the library linked together as a single .o file. - Furthermore, many of the libraries have both forms of library. The + Furthermore, several of the libraries have both forms of library. The re-linked libraries are used whenever you want to include all symbols from the library. The archive libraries are used whenever you want to only resolve outstanding symbols at that point in the link without including everything in the library. - When linking your tools, you will use the LLVMLIBS make variable. + If you're using the LLVM Makefile system to link your tools,you will use + the LLVMLIBS make variable. (see the Makefile Guide for details). This variable specifies which LLVM libraries to link into your tool and the order in which they will be linked. You specify re-linked libraries by @@ -76,61 +78,65 @@ Core Libraries LLVMArchive.a LLVM archive reading and writing - LLVMAsmParser.o + LLVMAsmParser.a LLVM assembly parsing - LLVMBCReader.o + LLVMBCReader.a LLVM bytecode reading - LLVMBCWriter.o + LLVMBCWriter.a LLVM bytecode writing - LLVMCore.o + LLVMCore.a LLVM core intermediate representation - LLVMDebugger.o + LLVMDebugger.a Source level debugging support LLVMLinker.a Bytecode and archive linking interface - LLVMSupport.a .o + LLVMSupport.a General support utilities - LLVMSystem.a .o + LLVMSystem.a Operating system abstraction layer + LLVMbzip2.a +BZip2 compression library Analysis Libraries - LLVMAnalysis.a .o + LLVMAnalysis.a Various analysis passes. - LLVMDataStructure.a .o + LLVMDataStructure.o Data structure analysis passes. - LLVMipa.a .o + LLVMipa.a Inter-procedural analysis passes. Transformation Libraries - LLVMInstrumentation.a .o + LLVMInstrumentation.a Instrumentation passes. - LLVMipo.a .o + LLVMipo.a All inter-procedural optimization passes. - LLVMScalarOpts.a .o + LLVMScalarOpts.a All scalar optimization passes. - LLVMTransforms.a .o + LLVMTransforms.a Uncategorized transformation passes. - LLVMTransformUtils.a .o + LLVMTransformUtils.a Transformation utilities. Code Generation Libraries LLVMCodeGen.o Native code generation infrastructure + LLVMSelectionDAG.o +Aggressive instruction selector for directed acyclic graphs Target Libraries LLVMAlpha.o Code generation for Alpha architecture + LLVMARM.o +Code generation for ARM architecture LLVMCBackend.o 'C' language code generator. LLVMIA64.o Code generation for IA64 architecture LLVMPowerPC.o Code generation for PowerPC architecture - LLVMSelectionDAG.o -A
[llvm-commits] CVS: llvm/docs/img/libdeps.gif objdeps.gif
Changes in directory llvm/docs/img: libdeps.gif updated: 1.2 -> 1.3 objdeps.gif updated: 1.2 -> 1.3 --- Log message: Update library dependency information, describe new libraries, talk a little about llvm-config as a source for help with library dependencies. --- Diffs of the changes: (+0 -0) libdeps.gif |0 objdeps.gif |0 2 files changed Index: llvm/docs/img/libdeps.gif Index: llvm/docs/img/objdeps.gif ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits