aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* Fix the environment block that is passed to the CreateProcess function.Argiris Kirtzidis2008-06-151-1/+28
| | | | | | This bug made llvm-ld unable to function with "-native" option, since the process that was used to call 'gcc' was crashing. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52284 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove a redundant AfterLegalize check. TurnDuncan Sands2008-06-141-4/+5
| | | | | | | | | on some code when !AfterLegalize - but since this whole code section is turned off by an "if (0)" it's not really turning anything on. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52276 91177308-0d34-0410-b5e6-96231b3b80d8
* Change 'while' loop to 'do' loop.Wojciech Matyjewicz2008-06-141-4/+11
| | | | | | | | | | Add a safety measure. It isn't safe to assume in ScalarEvolutionExpander that all loops are in canonical form (but it should be safe for loops that have AddRecs). xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52275 91177308-0d34-0410-b5e6-96231b3b80d8
* add missing atomic intrinsic from gccAndrew Lenharth2008-06-149-28/+34
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52270 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix a case where tailcallelim wouldn't set the changed bit when it made a ↵Chris Lattner2008-06-141-1/+3
| | | | | | change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52267 91177308-0d34-0410-b5e6-96231b3b80d8
* Teach the spiller to commute instructions in order to fold a reload. This ↵Evan Cheng2008-06-132-18/+167
| | | | | | hits 410 times on 444.namd and 122 times on 252.eon. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52266 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove unnecessary target lines.Eli Friedman2008-06-131-2/+0
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52261 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove unnecessary target lines.Eli Friedman2008-06-131-2/+0
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52260 91177308-0d34-0410-b5e6-96231b3b80d8
* Don't skip over instructions other than loads that might read memory Eli Friedman2008-06-132-5/+25
| | | | | | | | when trying to sink stores. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52259 91177308-0d34-0410-b5e6-96231b3b80d8
* Protect ChangeCompareStride from situations in which it is possibleDan Gohman2008-06-132-3/+32
| | | | | | | for it to generate use-before-def IR, such as in this testcase. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52258 91177308-0d34-0410-b5e6-96231b3b80d8
* Make sure SimplifyStoreAtEndOfBlock doesn't mess with loops; the Eli Friedman2008-06-132-2/+28
| | | | | | | | | structure checks are incorrect if the blocks aren't distinct. Fixes PR2435. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52257 91177308-0d34-0410-b5e6-96231b3b80d8
* Disable some DAG combiner optimizations that may beDuncan Sands2008-06-136-67/+145
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | wrong for volatile loads and stores. In fact this is almost all of them! There are three types of problems: (1) it is wrong to change the width of a volatile memory access. These may be used to do memory mapped i/o, in which case a load can have an effect even if the result is not used. Consider loading an i32 but only using the lower 8 bits. It is wrong to change this into a load of an i8, because you are no longer tickling the other three bytes. It is also unwise to make a load/store wider. For example, changing an i16 load into an i32 load is wrong no matter how aligned things are, since the fact of loading an additional 2 bytes can have i/o side-effects. (2) it is wrong to change the number of volatile load/stores: they may be counted by the hardware. (3) it is wrong to change a volatile load/store that requires one memory access into one that requires several. For example on x86-32, you can store a double in one processor operation, but to store an i64 requires two (two i32 stores). In a multi-threaded program you may want to bitcast an i64 to a double and store as a double because that will occur atomically, and be indivisible to other threads. So it would be wrong to convert the store-of-double into a store of an i64, because this will become two i32 stores - no longer atomic. My policy here is to say that the number of processor operations for an illegal operation is undefined. So it is alright to change a store of an i64 (requires at least two stores; but could be validly lowered to memcpy for example) into a store of double (one processor op). In short, if the new store is legal and has the same size then I say that the transform is ok. It would also be possible to say that transforms are always ok if before they were illegal, whether after they are illegal or not, but that's more awkward to do and I doubt it buys us anything much. However this exposed an interesting thing - on x86-32 a store of i64 is considered legal! That is because operations are marked legal by default, regardless of whether the type is legal or not. In some ways this is clever: before type legalization this means that operations on illegal types are considered legal; after type legalization there are no illegal types so now operations are only legal if they really are. But I consider this to be too cunning for mere mortals. Better to do things explicitly by testing AfterLegalize. So I have changed things so that operations with illegal types are considered illegal - indeed they can never map to a machine operation. However this means that the DAG combiner is more conservative because before it was "accidentally" performing transforms where the type was illegal because the operation was nonetheless marked legal. So in a few such places I added a check on AfterLegalize, which I suppose was actually just forgotten before. This causes the DAG combiner to do slightly more than it used to, which resulted in the X86 backend blowing up because it got a slightly surprising node it wasn't expecting, so I tweaked it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52254 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix an error in the two-address example.Dan Gohman2008-06-131-2/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52253 91177308-0d34-0410-b5e6-96231b3b80d8
* Use recently added getTruncateOrZeroExtend method to make the code shorter.Wojciech Matyjewicz2008-06-131-5/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52251 91177308-0d34-0410-b5e6-96231b3b80d8
* XFAIL some tests that became failing due to the extra error reporting ↵Matthijs Kooijman2008-06-137-0/+15
| | | | | | recently. PR's are created for these. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52250 91177308-0d34-0410-b5e6-96231b3b80d8
* Crash less. The i64 restriction in BinomialCoefficient caused some problemsNick Lewycky2008-06-133-24/+78
| | | | | | | | | with code that was expecting different bit widths for different values. Make getTruncateOrZeroExtend a method on ScalarEvolution, and use it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52248 91177308-0d34-0410-b5e6-96231b3b80d8
* fix a minor deviation from the original in my previous commitGabor Greif2008-06-121-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52247 91177308-0d34-0410-b5e6-96231b3b80d8
* op_iterator-ify some loops, low hanging fruit only, there is moreGabor Greif2008-06-121-19/+21
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52246 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix some tests.Evan Cheng2008-06-125-9/+8
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52245 91177308-0d34-0410-b5e6-96231b3b80d8
* Do not speculatively execute an instruction by hoisting it to its ↵Evan Cheng2008-06-123-2/+29
| | | | | | predecessor BB if any of its operands are defined but not used in BB. The transformation will prevent the operand from being sunk into the use block. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52244 91177308-0d34-0410-b5e6-96231b3b80d8
* Revert 52223.Evan Cheng2008-06-122-20/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52243 91177308-0d34-0410-b5e6-96231b3b80d8
* Switch GVN to use ScopedHashTable.Owen Anderson2008-06-121-134/+64
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52242 91177308-0d34-0410-b5e6-96231b3b80d8
* Improve description of -emit-llvm.Dale Johannesen2008-06-121-17/+8
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52238 91177308-0d34-0410-b5e6-96231b3b80d8
* Don't try to compile tests for the ev56 alpha subtarget, which hasn't beenMatthijs Kooijman2008-06-122-3/+0
| | | | | | | supported since r33492. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52237 91177308-0d34-0410-b5e6-96231b3b80d8
* Pass -silence-passes to bugpoint in testcases, this makes two out of three ↵Matthijs Kooijman2008-06-123-3/+3
| | | | | | bugpoint testcases work again. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52236 91177308-0d34-0410-b5e6-96231b3b80d8
* Let bugpoint display generated messages on stderr only if no interpreter wasMatthijs Kooijman2008-06-121-1/+4
| | | | | | | | found, this ensures that messages like "Found gcc" end up on stdout where they belong. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52235 91177308-0d34-0410-b5e6-96231b3b80d8
* Add -silence-passes option to bugpoint. This option suppresses output generatedMatthijs Kooijman2008-06-121-1/+8
| | | | | | | when bugpoint is running passes in a child process. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52234 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix redirection of stderr in sys::Program::ExecuteAndWait. There was logicMatthijs Kooijman2008-06-122-9/+19
| | | | | | | | | | | | | | error that caused it to redirect stderr to stdout too often. This fix is applied identically to the win32 code as well, but that is untested. --Thi line, and those below, will be ignored-- M System/Unix/Program.inc M System/Win32/Program.inc git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52233 91177308-0d34-0410-b5e6-96231b3b80d8
* Make I/O redirection handling in sys::Program a bit more consistent. NoMatthijs Kooijman2008-06-122-24/+18
| | | | | | | | | | | | | | functional changes. Win32 code is untested, but should work fine. In the unix variant, rename RedirectFD to RedirectIO and let that function handle empty and null paths instead of doing that in the caller 3 times. This is the same as win32 already does it. In the win32 variant, use Path::isEmpty() instead of checking the resulting c_str() manually. This is the same as unix already does it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52230 91177308-0d34-0410-b5e6-96231b3b80d8
* If queried as to whether an operation is legalDuncan Sands2008-06-121-13/+17
| | | | | | | | for a particular MVT, return false if the type is illegal rather than barfing. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52229 91177308-0d34-0410-b5e6-96231b3b80d8
* Add line continuation character so the avoid dup loop header test actually runs.Matthijs Kooijman2008-06-121-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52228 91177308-0d34-0410-b5e6-96231b3b80d8
* op_iterator-ify some loops, fix 80col violationsGabor Greif2008-06-111-9/+11
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52226 91177308-0d34-0410-b5e6-96231b3b80d8
* Properly lower DYNAMIC_STACKALLOC - bracket all black magic withAnton Korobeynikov2008-06-111-4/+12
| | | | | | | CALLSEQ_BEGIN & CALLSEQ_END. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52225 91177308-0d34-0410-b5e6-96231b3b80d8
* For now, avoid generating FP select instructions in order to speculatively ↵Evan Cheng2008-06-111-4/+9
| | | | | | | | | execute integer arithmetic instructions. FP selects are more likely to be expensive (even compared to branch on fcmp). This is not a wonderful solution but I rather err on the side of conservative. This fixes the heapsort performance regressions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52224 91177308-0d34-0410-b5e6-96231b3b80d8
* Avoid duplicating loop header which leads to unnatural loops (and just seem ↵Evan Cheng2008-06-112-0/+45
| | | | | | | | | like general badness to me, likely to cause code explosion). Patch by Florian Brandner. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52223 91177308-0d34-0410-b5e6-96231b3b80d8
* Don't send checkpoints to stderr for the vmcore.ml test.Gordon Henriksen2008-06-111-6/+20
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52218 91177308-0d34-0410-b5e6-96231b3b80d8
* Teach instruction combining about the extractvalue. It can succesfully foldMatthijs Kooijman2008-06-112-0/+181
| | | | | | | | | useless insert-extract chains, similar to how it folds them for vectors. Add a testcase for this. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52217 91177308-0d34-0410-b5e6-96231b3b80d8
* remove bogus commentGabor Greif2008-06-111-1/+0
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52216 91177308-0d34-0410-b5e6-96231b3b80d8
* op_iterator-ify dropAllReferencesGabor Greif2008-06-111-5/+4
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52215 91177308-0d34-0410-b5e6-96231b3b80d8
* Sometimes (rarely) nodes held in LegalizeTypesDuncan Sands2008-06-116-72/+110
| | | | | | | | | | | | | | | | | | | | | | | | | | | | maps can be deleted. This happens when RAUW replaces a node N with another equivalent node E, deleting the first node. Solve this by adding (N, E) to ReplacedNodes, which is already used to remap nodes to replacements. This means that deleted nodes are being allowed in maps, which can be delicate: the memory may be reused for a new node which might get confused with the old deleted node pointer hanging around in the maps, so detect this and flush out maps if it occurs (ExpungeNode). The expunging operation is expensive, however it never occurs during a llvm-gcc bootstrap or anywhere in the nightly testsuite. It occurs three times in "make check": Alpha/illegal-element-type.ll, PowerPC/illegal-element-type.ll and X86/mmx-shift.ll. If expunging proves to be too expensive then there are other more complicated ways of solving the problem. In the normal case this patch adds the overhead of a few more map lookups, which is hopefully negligable. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52214 91177308-0d34-0410-b5e6-96231b3b80d8
* Better test for availability of __gnu_cxx::stdio_filebuf.Gordon Henriksen2008-06-111-1/+7
| | | | | | | If this doesn't work, I'll write a configure test. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52213 91177308-0d34-0410-b5e6-96231b3b80d8
* Clarify a comment.Matthijs Kooijman2008-06-111-3/+3
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52212 91177308-0d34-0410-b5e6-96231b3b80d8
* op_iterator-ify loopsGabor Greif2008-06-101-13/+16
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52191 91177308-0d34-0410-b5e6-96231b3b80d8
* Small doc fix.Duncan Sands2008-06-101-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52190 91177308-0d34-0410-b5e6-96231b3b80d8
* Use %link not %llvmgxx (which includes -c) to do the link.Dale Johannesen2008-06-101-1/+1
| | | | | | | | | The test still fails because an expected symbol is not present, and I don't see why it should be. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52188 91177308-0d34-0410-b5e6-96231b3b80d8
* Suppress ObjC FE warnings, which cause the test to fail.Dale Johannesen2008-06-101-1/+1
| | | | | | | | Warnings are legitimate. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52187 91177308-0d34-0410-b5e6-96231b3b80d8
* Add -w to inhibit gcc warnings, which causes theDale Johannesen2008-06-108-8/+8
| | | | | | | | | harness to fail the tests. The warning all appear legitimate. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52186 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix parameter spelling: sse not sse1Dale Johannesen2008-06-101-2/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52185 91177308-0d34-0410-b5e6-96231b3b80d8
* Ignore stderr for some more tests that expect warnings there.Matthijs Kooijman2008-06-102-2/+4
| | | | | | | This fixes 2 testcases. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52184 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix some more quoting issues in RUN lines, this time regarding unintendedMatthijs Kooijman2008-06-104-8/+8
| | | | | | | | | variable expansions involving the $ character. This fixes 4 tests that were not running properly before. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52183 91177308-0d34-0410-b5e6-96231b3b80d8