summaryrefslogtreecommitdiffstats
path: root/llvm/include
Commit message (Collapse)AuthorAgeFilesLines
* Remove redundant argument. NFC.Rafael Espindola2015-12-181-1/+1
| | | | llvm-svn: 256031
* Drop materializeAllPermanently.Rafael Espindola2015-12-181-5/+2
| | | | | | | | This inlines materializeAll into the only caller (materializeAllPermanently) and renames materializeAllPermanently to just materializeAll. llvm-svn: 256024
* Drop support for dematerializing.Rafael Espindola2015-12-183-29/+0
| | | | | | | It was only used on lib/Linker and the use was "dead" since it was used on a function the IRMover had just moved. llvm-svn: 256019
* Revert "Improve DWARFDebugFrame::parse to also handle __eh_frame."Pete Cooper2015-12-184-17/+5
| | | | | | | | This reverts commit r256008. Its breaking multiple buildbots, although works for me locally. llvm-svn: 256013
* Rename variables to reflect linker split (NFC)Teresa Johnson2015-12-181-1/+1
| | | | | | | | Renamed variables to be more reflective of whether they are an instance of Linker, IRLinker or ModuleLinker. Also fix a stale comment. llvm-svn: 256011
* Convert Arg, ArgList, and Option to dump() to dbgs() rather than errs().Eric Christopher2015-12-183-0/+3
| | | | | | | | Also add print() functions. Patch by Justin Lebar! llvm-svn: 256010
* Add a dump method for ArgList.Eric Christopher2015-12-181-0/+2
| | | | | | Patch by Justin Lebar! llvm-svn: 256009
* Improve DWARFDebugFrame::parse to also handle __eh_frame.Pete Cooper2015-12-184-5/+17
| | | | | | | | | | | | | | | LLVM MC has single methods which can handle the output of EH frame and DWARF CIE's and FDE's. This code improves DWARFDebugFrame::parse to do the same for parsing. This also allows llvm-objdump to support the --dwarf=frames option which objdump supports. This option dumps the .eh_frame section using the new code in DWARFDebugFrame::parse. http://reviews.llvm.org/D15535 Reviewed by Rafael Espindola. llvm-svn: 256008
* [ThinLTO/LTO] Don't link in unneeded metadataTeresa Johnson2015-12-181-0/+5
| | | | | | | | | | | | | | | | | | | | Summary: Third patch split out from http://reviews.llvm.org/D14752. Only map in needed DISubroutine metadata (imported or otherwise linked in functions and other DISubroutine referenced by inlined instructions). This is supported for ThinLTO, LTO and llvm-link --only-needed, with associated tests for each one. Depends on D14838. Reviewers: dexonsmith, joker.eph Subscribers: davidxl, llvm-commits, joker.eph Differential Revision: http://reviews.llvm.org/D14843 llvm-svn: 256003
* clang-format to reduce diff in another patch.Rafael Espindola2015-12-181-4/+3
| | | | llvm-svn: 255981
* Revert "[Option] Introduce Arg::print(raw_ostream&) and use llvm::dbgs"Vedant Kumar2015-12-181-3/+0
| | | | | | | This reverts commit r255977. This is part of http://reviews.llvm.org/D15634. llvm-svn: 255978
* [Option] Introduce Arg::print(raw_ostream&) and use llvm::dbgsVedant Kumar2015-12-181-0/+3
| | | | llvm-svn: 255977
* Reorganize the C API headers to improve build times.Eric Christopher2015-12-1826-144/+194
| | | | | | | | | Type specific declarations have been moved to Type.h and error handling routines have been moved to ErrorHandling.h. Both are included in Core.h so nothing should change for projects directly including the headers, but transitive dependencies may be affected. llvm-svn: 255965
* [BranchProbability] Remove the restriction that known and unknown ↵Cong Hou2015-12-171-11/+26
| | | | | | | | | | | | | | | | | | | probabilities cannot coexist when being normalized. The current BranchProbability::normalizeProbabilities() forbids known and unknown probabilities to coexist in the list. This was once used to help capture probability exceptions but has caused some reported build failures (https://llvm.org/bugs/show_bug.cgi?id=25838). This patch removes this restriction by evenly distributing the complement of the sum of all known probabilities to unknown ones. We could still treat this as an abnormal behavior, but it is better to emit warnings in our future profile validator. Differential revision: http://reviews.llvm.org/D15548 llvm-svn: 255934
* Drop function that are deprecated since 2010.Rafael Espindola2015-12-171-12/+0
| | | | | | These functions were deprecated in r97608. llvm-svn: 255927
* [SCEV] Add and use SCEVConstant::getAPInt; NFCISanjoy Das2015-12-171-0/+1
| | | | llvm-svn: 255921
* [ThinLTO] Metadata linking for imported functionsTeresa Johnson2015-12-176-8/+45
| | | | | | | | | | | | | | | | | | | | | | | Summary: Second patch split out from http://reviews.llvm.org/D14752. Maps metadata as a post-pass from each module when importing complete, suturing up final metadata to the temporary metadata left on the imported instructions. This entails saving the mapping from bitcode value id to temporary metadata in the importing pass, and from bitcode value id to final metadata during the metadata linking postpass. Depends on D14825. Reviewers: dexonsmith, joker.eph Subscribers: davidxl, llvm-commits, joker.eph Differential Revision: http://reviews.llvm.org/D14838 llvm-svn: 255909
* Revert r254592 (virtual dtor in SCEVPredicate).Andy Gibbs2015-12-171-1/+1
| | | | | | | | Clang has better diagnostics in this case. It is not necessary therefore to change the destructor to avoid what is effectively an invalid warning in gcc. Instead, better handle the warning flags given to the compiler. llvm-svn: 255905
* DOTGraphTraits: Allow the decision to show a graph to consider the analysisTobias Grosser2015-12-171-6/+14
| | | | | | | | | | The method processFunction() is called to decide if a graph should be shown for a certain function. To allow DOTGraphTraitViewers to take this decision based on the analysis results for the given function, we forward a reference to the analysis result. This will be used by Polly to only visualize functions where interesting loop regions have been detected. llvm-svn: 255889
* [PGO] InstrPGO and coverage code refactoring (NFC)Xinliang David Li2015-12-171-0/+31
| | | | | | | | | | Introduce a new class InstrProfSymtab to abstract the PGO symbol table for prof and coverage reader. The symtab is is to lookup function's PGO name using function keys. The first user of the class is CoverageMapping Reader. More will follow. llvm-svn: 255862
* Use std::unique_ptr. NFC.Rafael Espindola2015-12-161-3/+5
| | | | llvm-svn: 255852
* Change linkInModule to take a std::unique_ptr.Rafael Espindola2015-12-162-11/+24
| | | | | | | Passing in a std::unique_ptr should help find errors when the module is used after being linked into another module. llvm-svn: 255842
* Drop an unnecessary use of writev.Rafael Espindola2015-12-161-14/+0
| | | | | | | | | | | It looks like the code this patch deletes is based on a misunderstanding of what guarantees writev provides. In particular, writev with 1 iovec is not "more atomic" than a write. Testing on OS X shows that both write and writev from multiple processes can be intermixed. llvm-svn: 255837
* Simplify memory management with std::unique_ptr.Rafael Espindola2015-12-161-0/+5
| | | | llvm-svn: 255831
* [CodeGen] Make MachineInstrBuilder::copyImplicitOps const. NFC.Ahmed Bougacha2015-12-161-1/+2
| | | | | | | | This matches the other MIB methods, none of which modify the builder. Without this, we can't chain copyImplicitOps. Also reformat the few users, in PPCEarlyReturn. llvm-svn: 255828
* [PGO] Handle and report overflow during profile merge for all types of dataNathan Slingerland2015-12-162-46/+88
| | | | | | | | | | | | Summary: Surface counter overflow when merging profile data. Merging still occurs on overflow but counts saturate to the maximum representable value. Overflow is reported to the user. Reviewers: davidxl, dnovillo, silvas Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D15547 llvm-svn: 255825
* [Hexagon] Update e_flags in the ELF definitionsKrzysztof Parzyszek2015-12-161-7/+9
| | | | llvm-svn: 255820
* CXX_FAST_TLS calling convention: target independent portion.Manman Ren2015-12-161-2/+2
| | | | | | | | | Update supportSplitCSR's interface to take machine function instead of the calling convention. Review comments for http://reviews.llvm.org/D15341 llvm-svn: 255818
* Set debugger tuning from TargetOptions (NFC)Paul Robinson2015-12-162-1/+41
| | | | | | Differential Revision: http://reviews.llvm.org/D15427 llvm-svn: 255810
* LPM: Make callers of LPM.deleteLoopFromQueue update LoopInfo directly. NFCJustin Bogner2015-12-162-4/+1
| | | | | | | | | | | As of r255720, the loop pass manager will DTRT when passes update the loop info for removed loops, so they no longer need to reach into LPPassManager APIs to do this kind of transformation. This change very nearly removes the need for the LPPassManager to even be passed into loop passes - the only remaining pass that uses the LPM argument is LoopUnswitch. llvm-svn: 255797
* MachineScheduler: Add a target hook for deciding which RegPressure sets toTom Stellard2015-12-161-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | increase Summary: This patch adds a function called getRegPressureSetScore() to TargetRegisterInfo. The MachineScheduler uses this when comparing instruction that increase the register pressure of different sets to determine which set is safer to increase. This hook is useful for GPU targets where the number of registers in the class is not the best metric for determing which presser set is safer to increase. Future work may include adding more parameters to this function, like for example, the current pressure level of the set or the amount that the pressure will be increased/decreased. Reviewers: qcolombet, escha, arsenm, atrick, MatzeB Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D14806 llvm-svn: 255795
* [Packetizer] Add a check whether an instruction should be packetized nowKrzysztof Parzyszek2015-12-161-0/+10
| | | | | | | | Add a function VLIWPacketizerList::shouldAddToPacket, which will allow specific implementations to decide if it is profitable to add given instruction to the current packet. llvm-svn: 255780
* Add InaccessibleMemOnly and inaccessibleMemOrArgMemOnly attributesVaivaswatha Nagaraj2015-12-163-1/+30
| | | | | | | | | | | | | | | | | | Summary: This patch introduces two new function attributes InaccessibleMemOnly: This attribute indicates that the function may only access memory that is not accessible by the program/IR being compiled. This is a weaker form of ReadNone. inaccessibleMemOrArgMemOnly: This attribute indicates that the function may only access memory that is either not accessible by the program/IR being compiled, or is pointed to by its pointer arguments. This is a weaker form of ArgMemOnly Test cases have been updated. This revision uses this (https://github.com/llvm-mirror/llvm/commit/d001932f3a8aa1ebd1555162fdce365f011bc292) as reference. Reviewers: jmolloy, hfinkel Subscribers: reames, joker.eph, llvm-commits Differential Revision: http://reviews.llvm.org/D15499 llvm-svn: 255778
* [SectionMemoryManager] Make better use of virtual memoryKeno Fischer2015-12-161-19/+21
| | | | | | | | | | | | | | | | | Summary: On Windows, the allocation granularity can be significantly larger than a page (64K), so with many small objects, just clearing the FreeMem list rapidly leaks quite a bit of virtual memory space (if not rss). Fix that by only removing those parts of the FreeMem blocks that overlap pages for which we are applying memory permissions, rather than dropping the FreeMem blocks entirely. Reviewers: lhames Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D15202 llvm-svn: 255760
* Recommit LiveDebugValues pass after fixing a couple of minor issues.Vikram TV2015-12-162-0/+4
| | | | llvm-svn: 255759
* Minor cleanup of Attribute code. NFC.George Burgess IV2015-12-161-2/+2
| | | | llvm-svn: 255751
* LPM: Simplify how passes mark loops for deletion. NFCJustin Bogner2015-12-162-3/+14
| | | | | | | | | | | | | | | | | | | | When a pass removes a loop it currently has to reach up into the LPPassManager's internals to update the state of the iteration over loops. This reverse dependency results in a pretty awkward interplay of the LPPassManager and its Passes. Here, we change this to instead keep track of when a loop has become "unlooped" in the Loop objects themselves, then the LPPassManager can check this and manipulate its own state directly. This opens the door to allow most of the loop passes to work without a backreference to the LPPassManager. I've kept passes calling the LPPassManager::deleteLoopFromQueue API now so I could put an assert in to prove that this is NFC, but a later pass will update passes just to preserve the LoopInfo directly and stop referencing the LPPassManager completely. llvm-svn: 255720
* [WinEH] Make llvm.x86.seh.recoverfp work on x64Reid Kleckner2015-12-151-0/+1
| | | | | | | | | | | It adjusts from RSP-after-prologue to RBP, which is what SEH filters need to do before they can use llvm.localrecover. Fixes SEH filter captures, which were broken in r250088. Issue reported by Alex Crichton. llvm-svn: 255707
* Cross-DSO control flow integrity (LLVM part).Evgeniy Stepanov2015-12-152-0/+4
| | | | | | | | An LTO pass that generates a __cfi_check() function that validates a call based on a hash of the call-site-known type and the target pointer. llvm-svn: 255693
* Wrap include of <future> in some warning suppression pragmasReid Kleckner2015-12-151-1/+11
| | | | | | | | Eventually we may need to sink this include to the .cpp file or something to suport LLVM_ENABLE_THREADS=OFF, but this solves my immediate problem of fixing the build. llvm-svn: 255682
* Add support for the .debug_macro section of the forthcoming DWARF 5 spec.Eric Christopher2015-12-151-0/+20
| | | | | | Patch by B. Sivachandra Reddy! llvm-svn: 255679
* Fix clang-cl self-host with MSVC 2013 STL std::bind implementationReid Kleckner2015-12-151-1/+6
| | | | llvm-svn: 255678
* [WinEH] Remove unused intrinsic llvm.x86.seh.restoreframeReid Kleckner2015-12-151-5/+0
| | | | | | | We can clean this up now that we have the X86 CATCHRET instruction to restore the FP, SP, and BP. llvm-svn: 255677
* [WinEH] Use operand bundles to describe call sitesDavid Majnemer2015-12-153-4/+17
| | | | | | | | | | | | | | | | | SimplifyCFG allows tail merging with code which terminates in unreachable which, in turn, makes it possible for an invoke to end up in a funclet which it was not originally part of. Using operand bundles on invokes allows us to determine whether or not an invoke was part of a funclet in the source program. Furthermore, it allows us to unambiguously answer questions about the legality of inlining into call sites which the personality may have trouble with. Differential Revision: http://reviews.llvm.org/D15517 llvm-svn: 255674
* Coverage code refactoring /NFCXinliang David Li2015-12-151-0/+4
| | | | llvm-svn: 255670
* LPM: Stop threading `Pass *` through all of the loop utility APIs. NFCJustin Bogner2015-12-153-12/+15
| | | | | | | | | | | | | | | | | | | | | | A large number of loop utility functions take a `Pass *` and reach into it to find out which analyses to preserve. There are a number of problems with this: - The APIs have access to pretty well any Pass state they want, so it's hard to tell what they may or may not do. - Other APIs have copied these and pass around a `Pass *` even though they don't even use it. Some of these just hand a nullptr to the API since the callers don't even have a pass available. - Passes in the new pass manager don't work like the current ones, so the APIs can't be used as is there. Instead, we should explicitly thread the analysis results that we actually care about through these APIs. This is both simpler and more reusable. llvm-svn: 255669
* [llvm-profdata] Add support for weighted merge of profile data (2nd try)Nathan Slingerland2015-12-153-31/+90
| | | | | | | | | | | | | | | | | | | | Summary: This change adds support for specifying a weight when merging profile data with the llvm-profdata tool. Weights are specified by using the --weighted-input=<weight>,<filename> option. Input files not specified with this option (normal positional list after options) are given a default weight of 1. Adding support for arbitrary weighting of input profile data allows for relative importance to be placed on the input data from multiple training runs. Both sampled and instrumented profiles are supported. Reviewers: davidxl, dnovillo, bogner, silvas Subscribers: silvas, davidxl, llvm-commits Differential Revision: http://reviews.llvm.org/D15306 llvm-svn: 255659
* AMDGPU/SI: Add llvm.amdgcn.mbcnt.* intrinsicsTom Stellard2015-12-151-0/+8
| | | | | | | | | | | | | | Summary: These are meant to be used instead of the llvm.SI.tid intrinsic which will be deprecated at some point. Reviewers: arsenm Subscribers: arsenm, llvm-commits Differential Revision: http://reviews.llvm.org/D15475 llvm-svn: 255652
* AMDGPU/SI: Add llvm.amdgcn.v.interp.p[12] intrinsicsTom Stellard2015-12-151-0/+15
| | | | | | | | | | | | | | Summary: These are meant to be used instead of the llvm.SI.fs.interp intrinsic which will be deprecated at some point. Reviewers: arsenm Subscribers: arsenm, llvm-commits Differential Revision: http://reviews.llvm.org/D15474 llvm-svn: 255651
* Do not try to use i8 and i16 versions of FP_TO_U/SINT soft float library callsMichael Kuperstein2015-12-151-8/+0
| | | | | | | | | | | It appears that neither compiler-rt nor the gnu soft-float libraries actually implement these conversions. Instead of emitting calls to library functions that don't exist, handle it similarly to the way we handle i8 -> float and i16 -> float conversions: call the i32 library function, and adjust the type. Differential Revision: http://reviews.llvm.org/D15151 llvm-svn: 255643
OpenPOWER on IntegriCloud