aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Rewrite operand loops to use iterators. This shrinks .o file (at gcc4.0.1 ↵Gabor Greif2008-05-221-4/+5
| | | | | | -O3 x86) substantially (>500 bytes). Reason still unknown. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51423 91177308-0d34-0410-b5e6-96231b3b80d8
* fix an off-by-one error in my previous patch, don't treat the callee as a ↵Chris Lattner2008-05-221-10/+9
| | | | | | incoming arg. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51422 91177308-0d34-0410-b5e6-96231b3b80d8
* Add support for multiple-return values in inline asm. This shouldChris Lattner2008-05-222-34/+61
| | | | | | | | get inline asm working as well as it did previously with the CBE with the new MRV support for inline asm. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51420 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix PR2267, by allowing indirect outputs to be intermixedChris Lattner2008-05-221-1/+4
| | | | | | | | with normal outputs. Testcase here: test/CodeGen/X86/asm-indirect-mem.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51409 91177308-0d34-0410-b5e6-96231b3b80d8
* testcase for PR2267Chris Lattner2008-05-221-0/+11
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51408 91177308-0d34-0410-b5e6-96231b3b80d8
* Free and vaarg are not really volatile.Chris Lattner2008-05-221-9/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51407 91177308-0d34-0410-b5e6-96231b3b80d8
* rewrite the validity checking for memory promotion to be simpler,Chris Lattner2008-05-221-49/+52
| | | | | | | | more aggressive, and more correct. Verify that we only attempt to promote loads and stores. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51406 91177308-0d34-0410-b5e6-96231b3b80d8
* minor editsChris Lattner2008-05-221-7/+9
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51405 91177308-0d34-0410-b5e6-96231b3b80d8
* Use 'continue' to reduce nesting in this loop. No functionality change.Chris Lattner2008-05-221-54/+51
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51399 91177308-0d34-0410-b5e6-96231b3b80d8
* Add a Type::isSingleValueType method. This will be used by codeDan Gohman2008-05-211-1/+11
| | | | | | | | | | that currently uses Type::isFirstClassType and depends on it returning false for struct or array types. This commit doesn't change the behavior of Type::isFirstClassType. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51396 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix PR2343. An *interesting* coalescer bug.Evan Cheng2008-05-212-1/+124
| | | | | | | | | | | | | | | BB1: vr1025 = copy vr1024 .. BB2: vr1024 = op = op vr1025 <loop eventually branch back to BB1> Even though vr1025 is copied from vr1024, it's not safe to coalesced them since live range of vr1025 intersects the def of vr1024. This happens when vr1025 is assigned the value of the previous iteration of vr1024 in the loop. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51394 91177308-0d34-0410-b5e6-96231b3b80d8
* Follow-up to the reverting of r51218. This puts the checks out-of-line. BecauseBill Wendling2008-05-212-9/+15
| | | | | | | | | they aren't in the header file, systems with a <string> header file that isn't 64-bit clean shouldn't warn if #including Path.h and specifying -Wshorten-64-to-32. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51393 91177308-0d34-0410-b5e6-96231b3b80d8
* update a commentGabor Greif2008-05-211-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51390 91177308-0d34-0410-b5e6-96231b3b80d8
* adapt to new APIGabor Greif2008-05-212-2/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51387 91177308-0d34-0410-b5e6-96231b3b80d8
* Rename -no-lazy to -disable-lazy-compilation.Evan Cheng2008-05-211-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51386 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix a couple issues with the JIT and multiple modules:Nate Begeman2008-05-214-10/+82
| | | | | | | | | | | | | | 1. The "JITState" object creates a PassManager with the ModuleProvider that the jit is created with. If the ModuleProvider is removed and deleted, the PassManager is invalid. 2. The Global maps in the JIT were not invalidated with a ModuleProvider was removed. This could lead to a case where the Module would be freed, and a new Module with Globals at the same addresses could return invalid results. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51384 91177308-0d34-0410-b5e6-96231b3b80d8
* resurrect lost tests by renaming them to not end with .trGabor Greif2008-05-2125-0/+0
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51375 91177308-0d34-0410-b5e6-96231b3b80d8
* suppress gcc3.4.6's <no value returned> warningsGabor Greif2008-05-211-0/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51372 91177308-0d34-0410-b5e6-96231b3b80d8
* When LSR is replacing an instruction, callDan Gohman2008-05-211-7/+10
| | | | | | | | | | | | | | | | | | | | | ScalarEvolution::deleteValueFromRecords on it before doing the replaceAllUsesWith, because ScalarEvolution looks at the instruction's users to find SCEV references to the instruction's SCEV object in its internal maps. Move all of LSR's loop-related state clearing after processing the loop and before cleaning up dead PHI nodes. This eliminates all of LSR's SCEV references just before the calls to ScalarEvolution::deleteValueFromRecords so that when ScalarEvolution drops its own SCEV references, the reference counts will reach zero and the SCEVs will be deleted immediately. These changes fix some compiler aborts involving ScalarEvolution holding onto and reusing SCEV objects for instructions that have been deleted. No regression test unfortunately; because the symptoms were due to dangling pointers, reduced testcases ended up being fairly arbitrary. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51359 91177308-0d34-0410-b5e6-96231b3b80d8
* Reverting r51218 because of breakage on PPC32.Bill Wendling2008-05-201-4/+3
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51358 91177308-0d34-0410-b5e6-96231b3b80d8
* Eliminate questionable syntax for stdin redirection. This probably also ↵Gabor Greif2008-05-2093-94/+94
| | | | | | speeds things up a bit. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51357 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix PR2346 by marking vaarg as volatile so that licm doesn't try toChris Lattner2008-05-202-1/+34
| | | | | | | hoist them. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51356 91177308-0d34-0410-b5e6-96231b3b80d8
* Oops, commit the version of this test that actually works.Dan Gohman2008-05-201-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51351 91177308-0d34-0410-b5e6-96231b3b80d8
* Port SelectionDAG's ComputeNumSignBits-using code to instcombine,Dan Gohman2008-05-202-1/+35
| | | | | | | now that instcombine also has ComputeNumSignBits. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51350 91177308-0d34-0410-b5e6-96231b3b80d8
* sabre brings to my attention that the 'tr' suffix is also obsoleteGabor Greif2008-05-2072-72/+72
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51349 91177308-0d34-0410-b5e6-96231b3b80d8
* Port the fix for the select operator from instcombine'sDan Gohman2008-05-201-2/+2
| | | | | | | ComputeNumSignBits to SelectionDAG's ComputeNumSignBits. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51348 91177308-0d34-0410-b5e6-96231b3b80d8
* Code simplification.Dan Gohman2008-05-201-6/+4
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51345 91177308-0d34-0410-b5e6-96231b3b80d8
* Clarify that and/or/xor/sdiv etc all allow vectors.Chris Lattner2008-05-201-77/+186
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51335 91177308-0d34-0410-b5e6-96231b3b80d8
* Clarify copyright transfer when you don't own the copyright ofChris Lattner2008-05-201-2/+9
| | | | | | | the contributed code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51329 91177308-0d34-0410-b5e6-96231b3b80d8
* Rename the last test with .llx extension to .ll, resolve duplicate test by ↵Gabor Greif2008-05-2075-88/+88
| | | | | | renaming to isnan2. Now that no test has llx ending there is no need to search for them from dg.exp too. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51328 91177308-0d34-0410-b5e6-96231b3b80d8
* movsd and movq do not require 16-byte alignment. This fixes vec_set-5.ll on ↵Evan Cheng2008-05-201-4/+10
| | | | | | Linux. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51327 91177308-0d34-0410-b5e6-96231b3b80d8
* "The two generated files in the AsmParser.vcproj are pointing to theChris Lattner2008-05-201-2/+2
| | | | | | | | | | wrong directory, this is the patch to fix it (also attached)." Patch by 'OvermindDL1' git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51323 91177308-0d34-0410-b5e6-96231b3b80d8
* Clarify the testing documentation a bit and solve two HTML validator warnings.Matthijs Kooijman2008-05-201-5/+13
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51313 91177308-0d34-0410-b5e6-96231b3b80d8
* More local spiller complexity!Evan Cheng2008-05-202-0/+84
| | | | | | | If local spiller optimization turns some instruction into an identity copy, it will be removed. If the output register happens to be dead (and source is obviously killed), transfer the kill / dead information to last use / def in the same MBB. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51306 91177308-0d34-0410-b5e6-96231b3b80d8
* Don't spill dead def.Evan Cheng2008-05-202-1/+58
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51305 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix typo.Matthijs Kooijman2008-05-201-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51303 91177308-0d34-0410-b5e6-96231b3b80d8
* Teach instcombine 4 new xforms:Chris Lattner2008-05-203-3/+173
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (add (sext x), cst) --> (sext (add x, cst')) (add (sext x), (sext y)) --> (sext (add int x, y)) (add double (sitofp x), fpcst) --> (sitofp (add int x, intcst)) (add double (sitofp x), (sitofp y)) --> (sitofp (add int x, y)) This generally reduces conversions. For example MiBench/telecomm-gsm gets these simplifications: HACK2: %tmp67.i142.i.i = sext i16 %tmp6.i141.i.i to i32 ; <i32> [#uses=1] %tmp23.i139.i.i = sext i16 %tmp2.i138.i.i to i32 ; <i32> [#uses=1] %tmp8.i143.i.i = add i32 %tmp67.i142.i.i, %tmp23.i139.i.i ; <i32> [#uses=3] HACK2: %tmp67.i121.i.i = sext i16 %tmp6.i120.i.i to i32 ; <i32> [#uses=1] %tmp23.i118.i.i = sext i16 %tmp2.i117.i.i to i32 ; <i32> [#uses=1] %tmp8.i122.i.i = add i32 %tmp67.i121.i.i, %tmp23.i118.i.i ; <i32> [#uses=3] HACK2: %tmp67.i.i190.i = sext i16 %tmp6.i.i189.i to i32 ; <i32> [#uses=1] %tmp23.i.i187.i = sext i16 %tmp2.i.i186.i to i32 ; <i32> [#uses=1] %tmp8.i.i191.i = add i32 %tmp67.i.i190.i, %tmp23.i.i187.i ; <i32> [#uses=3] HACK2: %tmp67.i173.i.i.i = sext i16 %tmp6.i172.i.i.i to i32 ; <i32> [#uses=1] %tmp23.i170.i.i.i = sext i16 %tmp2.i169.i.i.i to i32 ; <i32> [#uses=1] %tmp8.i174.i.i.i = add i32 %tmp67.i173.i.i.i, %tmp23.i170.i.i.i ; <i32> [#uses=3] HACK2: %tmp67.i152.i.i.i = sext i16 %tmp6.i151.i.i.i to i32 ; <i32> [#uses=1] %tmp23.i149.i.i.i = sext i16 %tmp2.i148.i.i.i to i32 ; <i32> [#uses=1] %tmp8.i153.i.i.i = add i32 %tmp67.i152.i.i.i, %tmp23.i149.i.i.i ; <i32> [#uses=3] HACK2: %tmp67.i.i.i.i = sext i16 %tmp6.i.i.i.i to i32 ; <i32> [#uses=1] %tmp23.i.i5.i.i = sext i16 %tmp2.i.i.i.i to i32 ; <i32> [#uses=1] %tmp8.i.i7.i.i = add i32 %tmp67.i.i.i.i, %tmp23.i.i5.i.i ; <i32> [#uses=3] This also fixes a bug in ComputeNumSignBits handling select and makes it more aggressive with and/or. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51302 91177308-0d34-0410-b5e6-96231b3b80d8
* fix two issues Neil noticed, thanks!Chris Lattner2008-05-201-5/+5
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51296 91177308-0d34-0410-b5e6-96231b3b80d8
* Add a bool to isEdgeFeasible that tells it whether to treat unknownChris Lattner2008-05-202-10/+27
| | | | | | | value as undef or untracked. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51295 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix ExecutionEngine's constant code to work properly when structs and arraysDan Gohman2008-05-201-17/+8
| | | | | | | will become first-class types. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51293 91177308-0d34-0410-b5e6-96231b3b80d8
* Refine the fix in r51169 to only apply when the operand val beingDan Gohman2008-05-201-3/+4
| | | | | | | | | replaced is a PHI. This prevents it from inserting uses before defs in the case that it isn't a PHI and it depends on other instructions later in the block. This fixes the 447.dealII regression on x86-64. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51292 91177308-0d34-0410-b5e6-96231b3b80d8
* runOnMachineFunction should set IsPIC because relocation model may have been ↵Evan Cheng2008-05-201-0/+1
| | | | | | changed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51291 91177308-0d34-0410-b5e6-96231b3b80d8
* Make AssociativeOpt static.Dan Gohman2008-05-201-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51290 91177308-0d34-0410-b5e6-96231b3b80d8
* Run vortex-bug as x86-64, which is what the original bug was triggered on.Dan Gohman2008-05-201-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51289 91177308-0d34-0410-b5e6-96231b3b80d8
* Silence a warning about "*/" outside a comment.Steve Naroff2008-05-201-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51287 91177308-0d34-0410-b5e6-96231b3b80d8
* Do not erase induction variable increment if it is used outside the loop.Devang Patel2008-05-192-4/+61
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51280 91177308-0d34-0410-b5e6-96231b3b80d8
* Add a ComputeNumSignBits function for use by instcombine, based on theDan Gohman2008-05-191-5/+149
| | | | | | | code in SelectionDAG. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51279 91177308-0d34-0410-b5e6-96231b3b80d8
* Handle quoted names when constructing $stub's,Dale Johannesen2008-05-196-39/+85
| | | | | | | | $non_lazy_ptr's and $lazy_ptr's. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51277 91177308-0d34-0410-b5e6-96231b3b80d8
* switch to Type::getFPMantissaWidth instead of reinventing it.Chris Lattner2008-05-191-15/+3
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51275 91177308-0d34-0410-b5e6-96231b3b80d8
* add a helper method.Chris Lattner2008-05-191-0/+13
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51274 91177308-0d34-0410-b5e6-96231b3b80d8