summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
...
* DwarfDebug: Unconditionalize trivial asm commentsDavid Blaikie2013-12-041-10/+5
| | | | | | | | While we still have a few (~4) non-trivial comments with string concatenation, etc that should remain conditionalized, these trivial literal comments can be simplified. llvm-svn: 196416
* DwarfDebug: Reduce code duplication for sec offset emissionDavid Blaikie2013-12-042-56/+32
| | | | llvm-svn: 196414
* Couple of small logical cleanups to use !empty rather than otherEric Christopher2013-12-041-2/+2
| | | | | | checks. No functional change. llvm-svn: 196412
* Use move and stack allocation for RangeSpanLists. As a result makeEric Christopher2013-12-043-21/+17
| | | | | | | a few things more const as well because we're now using const references to refer to iterators. llvm-svn: 196398
* DebugInfo: Remove unused start/end labels for the debug_abbrevs sectionDavid Blaikie2013-12-042-8/+4
| | | | | | | | | | Since we always emit only one abbrevation section (shared by all the compilation units in this module) there's no need for a separate label at the start of each one (and we weren't using the CU ID anyway, so there really was only one label). Use the section label instead and drop the wholely unused debug_abbrev_end label. llvm-svn: 196394
* DebugInfo: Avoid recreating matching labels in disparate places.David Blaikie2013-12-041-20/+16
| | | | | | | | Instead, reuse the same MCSymbol - this should make the code easier to follow by avoiding hard to trace dependencies between different bits of code. llvm-svn: 196392
* Update comment grammar and contents.Eric Christopher2013-12-031-1/+4
| | | | llvm-svn: 196323
* Fixed various whitespace/spelling/80+ issues.Michael Gottesman2013-12-031-9/+16
| | | | llvm-svn: 196310
* Fix a typo in a commentTimur Iskhodzhanov2013-12-031-1/+1
| | | | llvm-svn: 196304
* Reland 196270 "Generalize debug info / EH emission in AsmPrinter"Timur Iskhodzhanov2013-12-0310-80/+169
| | | | | | Addressing the existense AMDGPUAsmPrinter and other subclasses of AsmPrinter llvm-svn: 196288
* Revert r196270, "Generalize debug info / EH emission in AsmPrinter"NAKAMURA Takumi2013-12-036-152/+73
| | | | | | It broke CodeGen/R600 tests with +Asserts. llvm-svn: 196272
* Generalize debug info / EH emission in AsmPrinterTimur Iskhodzhanov2013-12-036-73/+152
| | | | llvm-svn: 196270
* Added MachineBlockFrequencyInfo::view for displaying the block frequency ↵Michael Gottesman2013-12-031-0/+107
| | | | | | | | | | | | propagation graph via graphviz. This is useful for debugging issues in the BlockFrequency implementation since one can easily visualize where probability mass and other errors occur in the propagation. This is the MI version of r194654. llvm-svn: 196183
* Refactor the handling of lexical block and inline scope rangesEric Christopher2013-12-032-36/+30
| | | | | | into a single function. No functional change. llvm-svn: 196181
* Update doxygen tags.Eric Christopher2013-12-031-2/+2
| | | | llvm-svn: 196180
* Reorder member function declarations to match source order.Eric Christopher2013-12-031-3/+4
| | | | llvm-svn: 196179
* Make ranges and range lists be a discrete entity that can be locatedEric Christopher2013-12-034-52/+135
| | | | | | | and emitted per function and CU. Begins coalescing ranges as a first class entity through debug info. No functional change. llvm-svn: 196178
* Convert two char* that are only ever used as booleans to bool.Rafael Espindola2013-12-021-2/+2
| | | | llvm-svn: 196168
* Remove unnecessary/commented-out header inclusion.David Blaikie2013-12-021-1/+0
| | | | | | Review feedback from Eric Christopher on r196140 llvm-svn: 196160
* DebugInfo: Rename generic unit references to "TheU" instead of TheCU now ↵David Blaikie2013-12-023-65/+65
| | | | | | | | that they might be type units instead of compile units. CR feedback from Eric Christopher on r196139. llvm-svn: 196159
* DebugInfo: Rename DwarfCompileUnit.* to DwarfUnit.* to match their contents.David Blaikie2013-12-025-4/+4
| | | | llvm-svn: 196140
* DebugInfo: Refactor CompileUnit into a Unit baseclass and ↵David Blaikie2013-12-024-181/+183
| | | | | | | | | | CompileUnit/TypeUnit derived classes. Header/cpp file rename to follow immediately - just splitting out the commits for ease of review/reading to demonstrate that the renaming changes are entirely mechanical. llvm-svn: 196139
* DebugInfo: Type Units: Propagate the correct DW_AT_language into type units.David Blaikie2013-12-023-7/+7
| | | | llvm-svn: 196130
* Move getSymbolWithGlobalValueBase to TargetLoweringObjectFile.Rafael Espindola2013-12-022-17/+5
| | | | | | This allows it to be used in TargetLoweringObjectFileImpl.cpp. llvm-svn: 196117
* Reverse the order of eviction checks for possible compile time savings. No ↵Andrew Trick2013-11-291-3/+3
| | | | | | functionality. llvm-svn: 195969
* Teach LocalStackSlotAllocation that stackmaps/patchpoints don't have rangeLang Hames2013-11-291-3/+5
| | | | | | constraints on their frame offsets. llvm-svn: 195950
* Remove unused variable from r195944.Lang Hames2013-11-291-1/+0
| | | | llvm-svn: 195945
* Refactor a lot of patchpoint/stackmap related code to simplify and make itLang Hames2013-11-294-15/+210
| | | | | | | | | | | | | | | | | | | | | | target independent. Most of the x86 specific stackmap/patchpoint handling was necessitated by the use of the native address-mode format for frame index operands. PEI has now been modified to treat stackmap/patchpoint similarly to DEBUG_INFO, allowing us to use a simple, platform independent register/offset pair for frame indexes on stackmap/patchpoints. Notes: - Folding is now platform independent and automatically supported. - Emiting patchpoints with direct memory references now just involves calling the TargetLoweringBase::emitPatchPoint utility method from the target's XXXTargetLowering::EmitInstrWithCustomInserter method. (See X86TargetLowering for an example). - No more ugly platform-specific operand parsers. This patch shouldn't change the generated output for X86. llvm-svn: 195944
* Remove an always true parameter.Rafael Espindola2013-11-281-6/+2
| | | | llvm-svn: 195931
* DebugInfo: Do not include variables only referenced by templates in aranges.David Blaikie2013-11-271-3/+6
| | | | | | | | ARanges included even extern variables referenced by pointer non-type template parameters even though that variable isn't part of this compilation unit. llvm-svn: 195895
* Show stackmap entry encodings in stackmap debug logs. This makes it easier toLang Hames2013-11-271-23/+27
| | | | | | | cross-reference debug output with encoded stack-maps, and to create stackmap test-cases. llvm-svn: 195874
* Use the same tls section name as msvc.Rafael Espindola2013-11-271-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We currently error in clang with: "error: thread-local storage is unsupported for the current target", but we can start to get the llvm level ready. When compiling template<typename T> struct foo { static __declspec(thread) int bar; }; template<typename T> __declspec(therad) int foo<T>::bar; template struct foo<int>; msvc produces SECTION HEADER #3 .tls$ name 0 physical address 0 virtual address 4 size of raw data 12F file pointer to raw data (0000012F to 00000132) 0 file pointer to relocation table 0 file pointer to line numbers 0 number of relocations 0 number of line numbers C0301040 flags Initialized Data COMDAT; sym= "public: static int foo<int>::bar" (?bar@?$foo@H@@2HA) 4 byte align Read Write gcc produces a ".data$__emutls_v.<symbol>" for the testcase with __declspec(thread) replaced with thread_local. llvm-svn: 195849
* Use simple section names for COMDAT sections on COFF.Rafael Espindola2013-11-271-21/+17
| | | | | | | | | | | | With this patch we use simple names for COMDAT sections (like .text or .bss). This matches the MSVC behavior. When merging it is the COMDAT symbol that is used to decide if two sections should be merged, so there is no point in building a fancy name. This survived a bootstrap on mingw32. llvm-svn: 195798
* 80-column fixups.Eric Christopher2013-11-263-3/+7
| | | | llvm-svn: 195790
* DwarfDebug: Include type units in accelerator tables.David Blaikie2013-11-262-25/+31
| | | | | | | Since type units aren't in the CUMap, use the DwarfUnits list to iterate over units for tasks such as accelerator table building. llvm-svn: 195776
* Rename DwarfException methods so the new names are consistent with ↵Timur Iskhodzhanov2013-11-266-50/+50
| | | | | | DwarfDebug and the style guide llvm-svn: 195763
* StackMap: Implement support for DirectMemRefOp.Andrew Trick2013-11-261-0/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | A Direct stack map location records the address of frame index. This address is itself the value that the runtime requested. This differs from IndirectMemRefOp locations, which refer to a stack locations from which the requested values must be loaded. Direct locations can directly communicate the address if an alloca, while IndirectMemRefOp handle register spills. For example: entry: %a = alloca i64... llvm.experimental.stackmap(i32 <ID>, i32 <shadowBytes>, i64* %a) Since both the alloca and stackmap intrinsic are in the entry block, and the intrinsic takes the address of the alloca, the runtime can assume that LLVM will not substitute alloca with any intervening value. This must be verified by the runtime by checking that the stack map's location is a Direct location type. The runtime can then determine the alloca's relative location on the stack immediately after compilation, or at any time thereafter. This differs from Register and Indirect locations, because the runtime can only read the values in those locations when execution reaches the instruction address of the stack map. llvm-svn: 195712
* DebugInfo: Remove CompileUnit::constructTypeDIEImpl now that it's just a ↵David Blaikie2013-11-262-15/+2
| | | | | | | | | simple wrapper again. r195698 moved the type unit checking up into getOrCreateTypeDIE so remove the redundant check and fold the functions back together again. llvm-svn: 195700
* DebugInfo: Avoid emitting pubtype entries for type DIEs that just indirect ↵David Blaikie2013-11-261-37/+43
| | | | | | to a type unit. llvm-svn: 195698
* DebugInfo: Pubtypes: Coelesce pubtype registration with accelerator type ↵David Blaikie2013-11-263-49/+13
| | | | | | | | | | registration. It might be possible to eventually use one data structure, but I haven't looked at the exact criteria used for accelerator tables and pubtypes to see if there's good reason for the differences between the two or not. llvm-svn: 195696
* Unrevert r195599 with testcase fix.Bill Wendling2013-11-251-0/+5
| | | | | | | I'm not sure how it was checking for the wrong values... PR18023. llvm-svn: 195670
* Revert r195599 as it broke the builds.Amara Emerson2013-11-251-5/+0
| | | | llvm-svn: 195636
* Fixed tryFoldToZero() for vector types that need expansion.Daniel Sanders2013-11-252-15/+4
| | | | | | | | | | | | | | | | | | | | | | Summary: Moved the requirement for SelectionDAG::getConstant() to return legally typed nodes slightly earlier. There were two optional DAGCombine passes that were missed out and were required to produce type-legal DAGs. Simplified a code-path in tryFoldToZero() to use SelectionDAG::getConstant(). This provides support for both promoted and expanded vector types whereas the previous code only supported promoted vector types. Fixes a "Type for zero vector elements is not legal" assertion detected by an llvm-stress generated test. Reviewers: resistor CC: llvm-commits Differential Revision: http://llvm-reviews.chandlerc.com/D2251 llvm-svn: 195635
* Don't look past volatile loads.Bill Wendling2013-11-251-0/+5
| | | | | | | A volatile load should block us from trying to coalesce stores. PR18023 llvm-svn: 195599
* Output a bit more information in the debug printing for MBP. This wasChandler Carruth2013-11-251-3/+4
| | | | | | useful when analyzing parts of zlib's behavior here. llvm-svn: 195588
* DwarfDebug: Move ownership of CompileUnits into DwarfUnitsDavid Blaikie2013-11-232-13/+8
| | | | | | | | | | This avoids the need for an extra list of SkeletonCUs and associated cleanup while staging things to be cleaner for further type unit improvements. Also hopefully fixes a memory leak introduced in r195166. llvm-svn: 195536
* Refactor DW_AT_ranges handling to use labels for ranges rather thanEric Christopher2013-11-231-23/+24
| | | | | | | | | a non-relocatable number offset. One fixme to make the ranges as discrete data structures and have range lists explicitly represented rather than as a list of symbols. llvm-svn: 195523
* Reformat const for readability.Eric Christopher2013-11-231-6/+4
| | | | llvm-svn: 195522
* Teach ISel not to optimize 'optnone' functions (revised).Paul Robinson2013-11-221-0/+44
| | | | | | | | | | | | | Improvements over r195317: - Set/restore EnableFastISel flag instead of just running FastISel within SelectAllBasicBlocks; the flag is checked in various places, and FastISel won't run properly if those places don't do the right thing. - Test looks for normal ISel versus FastISel behavior, and not something more subtle that doesn't work everywhere. Based on work by Andrea Di Biagio. llvm-svn: 195491
* DEBUG shouldEvict decisionsAndrew Trick2013-11-222-3/+7
| | | | llvm-svn: 195490
OpenPOWER on IntegriCloud