summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
* Check for shared landing pads when assigning call site values. Invokes whichJim Grosbach2009-08-201-20/+34
| | | | | | share a landing pad should also use the same call site value. llvm-svn: 79501
* Add missing forward declaration.David Greene2009-08-191-0/+1
| | | | llvm-svn: 79481
* Add missing includes.David Greene2009-08-191-0/+1
| | | | llvm-svn: 79480
* Add missing includes.David Greene2009-08-191-0/+1
| | | | llvm-svn: 79479
* Add missing includes.David Greene2009-08-191-0/+1
| | | | llvm-svn: 79478
* Add missing includes.David Greene2009-08-191-0/+1
| | | | llvm-svn: 79476
* Add missing includes.David Greene2009-08-191-0/+1
| | | | llvm-svn: 79475
* Add missing includes.David Greene2009-08-191-0/+1
| | | | llvm-svn: 79474
* Add missing includes.David Greene2009-08-191-0/+1
| | | | llvm-svn: 79473
* Switch to SmallString::str from SmallString::c_str, and removeDaniel Dunbar2009-08-191-2/+2
| | | | | | SmallString::c_str. llvm-svn: 79456
* Add an x86 peep that narrows TEST instructions to forms that useDan Gohman2009-08-191-0/+11
| | | | | | | a smaller encoding. These kinds of patterns are very frequent in sqlite3, for example. llvm-svn: 79439
* Use the schedule itinerary operand use/def cycle information to adjust ↵David Goodwin2009-08-193-7/+75
| | | | | | dependence edge latency for post-RA scheduling. llvm-svn: 79425
* PR4737: Fix a nasty bug in load narrowing with non-power-of-two types.Eli Friedman2009-08-191-1/+2
| | | | llvm-svn: 79415
* switch asmprinter to emit alignments through OutStreamer.Chris Lattner2009-08-191-8/+5
| | | | llvm-svn: 79406
* eliminate AsmPrinter::SwitchToSection and just have clientsChris Lattner2009-08-194-61/+72
| | | | | | talk to the MCStreamer directly instead. llvm-svn: 79405
* Added an option to have the PBQP allocator attempt coalescing during allocation.Lang Hames2009-08-191-1/+10
| | | | llvm-svn: 79397
* Be tidy and use a break to exit from a switch block rather thanDan Gohman2009-08-181-0/+1
| | | | | | just falling through the end. llvm-svn: 79383
* Legalize the shift amount operand of SRL_PARTS, SHL_PARTS, andDan Gohman2009-08-181-0/+7
| | | | | | SRA_PARTS, as is done for SRL, SHL, and SRA. llvm-svn: 79380
* Changes DOUT references in the PBQP allocator to use DEBUG(errs() ...)Lang Hames2009-08-181-11/+7
| | | | llvm-svn: 79378
* Simplify RegScavenger::FindUnusedReg.Jakob Stoklund Olesen2009-08-181-30/+6
| | | | | | | | | - Drop the Candidates argument and fix all callers. Now that RegScavenger tracks available registers accurately, there is no need to restict the search. - Make sure that no aliases of the found register are in use. This was a potential bug. llvm-svn: 79369
* Make various changes suggested by Chris.David Greene2009-08-181-36/+48
| | | | llvm-svn: 79358
* fix COFF targets (mingw/cygwin) to provide ehframe and LSDA sectionsChris Lattner2009-08-181-8/+2
| | | | llvm-svn: 79346
* Make tail merging handle blocks with repeated predecessors correctly, andDan Gohman2009-08-181-25/+4
| | | | | | | | | | | | | | | | | | | | remove RemoveDuplicateSuccessor, as it is no longer necessary, and because it breaks assumptions made in MachineBasicBlock::isOnlyReachableByFallthrough. Convert test/CodeGen/X86/omit-label.ll to FileCheck and add a testcase for PR4732. test/CodeGen/Thumb2/thumb2-ifcvt2.ll sees a diff with this commit due to it being bugpoint-reduced to the point where it doesn't matter what the condition for the branch is. Add some more interesting code to test/CodeGen/X86/2009-08-06-branchfolder-crash.ll, which is the testcase that originally motivated the RemoveDuplicateSuccessor code, to help verify that the original problem isn't being re-broken. llvm-svn: 79338
* Make AsmStreamer maintain a notion of the current section, pushing it up ↵Chris Lattner2009-08-181-15/+10
| | | | | | | | | | | | from the MCAsmStreamer. Based on this, eliminate the current section from AsmPrinter. While I'm at it, clean up the last of the horrible "switch to null section" stuff and add an assert. This change is in preparation for completely eliminating asmprinter::switchtosection. llvm-svn: 79324
* add a horrible hack to the dwarf printer. It looks like mingw is not specifyingChris Lattner2009-08-181-3/+9
| | | | | | | | an EHFrame section, so we just emit ehframe data into a random section. This is clearly bad. llvm-svn: 79323
* fix another bozo bugChris Lattner2009-08-181-2/+2
| | | | llvm-svn: 79313
* fix accidentally inverted conditional and add comment.Chris Lattner2009-08-181-1/+4
| | | | llvm-svn: 79312
* turn this conditional into something humans might actuallyChris Lattner2009-08-181-8/+25
| | | | | | be able to understand ;-) llvm-svn: 79311
* cleanups per review. Mostly cosmetic, plus use SmallVector in place of ↵Jim Grosbach2009-08-171-24/+16
| | | | | | std::vector. llvm-svn: 79287
* Remove a bit more cruft from the sjlj moving to a backend pass.Jim Grosbach2009-08-173-15/+0
| | | | llvm-svn: 79272
* Update CMakeLists.Benjamin Kramer2009-08-171-0/+1
| | | | llvm-svn: 79264
* Fix build warning.Daniel Dunbar2009-08-171-1/+1
| | | | llvm-svn: 79262
* Move the sjlj exception handling conversions to a back-end pass where theyJim Grosbach2009-08-174-34/+538
| | | | | | | | | more properly belong. This allows removing the front-end conditionalized SJLJ code, and cleans up the generated IR considerably. All of the infrastructure code (calling _Unwind_SjLj_Register/Unregister, etc) is added by the SjLjEHPrepare pass. llvm-svn: 79250
* Extend the instruction itinerary model to include the ability to indicate ↵David Goodwin2009-08-171-5/+6
| | | | | | the def and use cycle for each operand. This additional information is optional, so existing itineraries do not need to be changed. llvm-svn: 79247
* the MinPad argument to PadToColumn only really makes sense to be 1,Chris Lattner2009-08-171-42/+42
| | | | | | just remove the argument and replace it with 1. llvm-svn: 79246
* change AsmPrinter to switch sections using AsmStreamer instead ofChris Lattner2009-08-171-9/+4
| | | | | | | | | doing it directly. This requires const'izing a bunch of stuff that took sections, but this seems like the right semantic thing to do: emitting a label to a section shouldn't mutate the MCSection object itself, for example. llvm-svn: 79227
* give MCAsmStreamer a TargetAsmInfo.Chris Lattner2009-08-171-1/+1
| | | | llvm-svn: 79222
* Replace RegScavenger::DistanceMap with a simpler local algorithm.Jakob Stoklund Olesen2009-08-161-68/+47
| | | | llvm-svn: 79195
* Clean up the public interface of RegScavenger.Jakob Stoklund Olesen2009-08-161-19/+0
| | | | | | Remove unused methods and make others private. llvm-svn: 79194
* Be more clever about regclasses in ScheduleDAGSDNodes::EmitCopyFromReg.Jakob Stoklund Olesen2009-08-161-5/+5
| | | | | | | | If two uses of a CopyFromReg want different regclasses, first try a common sub-class, then fall back on the copy emitted in AddRegisterOperand. There is no need for an assert here. The cross-class joiner usually cleans up nicely. llvm-svn: 79193
* Needs to check whether unaligned load / store of i64 is legal here.Evan Cheng2009-08-151-4/+3
| | | | llvm-svn: 79150
* Remove <iostream>.Bill Wendling2009-08-151-20/+17
| | | | llvm-svn: 79146
* Unbreak build. Evan, please make sure my changes are correct.Benjamin Kramer2009-08-153-6/+5
| | | | llvm-svn: 79133
* Refine EarlyClobber assert in register scavenger.Jakob Stoklund Olesen2009-08-151-1/+1
| | | | | | | | | | | | | | It is legal for an inline asm operand to use an earlyclobber register if the use operand is tied to the earlyclobber operand. The issue is discussed here: http://gcc.gnu.org/ml/gcc/1999-04n/msg00431.html We should perhaps let only the machine code verifier worry about these finer details. EarlyClobber operands are not really interesting to the scavenger. This fixes PR4528 for the third time. llvm-svn: 79122
* Don't setCalleeSavedInfoValid() until spills are interted.Jakob Stoklund Olesen2009-08-151-2/+2
| | | | | | | | | | In a naked function, the flag is never set and getPristineRegs() returns an empty list. That means naked functions are able to clobber callee saved registers, but that is the whole point of naked functions. This fixes PR4716. llvm-svn: 79096
* Allow double defs in the machine code verifier after the addPreRegAlloc passes.Jakob Stoklund Olesen2009-08-151-1/+1
| | | | llvm-svn: 79095
* Update LocalRewriter::DistanceMap when inserting stack loads.Jakob Stoklund Olesen2009-08-151-0/+3
| | | | | | | | In the included test case, a stack load was not included in DistanceMap. That caused TransferDeadness to ignore the instruction, leading to a scavenger assert. llvm-svn: 79090
* 80 col violations.Evan Cheng2009-08-151-12/+12
| | | | llvm-svn: 79087
* Simplify this code to not depend as much on CurMBB.Dan Gohman2009-08-151-16/+15
| | | | llvm-svn: 79068
* Do not completely skip subrange info for a zero sized array.Devang Patel2009-08-141-6/+5
| | | | llvm-svn: 79044
OpenPOWER on IntegriCloud