summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Make DebugLoc independent of DwarfWriter.Argyrios Kyrtzidis2009-04-301-13/+9
| | | | | | | | -Replace DebugLocTuple's Source ID with CompileUnit's GlobalVariable* -Remove DwarfWriter::getOrCreateSourceID -Make necessary changes for the above (fix callsites, etc.) llvm-svn: 70520
* Instead of passing in an unsigned value for the optimization level, use an enum,Bill Wendling2009-04-291-5/+5
| | | | | | | which better identifies what the optimization is doing. And is more flexible for future uses. llvm-svn: 70440
* Second attempt:Bill Wendling2009-04-291-5/+5
| | | | | | | | | | | | Massive check in. This changes the "-fast" flag to "-O#" in llc. If you want to use the old behavior, the flag is -O0. This change allows for finer-grained control over which optimizations are run at different -O levels. Most of this work was pretty mechanical. The majority of the fixes came from verifying that a "fast" variable wasn't used anymore. The JIT still uses a "Fast" flag. I'll change the JIT with a follow-up patch. llvm-svn: 70343
* r70270 isn't ready yet. Back this out. Sorry for the noise.Bill Wendling2009-04-281-5/+5
| | | | llvm-svn: 70275
* Massive check in. This changes the "-fast" flag to "-O#" in llc. If you want toBill Wendling2009-04-281-5/+5
| | | | | | | | | | | use the old behavior, the flag is -O0. This change allows for finer-grained control over which optimizations are run at different -O levels. Most of this work was pretty mechanical. The majority of the fixes came from verifying that a "fast" variable wasn't used anymore. The JIT still uses a "Fast" flag. I'm not 100% sure if it's necessary to change it there... llvm-svn: 70270
* Do not treat beginning of inlined scope as beginning of normal function ↵Devang Patel2009-04-161-2/+10
| | | | | | | | | | | | | | | | | | | | | scope if the location info is missing. Insetad of doing ... if (inlined_subroutine && known_location) DW_TAG_inline_subroutine else DW_TAG_subprogram do if (inlined_subroutine) { if (known_location) DW_TAG_inline_subroutine } else { DW_TAG_subprogram } llvm-svn: 69300
* Record line number at the beginning of a func.start.Devang Patel2009-04-161-1/+1
| | | | | | This line was accidently lost yesterday. llvm-svn: 69286
* If location where the function was inlined is not know then do not emit ↵Devang Patel2009-04-161-5/+11
| | | | | | debug info describing inlinied region. llvm-svn: 69252
* Add DISubprogram is not null check.Devang Patel2009-04-151-2/+4
| | | | | | This fixes test/CodeGen//2009-01-21-invalid-debug-info.m test case. llvm-svn: 69210
* Construct and emit DW_TAG_inlined_subroutine DIEs for inlined subroutine ↵Devang Patel2009-04-151-14/+28
| | | | | | scopes (only in FastISel mode). llvm-svn: 69116
* Right now, Debugging information to encode scopes (DW_TAG_lexical_block) ↵Devang Patel2009-04-131-5/+5
| | | | | | | | relies on DBG_LABEL. Unfortunately this intefers with the quality of optimized code. This patch updates dwarf writer to encode scoping information in DWARF only in FastISel mode. llvm-svn: 68973
* Reapply 68847.Devang Patel2009-04-131-3/+15
| | | | | | Now debug_inlined section is covered by TAI->doesDwarfUsesInlineInfoSection(), which is false by default. llvm-svn: 68964
* make UpdateValueMap handle the possiblity that we could beChris Lattner2009-04-121-1/+1
| | | | | | copying into the right register, avoiding a copy. llvm-svn: 68889
* optimize FastISel::UpdateValueMap to avoid duplicate map lookups,Chris Lattner2009-04-121-7/+12
| | | | | | and make it return the assigned register. llvm-svn: 68888
* Revert r68847. It breaks the build on non-Darwin targets, with this messageDan Gohman2009-04-111-15/+3
| | | | | | | from the assembler: Error: unknown pseudo-op: `.debug_inlined' llvm-svn: 68863
* Keep track of inlined functions and their locations. This information is ↵Devang Patel2009-04-111-3/+15
| | | | | | | | collected when nested llvm.dbg.func.start intrinsics are seen. (Right now, inliner removes nested llvm.dbg.func.start intrinisics during inlining.) Create debug_inlined dwarf section using these information. This info is used by gdb, at least on Darwin, to enable better experience debugging inlined functions. See DwarfWriter.cpp for more information on structure of debug_inlined section. llvm-svn: 68847
* Silence unused variable warning.Devang Patel2009-04-091-1/+1
| | | | llvm-svn: 68735
* llvm.dbg.func_start also defines beginning of function scope.Devang Patel2009-04-091-7/+3
| | | | llvm-svn: 68727
* Don't attempt to handle aggregate argument values in FastISel; letDan Gohman2009-04-071-1/+5
| | | | | | SelectionDAG do those. This fixes PR3955. llvm-svn: 68546
* Improve FastISel's handling of truncates to i1, and implementDan Gohman2009-03-131-10/+18
| | | | | | | | ptrtoint and inttoptr in X86FastISel. These casts aren't always handled in the generic FastISel code because X86 sometimes needs custom code to do truncation and zero-extension. llvm-svn: 66988
* Fix FastISel's assumption that i1 values are always zero-extendedDan Gohman2009-03-131-1/+14
| | | | | | | | | by inserting explicit zero extensions where necessary. Included is a testcase where SelectionDAG produces a virtual register holding an i1 value which FastISel previously mistakenly assumed to be zero-extended. llvm-svn: 66941
* Oops...I committed too much.Bill Wendling2009-03-131-4/+6
| | | | llvm-svn: 66867
* Temporarily XFAIL this test.Bill Wendling2009-03-131-6/+4
| | | | llvm-svn: 66866
* Pass in a std::string when getting the names of debugging things. This cuts downBill Wendling2009-03-091-4/+6
| | | | | | on the number of times a std::string is created and copied. llvm-svn: 66396
* Clean up dwarf writer, part 1. This eliminated the horrible recursive ↵Evan Cheng2009-02-251-4/+4
| | | | | | | | getGlobalVariablesUsing and replaced it something readable. It eliminated use of slow UniqueVector and replaced it with StringMap, SmallVector, and DenseMap, etc. It also fixed some non-deterministic behavior. This is a very minor compile time win. llvm-svn: 65438
* Overhaul my earlier submission due to feedback. It's a large patch, but most ofBill Wendling2009-02-241-1/+0
| | | | | | | | | | | | them are generic changes. - Use the "fast" flag that's already being passed into the asm printers instead of shoving it into the DwarfWriter. - Instead of calling "MI->getParent()->getParent()" for every MI, set the machine function when calling "runOnMachineFunction" in the asm printers. llvm-svn: 65379
* - Use the "Fast" flag instead of "OptimizeForSize" to determine whether to emitBill Wendling2009-02-241-0/+1
| | | | | | | | | | a DBG_LABEL or not. We want to fall back to the original way of emitting debug info when we're in -O0/-fast mode. - Add plumbing in to pass the "Fast" flag to places that need it. - XFAIL DebugInfo/deaddebuglabel.ll. This is finding 11 labels instead of 8. I need to investigate still. llvm-svn: 65367
* Revert this. It was breaking stuff.Bill Wendling2009-02-131-6/+45
| | | | llvm-svn: 64428
* Turn off the old way of handling debug information in the code generator. UseBill Wendling2009-02-131-45/+6
| | | | | | | the new way, where all of the information is passed on SDNodes and machine instructions. llvm-svn: 64427
* make fast isel fall back to selectiondags for VLA llvm.declare intrinsics.Chris Lattner2009-02-121-2/+2
| | | | llvm-svn: 64379
* Create DebugLoc information in FastISel. Several temporary methods wereBill Wendling2009-02-031-25/+32
| | | | | | | created. Specifically, those BuildMIs which use "DebugLoc::getUnknownLoc()". I'll remove them soon. llvm-svn: 63584
* Eliminate a couple of fields from TargetRegisterClass: SubRegClasses and ↵Evan Cheng2009-01-221-3/+3
| | | | | | SuperRegClasses. These are not necessary. Also eliminate getSubRegisterRegClass and getSuperRegisterRegClass. These are slow and their results can change if register file names change. Just use TargetLowering::getRegClassFor() to get the right TargetRegisterClass instead. llvm-svn: 62762
* Verify debug info.Devang Patel2009-01-191-5/+5
| | | | llvm-svn: 62545
* Validate dbg_* intrinsics before lowering them.Devang Patel2009-01-151-5/+5
| | | | llvm-svn: 62286
* Use DebugInfo interface to lower dbg_* intrinsics.Devang Patel2009-01-131-20/+25
| | | | llvm-svn: 62127
* Rename getABITypeSize to getTypePaddedSize, asDuncan Sands2009-01-121-2/+2
| | | | | | suggested by Chris. llvm-svn: 62099
* Factor out the code for sign-extending/truncating gep indicesDan Gohman2008-12-081-23/+32
| | | | | | | | | and use it in x86 address mode folding. Also, make getRegForValue return 0 for illegal types even if it has a ValueMap for them, because Argument values are put in the ValueMap. This fixes PR3181. llvm-svn: 60696
* Eliminate some unused variable compile time warnings.Evan Cheng2008-11-241-0/+2
| | | | llvm-svn: 59952
* Emit label for llvm.dbg.func.start of the inlined function.Devang Patel2008-11-061-3/+8
| | | | llvm-svn: 58814
* FastISel support for exception-handling constructs.Dan Gohman2008-10-141-1/+69
| | | | | | | | | - Move the EH landing-pad code and adjust it so that it works with FastISel as well as with SDISel. - Add FastISel support for @llvm.eh.exception and @llvm.eh.selector. llvm-svn: 57539
* calls can be supported.Chris Lattner2008-10-131-9/+9
| | | | llvm-svn: 57428
* Add a "loses information" return value to APFloat::convertDale Johannesen2008-10-091-4/+8
| | | | | | | and APFloat::convertToInteger. Restore return value to IEEE754. Adjust all users accordingly. llvm-svn: 57329
* Avoid emitting redundant materializations of integer constantsDan Gohman2008-10-071-3/+4
| | | | | | | for things like null pointers, which at this level aren't different from regular integer constants. llvm-svn: 57265
* Implement fast-isel support for zero-extending from i1.Dan Gohman2008-10-031-1/+12
| | | | | | | It turns out that this is a fairly common operation, and it's easy enough to handle. llvm-svn: 56990
* Optimize conditional branches in X86FastISel. This replacesDan Gohman2008-10-021-10/+18
| | | | | | | | | | | sequences like this: sete %al testb %al, %al jne LBB11_1 with this: je LBB11_1 llvm-svn: 56969
* Move the primary fast-isel top-level comments to FastISel.cpp, whereDan Gohman2008-09-301-0/+28
| | | | | | they'll be a little more visible. Also, update and reword them a bit. llvm-svn: 56877
* Support for i1 XOR in FastISel. It is actually safe becauseDan Gohman2008-09-251-2/+3
| | | | | | i1 operands are assumed to already by zero-extended. llvm-svn: 56615
* FastISel support for debug info.Dan Gohman2008-09-251-0/+94
| | | | llvm-svn: 56610
* Fix a recent fast-isel coverage regression - don't bail out beforeDan Gohman2008-09-251-3/+4
| | | | | | giving the target a chance to materialize constants. llvm-svn: 56605
* Arrange for FastISel code to have access to the MachineModuleInfoDan Gohman2008-09-231-1/+3
| | | | | | object. This will be needed to support debug info. llvm-svn: 56508
OpenPOWER on IntegriCloud