summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
...
* Fix a miscompile in 186.crafty for Thumb2 that was exposed by Evan'sBob Wilson2010-10-021-10/+14
| | | | | | | | | | | scheduling change in svn 115121. The CriticalAntiDepBreaker had bad liveness information. It was calculating the KillIndices for one scheduling region in a basic block, rescheduling that region so the KillIndices were no longer valid, and then using those wrong KillIndices to make decisions for the next scheduling region. I've not been able to reduce a small testcase for this. Radar 8502534. llvm-svn: 115400
* Drop the use of LiveInterval::iterator and the LiveRange class inJakob Stoklund Olesen2010-10-011-14/+7
| | | | | | RemoveCopyByCommutingDef. llvm-svn: 115386
* When RemoveCopyByCommutingDef is creating additional identity copies, just useJakob Stoklund Olesen2010-10-012-47/+10
| | | | | | | | | | | LiveInterval::MergeValueNumberInto instead of trying to extend LiveRanges and getting it wrong. This fixed PR8249 where a valno with a multi-segment live range was defined by an identity copy created by RemoveCopyByCommutingDef. Some of the live segments disappeared. llvm-svn: 115385
* Pretty up the debug output during RemoveCopyByCommutingDef.Jakob Stoklund Olesen2010-10-011-19/+7
| | | | llvm-svn: 115384
* Add support to let FE mark explict methods as explict in debug info.Devang Patel2010-10-011-0/+2
| | | | llvm-svn: 115378
* Nuke trailing whitespace.Jim Grosbach2010-10-011-28/+28
| | | | llvm-svn: 115377
* Thread the determination of branch prediction hit rates back through the ↵Owen Anderson2010-10-011-23/+39
| | | | | | | | | if-conversion heuristic APIs. For now, stick with a constant estimate of 90% (branch predictors are good!), but we might find that we want to provide more nuanced estimates in the future. llvm-svn: 115364
* Fix code gen crash reported in PR 8235. We still lose debug info for the ↵Devang Patel2010-10-011-0/+3
| | | | | | unused argument here. This is a known limitation recorded debuginfo-tests/trunk/dbg-declare2.ll function 'f6' test case. llvm-svn: 115323
* typoGabor Greif2010-10-011-1/+1
| | | | llvm-svn: 115310
* fix typoChris Lattner2010-10-011-1/+1
| | | | llvm-svn: 115300
* fix rdar://8494845 + PR8244 - a miscompile exposed by my patch in r101350Chris Lattner2010-10-011-0/+9
| | | | llvm-svn: 115294
* Massive rewrite of MMX: Dale Johannesen2010-09-301-0/+60
| | | | | | | | | | | | | | | | | | | The x86_mmx type is used for MMX intrinsics, parameters and return values where these use MMX registers, and is also supported in load, store, and bitcast. Only the above operations generate MMX instructions, and optimizations do not operate on or produce MMX intrinsics. MMX-sized vectors <2 x i32> etc. are lowered to XMM or split into smaller pieces. Optimizations may occur on these forms and the result casted back to x86_mmx, provided the result feeds into a previous existing x86_mmx operation. The point of all this is prevent optimizations from introducing MMX operations, which is unsafe due to the EMMS problem. llvm-svn: 115243
* When isel is emitting instructions for an x86 target without CMOV, the CFG isJakob Stoklund Olesen2010-09-303-1/+24
| | | | | | | | | | | | | | | | | edited during emission. If the basic block ends in a switch that gets lowered to a jump table, any phis at the default edge were getting updated wrong. The jump table data structure keeps a pointer to the header blocks that wasn't getting updated after the MBB is split. This bug was exposed on 32-bit Linux when disabling critical edge splitting in codegen prepare. The fix is to uipdate stale MBB pointers whenever a block is split during emission. llvm-svn: 115191
* Let FE mark a variable as artificial variable.Devang Patel2010-09-291-0/+2
| | | | llvm-svn: 115102
* Model Cortex-a9 load to SUB, RSB, ADD, ADC, SBC, RSC, CMN, MVN, or CMPEvan Cheng2010-09-292-37/+34
| | | | | | pipeline forwarding path. llvm-svn: 115098
* Silence msvc warnings.Benjamin Kramer2010-09-291-6/+6
| | | | llvm-svn: 115097
* Add support to let FE encode method access specifier.Devang Patel2010-09-291-1/+12
| | | | llvm-svn: 115089
* UnreachableBlockElim could incorrectly return false when it had not modified ↵Owen Anderson2010-09-291-1/+4
| | | | | | the CFG, but HAD modified some PHI nodes. Fixes PR8174. llvm-svn: 115083
* Assign DW_ACCESS_public accessibility attribute to members by default.Devang Patel2010-09-291-1/+10
| | | | llvm-svn: 115067
* Revert r114997. It was causing a failure on darwin10-selfhost.Bill Wendling2010-09-281-5/+13
| | | | llvm-svn: 115002
* Removed a bunch of unnecessary target_link_libraries.Oscar Fuentes2010-09-283-5/+0
| | | | llvm-svn: 114999
* Fix a FIXME. _foo.eh symbols are currently always exported so that the linkerBill Wendling2010-09-281-13/+5
| | | | | | knows about them. This is not necessary on 10.6 and later. llvm-svn: 114997
* Give the if-converter access to MachineLoopInfo, and use it to generate ↵Owen Anderson2010-09-281-16/+50
| | | | | | | | plausible branch prediction estimates. llvm-svn: 114981
* Part one of switching to using a more sane heuristic for determining ↵Owen Anderson2010-09-281-4/+4
| | | | | | | | | | | if-conversion profitability. Rather than having arbitrary cutoffs, actually try to cost model the conversion. For now, the constants are tuned to more or less match our existing behavior, but these will be changed to reflect realistic values as this work proceeds. llvm-svn: 114973
* Provide an interface to let FEs anchor debug info for types.Devang Patel2010-09-281-0/+4
| | | | llvm-svn: 114969
* Remove dead argument.Devang Patel2010-09-272-5/+4
| | | | llvm-svn: 114920
* Don't try to make a vector of x86mmx; this won't work,Dale Johannesen2010-09-271-2/+4
| | | | | | and asserts. llvm-svn: 114843
* the latest assembler that runs on powerpc 10.4 machines doesn'tChris Lattner2010-09-272-2/+24
| | | | | | | support aligned comm. Detect when compiling for 10.4 and don't emit an alignment for comm. THis will hopefully fix PR8198. llvm-svn: 114817
* Fixed some tests to avoid LiveIntervals::getInstructionFromIndex(..) ↵Lang Hames2010-09-263-9/+8
| | | | | | overhead where possible. Thanks to Jakob for the suggestions. llvm-svn: 114798
* Avoid using VNInfo::getCopy as much as possible. I want to get rid of it.Jakob Stoklund Olesen2010-09-251-10/+6
| | | | llvm-svn: 114794
* Removed VNInfo::isDefAccurate(). Def "accuracy" can be checked by testing ↵Lang Hames2010-09-2510-76/+75
| | | | | | whether LiveIntervals::getInstructionFromIndex(def) returns NULL. llvm-svn: 114791
* Remove SlotIndex::PHI_BIT. It is no longer used by anything.Jakob Stoklund Olesen2010-09-253-11/+4
| | | | llvm-svn: 114779
* Remove the only use of SlotIndex::isPHI. This bit is not being set consistentlyJakob Stoklund Olesen2010-09-251-1/+1
| | | | | | and it will be removed shortly. llvm-svn: 114778
* Terminator gaps were unused. Might as well delete them.Jakob Stoklund Olesen2010-09-241-16/+1
| | | | llvm-svn: 114776
* Fix for test/CodeGen/PowerPC/2008-10-17-AsmMatchingOperands.ll crash.John Thompson2010-09-241-0/+20
| | | | llvm-svn: 114767
* Get rid of pop_macro warnings on MSVC.Michael J. Spencer2010-09-242-6/+10
| | | | llvm-svn: 114750
* Attach a DebugLoc to a GC point in order to get precise information in the ↵Nicolas Geoffray2010-09-241-6/+8
| | | | | | JIT of a GC point. llvm-svn: 114736
* Revert 114634 for now since buildbot claim it broke Clang self-hosting. I ↵Evan Cheng2010-09-231-4/+6
| | | | | | doubt it but it's possible it's exposing another bug somewhere. llvm-svn: 114681
* Fix VS 2010 build.Oscar Fuentes2010-09-231-4/+4
| | | | | | Patch by Nathan Jeffords! llvm-svn: 114661
* Follow up to r114630. Do not optimize away unconditional branch following a ↵Evan Cheng2010-09-231-6/+4
| | | | | | conditional one. llvm-svn: 114634
* Don't sink insert_subreg, subreg_to_reg, reg_sequence. They are meant to beEvan Cheng2010-09-231-1/+10
| | | | | | close to their sources to facilitate coalescing. llvm-svn: 114631
* SDISel should not optimize a unconditional branch following a conditional branchEvan Cheng2010-09-231-4/+5
| | | | | | | | | | | | when the unconditional branch destination is the fallthrough block. The canonicalization makes it easier to allow optimizations on DAGs to invert conditional branches. The branch folding pass (and AnalyzeBranch) will clean up the unnecessary unconditional branches later. This is one of the patches leading up to disabling codegen prepare critical edge splitting. llvm-svn: 114630
* Moved the PBQP allocator class out of the header and back in to the cpp file ↵Lang Hames2010-09-231-60/+190
| | | | | | | | | | | | | | to hide the gory details. Allocator instances can now be created by calling createPBQPRegisterAllocator. Tidied up use of CoalescerPair as per Jakob's suggestions. Made the new PBQPBuilder based construction process the default. The internal construction process remains in-place and available via -pbqp-builder=false for now. It will be removed shortly if the new process doesn't cause any regressions. llvm-svn: 114626
* A select between a constant and zero, when fed by a bit test, can be efficientlyOwen Anderson2010-09-221-0/+29
| | | | | | | lowered using a series of shifts. Fixes <rdar://problem/8285015>. llvm-svn: 114599
* Use DW_OP_fbreg when offset is based on frame register.Devang Patel2010-09-221-0/+10
| | | | llvm-svn: 114585
* Build the complement interval dupli after the split intervals instead ofJakob Stoklund Olesen2010-09-212-35/+145
| | | | | | | | | | | | | creating it before and subtracting split ranges. This way, the SSA update code in LiveIntervalMap can properly create and use new phi values in dupli. Now it is possible to create split regions where a value escapes along two different CFG edges, creating phi values outside the split region. This is a work in progress and probably quite broken. llvm-svn: 114492
* Fixed pr20314-2.c failure, added E, F, p constraint letters.John Thompson2010-09-211-6/+17
| | | | llvm-svn: 114490
* Rework passing parent pointers into complexpatterns, I forgotChris Lattner2010-09-211-27/+35
| | | | | | | | that complex patterns are matched after the entire pattern has a structural match, therefore the NodeStack isn't in a useful state when the actual call to the matcher happens. llvm-svn: 114489
* If only user of a vreg is an copy instruction to export copy of vreg out of ↵Devang Patel2010-09-211-0/+23
| | | | | | | | | current basic block then insert DBG_VALUE so that debug value of the variable is also transfered to new vreg. Testcase is in r114476. This fixes radar 8412415. llvm-svn: 114478
* correct this logic.Chris Lattner2010-09-211-2/+2
| | | | llvm-svn: 114474
OpenPOWER on IntegriCloud