aboutsummaryrefslogtreecommitdiffstats
path: root/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
...
* Reapply r81171 with a fix: don't try to use i64 when itDan Gohman2009-09-111-4/+19
| | | | | | | isn't legal. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81492 91177308-0d34-0410-b5e6-96231b3b80d8
* Don't swap the operands of a subtraction when trying to create aBob Wilson2009-09-101-1/+1
| | | | | | | post-decrement load/store. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81464 91177308-0d34-0410-b5e6-96231b3b80d8
* Exit early if exception handling isn't supported.Bill Wendling2009-09-101-13/+13
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81454 91177308-0d34-0410-b5e6-96231b3b80d8
* Comment and whitespace cleanups. No intentional functionality change.Bill Wendling2009-09-101-27/+21
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81436 91177308-0d34-0410-b5e6-96231b3b80d8
* Revert part of my r81424 patch. I removed what looked like superfluous paddingBill Wendling2009-09-101-23/+37
| | | | | | | | | from the exception tables. However, Duncan explained why it's a can of worms to do it the GCC way. I went back to doing it the LLVM way and added Duncan's explanation so that I don't do this again in the future. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81434 91177308-0d34-0410-b5e6-96231b3b80d8
* Don't hardcode the TType format size. In fact, rework the code so that it's moreBill Wendling2009-09-101-49/+49
| | | | | | | | | like what GCC outputs. The mysterious code to insert padding wasn't in GCC at all. I modified the TType base offset code to calculate the offset like GCC does, though. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81424 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove the "#if 0" that Noone loved. It wasn't really necessary, because theBill Wendling2009-09-101-27/+20
| | | | | | | | | code within it was the same inside and out. There's still a problem of the TypeInfoSize should be the size of the TType format encoding (at least that's what GCC thinks it should be). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81417 91177308-0d34-0410-b5e6-96231b3b80d8
* Revert r81171 which was causing pr4927.Bob Wilson2009-09-101-17/+4
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81415 91177308-0d34-0410-b5e6-96231b3b80d8
* Pull check for SJLJ EH into a boolean and use that.Bill Wendling2009-09-101-7/+10
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81409 91177308-0d34-0410-b5e6-96231b3b80d8
* Use the SizeOfEncodedValue function instead of magic variables for theBill Wendling2009-09-101-4/+3
| | | | | | | sizeof(DW_EH_PE_udata4). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81408 91177308-0d34-0410-b5e6-96231b3b80d8
* Add helpful comment.Bill Wendling2009-09-102-0/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81406 91177308-0d34-0410-b5e6-96231b3b80d8
* Believe it or not, this is a simplification. :-)Bill Wendling2009-09-092-37/+86
| | | | | | | | | | | | | | Basically, this patch is working towards removing the hard-coded values that are output for the CIE. In particular, the CIE augmentation and the CIE augmentation size. Both of these should be calculated. In the process, I was able to make a bunch of code simpler. The encodings for the personality, LSDA, and FDE in the CIE are still not correct. They should be generated either from target-specific callbacks (blech!) or grokked from first-principles. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81404 91177308-0d34-0410-b5e6-96231b3b80d8
* remove DebugLoc from MCInst and eliminate "Comment printing" fromChris Lattner2009-09-092-32/+11
| | | | | | | | | | | | | | | the MCInst path of the asmprinter. Instead, pull comment printing out of the autogenerated asmprinter into each target that uses the autogenerated asmprinter. This causes code duplication into each target, but in a way that will be easier to clean up later when more asmprinter stuff is commonized into the base AsmPrinter class. This also fixes an xcore strangeness where it inserted two tabs before every instruction. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81396 91177308-0d34-0410-b5e6-96231b3b80d8
* Use the EOL that takes the encoding and translates it into DWARF-English.Bill Wendling2009-09-092-11/+21
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81382 91177308-0d34-0410-b5e6-96231b3b80d8
* Early exit from function.Bill Wendling2009-09-091-14/+13
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81381 91177308-0d34-0410-b5e6-96231b3b80d8
* Small amount of code clean-up: Don't use ".size()" when not necessary.Bill Wendling2009-09-091-5/+7
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81380 91177308-0d34-0410-b5e6-96231b3b80d8
* Removed static qualifier from a few index related methods. These methods may ↵Lang Hames2009-09-092-25/+23
| | | | | | require a LiveIntervals instance in future. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81374 91177308-0d34-0410-b5e6-96231b3b80d8
* Preserve ProfileInfo.Andreas Neustifter2009-09-091-1/+9
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81360 91177308-0d34-0410-b5e6-96231b3b80d8
* When widening a vector load, use the correct chain. This fixes PR4891.Dan Gohman2009-09-091-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81343 91177308-0d34-0410-b5e6-96231b3b80d8
* change selectiondag to add the sign extended versions of immediate operandsChris Lattner2009-09-081-1/+1
| | | | | | | | | to instructions instead of zero extended ones. This makes the asmprinter print signed values more consistently. This apparently only really affects the X86 backend. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81265 91177308-0d34-0410-b5e6-96231b3b80d8
* When emitting a label for a PostCall safe point, the machineNicolas Geoffray2009-09-081-6/+11
| | | | | | | | | | instruction to insert before can be end(). getDebugLoc on end() returns an invalid value, therefore use the debug loc of the call instruction, and give it to InsertLabel. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81207 91177308-0d34-0410-b5e6-96231b3b80d8
* When remat'ing and destination virtual register has a sub-register index. ↵Evan Cheng2009-09-081-0/+16
| | | | | | Make sure the sub-register class matches the register class of the remat'ed instruction definition register class. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81204 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix an abort on a store of an empty struct member. getValue returnsDan Gohman2009-09-081-0/+4
| | | | | | | | null in the case of an empty struct, so don't try to call getNumValues on it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81180 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix a thinko: When lowering fneg with xor, bitcast the operandsDan Gohman2009-09-071-4/+17
| | | | | | | | | | from floating-point to integer first, and bitcast the result back to floating-point. Previously, this test was passing by falling back to SelectionDAG lowering. The resulting code isn't as nice, but it's correct and CodeGen now stays on the fast path. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81171 91177308-0d34-0410-b5e6-96231b3b80d8
* Simplify. Testing shows that this is not equivalent to BBI = CR.CaseBB + 1.Duncan Sands2009-09-061-4/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81124 91177308-0d34-0410-b5e6-96231b3b80d8
* Mark more constants unsigned, as warned about by icc (#68).Duncan Sands2009-09-061-1/+1
| | | | | | | Patch by Erick Tryzelaar. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81116 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove some not-really-used variables, as warnedDuncan Sands2009-09-064-14/+2
| | | | | | | about by icc (#593, partial). Patch by Erick Tryzelaar. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81115 91177308-0d34-0410-b5e6-96231b3b80d8
* It's a bool, so treat it like one. Fixes a MSVC warning.Benjamin Kramer2009-09-061-4/+4
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81112 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove some unused variables and methods warned about byDuncan Sands2009-09-062-5/+1
| | | | | | | icc (#177, partial). Patch by Erick Tryzelaar. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81106 91177308-0d34-0410-b5e6-96231b3b80d8
* Detect VLAs.Devang Patel2009-09-051-1/+5
| | | | | | | Do not use DenseMap operator[] because it inserts new entry if lookup fails. Use find() to check an entry in a DenseMap first. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81058 91177308-0d34-0410-b5e6-96231b3b80d8
* Ignore malformed global variable debug info.Devang Patel2009-09-041-0/+4
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81055 91177308-0d34-0410-b5e6-96231b3b80d8
* Replaces uses of unsigned for indexes in LiveInterval and VNInfo withLang Hames2009-09-0410-447/+517
| | | | | | | | | a new class, MachineInstrIndex, which hides arithmetic details from most clients. This is a step towards allowing the register allocator to update/insert code during allocation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81040 91177308-0d34-0410-b5e6-96231b3b80d8
* Use delete[] to match new[] (found by valgrind).Duncan Sands2009-09-041-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80997 91177308-0d34-0410-b5e6-96231b3b80d8
* Run branch folding if if-converter make some transformations.Evan Cheng2009-09-043-84/+155
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80994 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix comment for consistency sake.Evan Cheng2009-09-041-1/+1
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80993 91177308-0d34-0410-b5e6-96231b3b80d8
* If there's a calling convention attach it to the rewind function call.Eric Christopher2009-09-041-1/+3
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80976 91177308-0d34-0410-b5e6-96231b3b80d8
* Funky indentation.Evan Cheng2009-09-031-1/+2
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80971 91177308-0d34-0410-b5e6-96231b3b80d8
* LLVM currently represents floating-point negation as -0.0 - x. FixDan Gohman2009-09-031-0/+23
| | | | | | | | FastISel to recognize this pattern and emit a floating-point negation using xor. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80963 91177308-0d34-0410-b5e6-96231b3b80d8
* Don't crash when target has no itineraries.David Goodwin2009-09-031-54/+58
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80962 91177308-0d34-0410-b5e6-96231b3b80d8
* Create our own block initializer for kill fixups as the scheduling one ↵David Goodwin2009-09-031-33/+63
| | | | | | wasn't doing the right thing. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80958 91177308-0d34-0410-b5e6-96231b3b80d8
* Overhaul the TwoAddressInstructionPass to simplify the logic, especiallyBob Wilson2009-09-031-159/+210
| | | | | | | | | | | | | | | | | | for the complicated case where one register is tied to multiple destinations. This avoids the extra scan of instruction operands that was introduced by my recent change. I also pulled some code out into a separate TryInstructionTransform method, added more comments, and renamed some variables. Besides all those changes, this takes care of a FIXME in the code regarding an assumption about there being a single tied use of a register when converting to a 3-address form. I'm not aware of cases where that assumption is violated, but the code now only attempts to transform an instruction, either by commuting its operands or by converting to a 3-address form, for the simple case where there is a single pair of tied operands. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80945 91177308-0d34-0410-b5e6-96231b3b80d8
* Recognize more opportunities to use SSE min and max instructions,Dan Gohman2009-09-031-0/+13
| | | | | | | swapping the operands if necessary. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80940 91177308-0d34-0410-b5e6-96231b3b80d8
* Fixed a test that ensures the LocalRewriter does not attempt toLang Hames2009-09-032-2/+2
| | | | | | | | | | | avoid reloads by reusing clobbered registers. This was causing issues in 256.bzip2 when compiled with PIC for a while (starting at r78217), though the problem has since been masked. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80872 91177308-0d34-0410-b5e6-96231b3b80d8
* Rearrange code to eliminate redundancy and avoid gotos.Bob Wilson2009-09-021-64/+40
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80798 91177308-0d34-0410-b5e6-96231b3b80d8
* Retype from unsigned to CallingConv::ID accordingly. Approved by Bob Wilson.Sandeep Patel2009-09-022-3/+4
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80773 91177308-0d34-0410-b5e6-96231b3b80d8
* Avoid calling removeVirtualRegisterKilled which iterates over the operandsBob Wilson2009-09-011-1/+2
| | | | | | | to find the kill, since we already have the operand. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80736 91177308-0d34-0410-b5e6-96231b3b80d8
* Refactor some code into separate functions. No functional changes.Bob Wilson2009-09-011-52/+82
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80733 91177308-0d34-0410-b5e6-96231b3b80d8
* Move use of LV inside condition that guards for null LV.Bob Wilson2009-09-011-5/+5
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80731 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove Offset from ExternalSybmol MachineOperands, this is unused (and at ↵Daniel Dunbar2009-09-011-1/+1
| | | | | | least partly unsupported, in X86 encoding at least). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80726 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix ELF Writter related memory leaksBruno Cardoso Lopes2009-09-011-7/+18
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80717 91177308-0d34-0410-b5e6-96231b3b80d8