summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
...
* Minor cleanup. EvictionCost ctor was confusing relative to the other costs ↵Andrew Trick2013-11-221-3/+9
| | | | | | floating around in the code. llvm-svn: 195489
* patchpoint: factor SD builder code for live vars. Plain stackmap also ↵Andrew Trick2013-11-221-13/+19
| | | | | | optimizes Constant values now. llvm-svn: 195488
* patchpoint: eliminate hard coded operand indices.Andrew Trick2013-11-221-13/+19
| | | | llvm-svn: 195487
* SelectionDAG: Optimize expansion of vec_type = BITCAST scalar_typeTom Stellard2013-11-222-10/+41
| | | | | | | | | The legalizer can now do this type of expansion for more type combinations without loading and storing to and from the stack. NOTE: This is a candidate for the 3.4 branch. llvm-svn: 195398
* Split SETCC if VSELECT requires splitting too.Tom Stellard2013-11-222-21/+43
| | | | | | | | | | | | | This patch is a rewrite of the original patch commited in r194542. Instead of relying on the type legalizer to do the splitting for us, we now peform the splitting ourselves in the DAG combiner. This is necessary for the case where the vector mask is a legal type after promotion and still wouldn't require splitting. Patch by: Juergen Ributzka NOTE: This is a candidate for the 3.4 branch. llvm-svn: 195397
* In Dwarf 3 (and Dwarf 2) attributes whose value are offsets into aEric Christopher2013-11-214-52/+92
| | | | | | | | | | | | | | | | | | | | | section use the form DW_FORM_data4 whilst in Dwarf 4 and later they use the form DW_FORM_sec_offset. This patch updates the places where such attributes are generated to use the appropriate form depending on the Dwarf version. The DIE entries affected have the following tags: DW_AT_stmt_list, DW_AT_ranges, DW_AT_location, DW_AT_GNU_pubnames, DW_AT_GNU_pubtypes, DW_AT_GNU_addr_base, DW_AT_GNU_ranges_base It also adds a hidden command line option "--dwarf-version=<uint>" to llc which allows the version of Dwarf to be generated to override what is specified in the metadata; this makes it possible to update existing tests to check the debugging information generated for both Dwarf 4 (the default) and Dwarf 3 using the same metadata. Patch (slightly modified) by Keith Walker! llvm-svn: 195391
* Move member variable up to where the rest of non-DWARF5 variables reside.Eric Christopher2013-11-211-3/+3
| | | | llvm-svn: 195380
* Add support for legalizing SETNE/SETEQ by inverting the condition code and ↵Daniel Sanders2013-11-211-14/+54
| | | | | | | | | | | | | | | | | | | | | | | | | the result of the comparison. Summary: LegalizeSetCCCondCode can now legalize SETEQ and SETNE by returning the inverse condition and requesting that the caller invert the result of the condition. The caller of LegalizeSetCCCondCode must handle the inverted CC, and they do so as follows: SETCC, BR_CC: Invert the result of the SETCC with SelectionDAG::getNOT() SELECT_CC: Swap the true/false operands. This is necessary for MSA which lacks an integer SETNE instruction. Reviewers: resistor CC: llvm-commits Differential Revision: http://llvm-reviews.chandlerc.com/D2229 llvm-svn: 195355
* Revert r195317 (and r195333), "Teach ISel not to optimize 'optnone' functions."NAKAMURA Takumi2013-11-211-40/+1
| | | | | | | | It broke, at least, i686 target. It is reproducible with "llc -mtriple=i686-unknown". FYI, it didn't appear to add either "-O0" or "-fast-isel". llvm-svn: 195339
* Teach ISel not to optimize 'optnone' functions.Paul Robinson2013-11-211-1/+40
| | | | | | Based on work by Andrea Di Biagio. llvm-svn: 195317
* Move DebugInfoOffset member near the other data member it helps describe.Eric Christopher2013-11-212-7/+7
| | | | llvm-svn: 195299
* Reflow some documentation and remove whitespace comments. MoveEric Christopher2013-11-211-27/+10
| | | | | | DebugInfoOffset data member up with the rest of the data members. llvm-svn: 195298
* Add more documenation for the lookup tables data members.Eric Christopher2013-11-211-0/+3
| | | | llvm-svn: 195297
* Reorder language in the CompileUnit description and add a comment.Eric Christopher2013-11-212-6/+7
| | | | | | Language may only be a temporary addition. llvm-svn: 195296
* Update comment.Eric Christopher2013-11-211-2/+2
| | | | llvm-svn: 195293
* Constify the DIEs used for pubname and pubtype tables. PropagateEric Christopher2013-11-214-15/+15
| | | | | | through findAttribute etc. llvm-svn: 195290
* MachineBlockPlacement: Strengthen the source order bias when picking an exit ↵Benjamin Kramer2013-11-201-4/+13
| | | | | | | | | | | | | | | | | | | | | | | | | block. We now only allow breaking source order if the exit block frequency is significantly higher than the other exit block. The actual bias is currently under a flag so the best cut-off can be found; the flag defaults to the old behavior. The idea is to get some benchmark coverage over different values for the flag and pick the best one. When we require the new frequency to be at least 20% higher than the old frequency I see a 5% speedup on zlib's deflate when compressing a random file on x86_64/westmere. Hal reported a small speedup on Fhourstones on a BG/Q and no regressions in the test suite. The test case is the full long_match function from zlib's deflate. I was reluctant to add it for previous tweaks to branch probabilities because it's large and potentially fragile, but changed my mind since it's an important use case and more likely to break with all the current work going into the PGO infrastructure. Differential Revision: http://llvm-reviews.chandlerc.com/D2202 llvm-svn: 195265
* DwarfCompileUnit: Initialize DebugInfoOffset.David Blaikie2013-11-201-2/+2
| | | | | | | | | | | | While not strictly necessary (the class has an invariant that "setDebugInfoOffset" is called before "getDebugInfoOffset" - anyone client that actually gets the default zero offset is buggy/broken) this is consistent with the code as originally written and the removal of the initialization was an accident in r195166. Suggested by Manman Ren. llvm-svn: 195263
* CR feedback for r195166: Add comments regarding type unit mapping and type ↵David Blaikie2013-11-202-3/+12
| | | | | | | | units disabling cross-CU sharing. Changes suggested by Manman Ren. llvm-svn: 195262
* Remove polymorphic destruction for DIE. DIEBlocks are owned elsewhereEric Christopher2013-11-201-1/+1
| | | | | | | and not polymorphically deleted and they are the only thing that derive from DIE. llvm-svn: 195183
* Remove capability for polymorphic destruction from LexicalScopeEric Christopher2013-11-202-7/+5
| | | | | | and LexicalScopes, we're not using it. llvm-svn: 195182
* Grammar.Eric Christopher2013-11-201-1/+1
| | | | llvm-svn: 195181
* Formatting, 80-col, trailing whitespace.Eric Christopher2013-11-201-37/+36
| | | | llvm-svn: 195180
* long line correctionJack Carter2013-11-201-1/+2
| | | | llvm-svn: 195179
* Fixed an extra for(typo) in the commentsAditya Nandakumar2013-11-191-1/+1
| | | | llvm-svn: 195171
* long lines and white space correctionJack Carter2013-11-191-29/+34
| | | | llvm-svn: 195170
* DebugInfo: Partial implementation of DWARF type units.David Blaikie2013-11-197-41/+133
| | | | | | | | | | | | | | Emit DW_TAG_type_units into the debug_info section using compile unit headers. This is bogus/unusable by debuggers, but testable and provides more isolated review. Subsequent patches will include support for type unit headers and emission into the debug_types section, as well as comdat grouping the types based on their hash. Also the CompileUnit type will be renamed 'Unit' and relevant portions pulled out into respective CompileUnit and TypeUnit types. llvm-svn: 195166
* DebugInfo: Constify accelerator table handling, and separate type ↵David Blaikie2013-11-195-54/+68
| | | | | | accelarator insertion in preparation for a second use of this code from type units. llvm-svn: 195164
* [DAG] Refactor vector splitting code in SelectionDAG. No functional change ↵Juergen Ributzka2013-11-196-114/+75
| | | | | | | | intended. Reviewed by Tom llvm-svn: 195156
* Support multiple COFF sections with the same name but different COMDAT.Rafael Espindola2013-11-191-1/+2
| | | | | | | | | | | | | | | | | | This is the first step to fix pr17918. It extends the .section directive a bit, inspired by what the ELF one looks like. The problem with using linkonce is that given .section foo .linkonce.... .section foo .linkonce we would already have switched sections when getting to .linkonce. The cleanest solution seems to be to add the comdat information in the .section itself. llvm-svn: 195148
* Obvious pasto survived a couple rounds of cleanup.Andrew Trick2013-11-191-2/+1
| | | | | | Caught by Aaron Ballman. llvm-svn: 195138
* Formatting and 80-col.Eric Christopher2013-11-194-15/+21
| | | | llvm-svn: 195122
* Fix comment.Eric Christopher2013-11-191-1/+2
| | | | llvm-svn: 195121
* Refactor the section emission code to remove duplicates now thatEric Christopher2013-11-191-39/+15
| | | | | | | we can emit various sections in any order. No functional change. llvm-svn: 195120
* Reformat file.Eric Christopher2013-11-191-249/+283
| | | | llvm-svn: 195119
* Fix patchpoint comments.Andrew Trick2013-11-191-1/+2
| | | | llvm-svn: 195103
* Add an abstraction to handle patchpoint operands.Andrew Trick2013-11-191-4/+84
| | | | | | | Hard-coded operand indices were scattered throughout lowering stages and layers. It was super bug prone. llvm-svn: 195093
* [weak vtables] Remove a bunch of weak vtablesJuergen Ributzka2013-11-194-0/+11
| | | | | | | | | | | | This patch removes most of the trivial cases of weak vtables by pinning them to a single object file. The memory leaks in this version have been fixed. Thanks Alexey for pointing them out. Differential Revision: http://llvm-reviews.chandlerc.com/D2068 Reviewed by Andy llvm-svn: 195064
* DwarfDebug: Move trailing else to the same line as prior closing braceDavid Blaikie2013-11-181-4/+2
| | | | llvm-svn: 195060
* DwarfDebug: Remove some more redundant explicit constructions.David Blaikie2013-11-181-4/+3
| | | | llvm-svn: 195059
* DebugInfo: Simplify a few more explicit constructions, underconstrained ↵David Blaikie2013-11-181-21/+18
| | | | | | types, and make DIType(MDNode*) explicit like all the other DI* node ctors. llvm-svn: 195055
* Revert r194865 and r194874.Alexey Samsonov2013-11-184-11/+0
| | | | | | | | | | | | This change is incorrect. If you delete virtual destructor of both a base class and a subclass, then the following code: Base *foo = new Child(); delete foo; will not cause the destructor for members of Child class. As a result, I observe plently of memory leaks. Notable examples I investigated are: ObjectBuffer and ObjectBufferStream, AttributeImpl and StringSAttributeImpl. llvm-svn: 194997
* Remove unnecessary temporary construction.David Blaikie2013-11-171-1/+1
| | | | llvm-svn: 194981
* Remove redundant explicit default initialization.David Blaikie2013-11-171-2/+2
| | | | llvm-svn: 194980
* DwarfCompileUnit: Add type safety to createGlobalVariableDIEDavid Blaikie2013-11-173-5/+4
| | | | llvm-svn: 194979
* Revert "Micro-optimization"Bill Wendling2013-11-171-4/+5
| | | | | | | | This reverts commit f1d9fe9d04ce93f6d5dcebbd2cb6a07414d7a029. This was causing PR17964. We need to use thread data before regular data. llvm-svn: 194960
* DAGCombiner: Partially revert r192795, getNOT was fixed not to create ↵Benjamin Kramer2013-11-171-1/+1
| | | | | | illegal constants. llvm-svn: 194959
* Use more getZExtOrTruncsMatt Arsenault2013-11-172-9/+2
| | | | llvm-svn: 194945
* Use getZExtOrTrunc instead of repeating the same logic.Matt Arsenault2013-11-171-5/+1
| | | | llvm-svn: 194944
* Added a size field to the stack map record to handle subregister spills.Andrew Trick2013-11-173-6/+50
| | | | | | | | Implementing this on bigendian platforms could get strange. I added a target hook, getStackSlotRange, per Jakob's recommendation to make this as explicit as possible. llvm-svn: 194942
OpenPOWER on IntegriCloud