- Nov 30, 2013
-
-
Andrew Trick authored
llvm-svn: 195969
-
- Nov 29, 2013
-
-
Lang Hames authored
constraints on their frame offsets. llvm-svn: 195950
-
Lang Hames authored
llvm-svn: 195945
-
Lang Hames authored
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
-
- Nov 28, 2013
-
-
Rafael Espindola authored
llvm-svn: 195931
-
David Blaikie authored
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
-
- Nov 27, 2013
-
-
Lang Hames authored
cross-reference debug output with encoded stack-maps, and to create stackmap test-cases. llvm-svn: 195874
-
Rafael Espindola authored
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
-
Rafael Espindola authored
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
-
- Nov 26, 2013
-
-
Eric Christopher authored
llvm-svn: 195790
-
David Blaikie authored
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
-
Timur Iskhodzhanov authored
llvm-svn: 195763
-
Andrew Trick authored
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
-
David Blaikie authored
r195698 moved the type unit checking up into getOrCreateTypeDIE so remove the redundant check and fold the functions back together again. llvm-svn: 195700
-
David Blaikie authored
llvm-svn: 195698
-
David Blaikie authored
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
-
- Nov 25, 2013
-
-
Bill Wendling authored
I'm not sure how it was checking for the wrong values... PR18023. llvm-svn: 195670
-
Amara Emerson authored
llvm-svn: 195636
-
Daniel Sanders authored
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
-
Bill Wendling authored
A volatile load should block us from trying to coalesce stores. PR18023 llvm-svn: 195599
-
Chandler Carruth authored
useful when analyzing parts of zlib's behavior here. llvm-svn: 195588
-
- Nov 23, 2013
-
-
David Blaikie authored
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
-
Eric Christopher authored
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
-
Eric Christopher authored
llvm-svn: 195522
-
- Nov 22, 2013
-
-
Paul Robinson authored
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
-
Andrew Trick authored
llvm-svn: 195490
-
Andrew Trick authored
Minor cleanup. EvictionCost ctor was confusing relative to the other costs floating around in the code. llvm-svn: 195489
-
Andrew Trick authored
patchpoint: factor SD builder code for live vars. Plain stackmap also optimizes Constant values now. llvm-svn: 195488
-
Andrew Trick authored
llvm-svn: 195487
-
Tom Stellard authored
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
-
Tom Stellard authored
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
-
Eric Christopher authored
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
-
- Nov 21, 2013
-
-
Eric Christopher authored
llvm-svn: 195380
-
Daniel Sanders authored
Add support for legalizing SETNE/SETEQ by inverting the condition code and 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
-
NAKAMURA Takumi authored
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
-
Paul Robinson authored
Based on work by Andrea Di Biagio. llvm-svn: 195317
-
Eric Christopher authored
llvm-svn: 195299
-
Eric Christopher authored
DebugInfoOffset data member up with the rest of the data members. llvm-svn: 195298
-
Eric Christopher authored
llvm-svn: 195297
-
Eric Christopher authored
Language may only be a temporary addition. llvm-svn: 195296
-