aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2004-05-13Specify units in padding length.Misha Brukman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13560 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-13Make page HTML-4.01 compliant (& => & in URL).Misha Brukman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13559 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-13Two more improvements for null pointer handling: storing a null pointerChris Lattner
and passing a null pointer into a function. For this testcase: void %test(int** %X) { store int* null, int** %X call void %test(int** null) ret void } we now generate this: test: sub %ESP, 12 mov %EAX, DWORD PTR [%ESP + 16] mov DWORD PTR [%EAX], 0 mov DWORD PTR [%ESP], 0 call test add %ESP, 12 ret instead of this: test: sub %ESP, 12 mov %EAX, DWORD PTR [%ESP + 16] mov %ECX, 0 mov DWORD PTR [%EAX], %ECX mov %EAX, 0 mov DWORD PTR [%ESP], %EAX call test add %ESP, 12 ret git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13558 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-13Second half of my fixed-sized-alloca patch. This folds the LEA to computeChris Lattner
the alloca address into common operations like loads/stores. In a simple testcase like this (which is just designed to excersize the alloca A, nothing more): int %test(int %X, bool %C) { %A = alloca int store int %X, int* %A store int* %A, int** %G br bool %C, label %T, label %F T: call int %test(int 1, bool false) %V = load int* %A ret int %V F: call int %test(int 123, bool true) %V2 = load int* %A ret int %V2 } We now generate: test: sub %ESP, 12 mov %EAX, DWORD PTR [%ESP + 16] mov %CL, BYTE PTR [%ESP + 20] *** mov DWORD PTR [%ESP + 8], %EAX mov %EAX, OFFSET G lea %EDX, DWORD PTR [%ESP + 8] mov DWORD PTR [%EAX], %EDX test %CL, %CL je .LBB2 # PC rel: F .LBB1: # T mov DWORD PTR [%ESP], 1 mov DWORD PTR [%ESP + 4], 0 call test *** mov %EAX, DWORD PTR [%ESP + 8] add %ESP, 12 ret .LBB2: # F mov DWORD PTR [%ESP], 123 mov DWORD PTR [%ESP + 4], 1 call test *** mov %EAX, DWORD PTR [%ESP + 8] add %ESP, 12 ret Instead of: test: sub %ESP, 20 mov %EAX, DWORD PTR [%ESP + 24] mov %CL, BYTE PTR [%ESP + 28] *** lea %EDX, DWORD PTR [%ESP + 16] *** mov DWORD PTR [%EDX], %EAX mov %EAX, OFFSET G mov DWORD PTR [%EAX], %EDX test %CL, %CL *** mov DWORD PTR [%ESP + 12], %EDX je .LBB2 # PC rel: F .LBB1: # T mov DWORD PTR [%ESP], 1 mov %EAX, 0 mov DWORD PTR [%ESP + 4], %EAX call test *** mov %EAX, DWORD PTR [%ESP + 12] *** mov %EAX, DWORD PTR [%EAX] add %ESP, 20 ret .LBB2: # F mov DWORD PTR [%ESP], 123 mov %EAX, 1 mov DWORD PTR [%ESP + 4], %EAX call test *** mov %EAX, DWORD PTR [%ESP + 12] *** mov %EAX, DWORD PTR [%EAX] add %ESP, 20 ret git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13557 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-13Substantially improve code generation for address exposed locals (aka fixedChris Lattner
sized allocas in the entry block). Instead of generating code like this: entry: reg1024 = ESP+1234 ... (much later) *reg1024 = 17 Generate code that looks like this: entry: (no code generated) ... (much later) t = ESP+1234 *t = 17 The advantage being that we DRAMATICALLY reduce the register pressure for these silly temporaries (they were all being spilled to the stack, resulting in very silly code). This is actually a manual implementation of rematerialization :) I have a patch to fold the alloca address computation into loads & stores, which will make this much better still, but just getting this right took way too much time and I'm sleepy. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13554 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-13Reduce line length to about 80 chars.Reid Spencer
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13538 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-13Insert spacing between the table and the next section.Misha Brukman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13523 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-13* Use stylesheets for table borders so we factor out the formatting and canMisha Brukman
adjust it much easier. Also changed border to gray to fit into the current color scheme. * Convert < and > to &lt; and &gt;, respectively. * Wrap long lines at 80 cols git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13522 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-12Fix a comment.Brian Gaeke
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13518 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-12Fix a really nasty bug from my changes on Monday to PHIElim. These changesChris Lattner
broke obsequi and a lot of other things. It all boiled down to MBB being overloaded in an inner scope and me confusing it with the one in the outer scope. Ugh! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13517 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-12Break lines at 80 cols; eliminate extra space caused by a single <p> tag on aMisha Brukman
line by itself. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13516 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-12Start NextMBBNumber out at zero.Brian Gaeke
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13515 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-12Add non-const MachineBasicBlock::getParent() accessor method.Brian Gaeke
MBBs start out as #-1. When a MBB is added to a MachineFunction, it gets the next available unique MBB number. If it is removed from a MachineFunction, it goes back to being #-1. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13514 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-12Add a NextMBBNumber field w/ incrementing accessor method, forBrian Gaeke
function-level unique numbering of MBBs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13513 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-12Add a Number field w/ accessor method, for function-level unique numberingBrian Gaeke
of MBBs. Add non-const MachineBasicBlock::getParent() accessor method. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13512 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-12Make the subsubsections stand out a bit moreChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13511 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-12These images have been moved to img/Misha Brukman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13510 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-12Use the images in the img/ directory.Misha Brukman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13509 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-12Finally, switch to a stylesheet that makes the documentation easier on the eyesMisha Brukman
and consistent with the LLVM website. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13508 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-12Centralize images in this dir; add lines.gif from website for consistentMisha Brukman
formatting. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13507 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-12Make file use stylesheets and be HTML-4.01 (Strict)-compliant.Misha Brukman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13506 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-12Made document HTML-4.01 (Strict)-compliant.Misha Brukman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13505 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-12Make file standard-compliant once again.Misha Brukman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13504 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-12Made file comply with HTML-4.01 (Strict)Misha Brukman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13503 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-12Turn the block extractor on by default now that it basically works, ↵Chris Lattner
eliminating the option. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13502 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-12Made file HTML-4.01 (Strict)-compliant.Misha Brukman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13501 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-12Made to be HTML-4.01 (Strict)-compliant.Misha Brukman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13500 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-12Made to be HTML-4.01 (Strict) -compliant.Misha Brukman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13499 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-12Add proper footer since this file is HTML-4.01 compliant.Misha Brukman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13498 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-12Make document HTML-4.01 (Strict) compliant.Misha Brukman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13497 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-12Fix grammar: remove `the' before LLVM.Misha Brukman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13496 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-12* Make the document format follow the stringent purple standards (like the restMisha Brukman
of the documentation) * Do not make the link text be the link itself, use some keywords * Make doc use stylesheets and HTML markup for lists instead of definitions * Shorten page by not making multiple lines per link with description + link of the same name as the target git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13495 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-12Pass boolean constants into function calls more efficiently, generating:Chris Lattner
mov DWORD PTR [%ESP + 4], 1 instead of: mov %EAX, 1 mov DWORD PTR [%ESP + 4], %EAX git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13494 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-12Do not pass in the same argument to the extracted function more than once, andChris Lattner
give the extracted function a more useful name than just foo_code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13493 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-12Check to see if all blocks are extractible first.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13491 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-12Implement support for code extracting basic blocks that have a returnChris Lattner
instruction in them. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13490 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-12Implement splitting of PHI nodes, allowing block extraction of BB's that haveChris Lattner
PHI node entries from multiple outside-the-region blocks. This also fixes extraction of the entry block in a function. Yaay. This has successfully block extracted all (but one) block from the score_move function in obsequi (out of 33). Hrm, I wonder which block the bug is in. :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13489 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-12* Pull some code out into the definedInRegion/definedInCaller methodsChris Lattner
* Add a stub for the severSplitPHINodes which will allow us to bbextract bb's with PHI nodes in them soon. * Remove unused arguments from findInputsOutputs * Dramatically simplify the code in findInputsOutputs. In particular, nothing really cares whether or not a PHI node is using something. * Move moveCodeToFunction to after emitCallAndSwitchStatement as that's the order they get called. * Fix a bug where we would code extract a region that included a call to vastart. Like 'alloca', calls to vastart must stay in the function that they are defined in. * Add some comments. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13482 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-12Generate substantially better code when there are a limited number of exitsChris Lattner
from the extracted region. If the return has 0 or 1 exit blocks, the new function returns void. If it has 2 exits, it returns bool, otherwise it returns a ushort as before. This allows us to use a conditional branch instruction when there are two exit blocks, as often happens during block extraction. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13481 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-12Two minor improvements:Chris Lattner
1. Get rid of the silly abort block. When doing bb extraction, we get one abort block for every block extracted, which is kinda annoying. 2. If the switch ends up having a single destination, turn it into an unconditional branch. I would like to add support for conditional branches, but to do this we will want to have the function return a bool instead of a ushort. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13478 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-12Don't leave dead bytecode.output files around if the optimizer/block ↵Chris Lattner
extractor crashes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13477 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-12This file has been superseded by docs/index.html .Misha Brukman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13476 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-12Implement the final missing bits for block extractor support. Now bugpointChris Lattner
can extract basic blocks up to the limit of the block extractor implementation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13475 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-12Add link to Valgrind.Misha Brukman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13472 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-11Implement basic block extraction for the miscompilation debugger. This ↵Chris Lattner
still needs two things: the FIXME in ExtractBlocks needs to be implemented, and the basic block extractor itself needs to have enough bugs fixed for this to be more or less useful. Until the time that this is generally useful, it is hidden behind the new bugpoint -enable-block-extraction option. I hope to get the FIXME done tonight. Also of note, this patch adds a -extract-bbs option to bugpoint which can be used to debug the block extractor. (hint hint Misha :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13471 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-11A class that is meant to be a base class should have a virtual destructorChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13470 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-11Add a note to make sure the program is memory correctChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13464 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-11Added obsequi.John Criswell
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13462 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-11Use inttypes.h, which exists on all of Linux, Solaris and Darwin.Brian Gaeke
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13461 91177308-0d34-0410-b5e6-96231b3b80d8
2004-05-11Unbreak the build on X86.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13460 91177308-0d34-0410-b5e6-96231b3b80d8