summaryrefslogtreecommitdiff
path: root/include
AgeCommit message (Collapse)Author
2016-07-15[Coverage] Mark a few more methods const (NFC)Vedant Kumar
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275514 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-14Move legacy LTO interface headers to legacy/ directory.Peter Collingbourne
Differential Revision: https://reviews.llvm.org/D22173 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275476 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-14[Object] Change Archive::findSym to return an Expected<Optional<Child>>.Lang Hames
As suggested by Rafael in review of D22079 - this was accidentally left out of the final commit (r275316). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275469 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-14Add recently added TargetOptions::EnableIPRA member to operator==Mehdi Amini
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275467 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-14[PM] Port Dead Loop Deletion Pass to the new PMJun Bum Lim
Summary: Port Dead Loop Deletion Pass to the new pass manager. Reviewers: silvas, davide Subscribers: llvm-commits, sanjoy, mcrosier Differential Revision: https://reviews.llvm.org/D21483 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275453 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-14[CodeGen] Refactor MachineMemOperand::Flags's target-specific flags.Justin Lebar
Summary: Make the target-specific flags in MachineMemOperand::Flags real, bona fide enum values. This simplifies users, prevents various constants from going out of sync, and avoids the false sense of security provided by declaring static members in classes and then forgetting to define them inside of cpp files. Reviewers: MatzeB Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D22372 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275451 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-14[GlobalISel] Fix G_OR opcode after the addition of a TargetOpcode.Ahmed Bougacha
r275367 fixed G_ADD and G_BR, but not G_OR. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275444 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-14[CodeGen] Simplify reg bank/class union is+get into dyn_cast. NFC.Ahmed Bougacha
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275443 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-14[CodeGen] s/constexpr/LLVM_CONSTEXPR/ in MachineMemOperand.h.Justin Lebar
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275441 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-14[CodeGen] Refactor MachineMemOperand's Flags enum.Justin Lebar
Summary: - Give it a shorter name (because we're going to refer to it often from SelectionDAG and friends). - Split the flags and alignment into separate variables. - Specialize FlagsEnumTraits for it, so we can do bitwise ops on it without losing type information. - Make some enum values constants in MachineMemOperand instead. MOMaxBits should not be a valid Flag. - Simplify some of the bitwise ops for dealing with Flags. Reviewers: chandlerc Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D22281 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275438 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-14[TableGen] Autobrief-ize Record. NFC.Ahmed Bougacha
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275425 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-14[TableGen] Cleanup Record comments. NFC.Ahmed Bougacha
LLVM doesn't use exceptions anymore. Also remove the implementation comments. Some of them diverged. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275424 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-14Revert r275401, it caused PR28551.Nico Weber
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275420 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-14code hoisting pass based on GVNSebastian Pop
This pass hoists duplicated computations in the program. The primary goal of gvn-hoist is to reduce the size of functions before inline heuristics to reduce the total cost of function inlining. Pass written by Sebastian Pop, Aditya Kumar, Xiaoyu Hu, and Brian Rzycki. Important algorithmic contributions by Daniel Berlin under the form of reviews. Differential Revision: http://reviews.llvm.org/D19338 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275401 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-14This implements a more optimal algorithm for selecting a base constant inSjoerd Meijer
constant hoisting. It not only takes into account the number of uses and the cost of expressions in which constants appear, but now also the resulting integer range of the offsets. Thus, the algorithm maximizes the number of uses within an integer range that will enable more efficient code generation. On ARM, for example, this will enable code size optimisations because less negative offsets will be created. Negative offsets/immediates are not supported by Thumb1 thus preventing more compact instruction encoding. Differential Revision: http://reviews.llvm.org/D21183 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275382 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-14XRay: Add entry and exit sledsDean Michael Berris
Summary: In this patch we implement the following parts of XRay: - Supporting a function attribute named 'function-instrument' which currently only supports 'xray-always'. We should be able to use this attribute for other instrumentation approaches. - Supporting a function attribute named 'xray-instruction-threshold' used to determine whether a function is instrumented with a minimum number of instructions (IR instruction counts). - X86-specific nop sleds as described in the white paper. - A machine function pass that adds the different instrumentation marker instructions at a very late stage. - A way of identifying which return opcode is considered "normal" for each architecture. There are some caveats here: 1) We don't handle PATCHABLE_RET in platforms other than x86_64 yet -- this means if IR used PATCHABLE_RET directly instead of a normal ret, instruction lowering for that platform might do the wrong thing. We think this should be handled at instruction selection time to by default be unpacked for platforms where XRay is not availble yet. 2) The generated section for X86 is different from what is described from the white paper for the sole reason that LLVM allows us to do this neatly. We're taking the opportunity to deviate from the white paper from this perspective to allow us to get richer information from the runtime library. Reviewers: sanjoy, eugenis, kcc, pcc, echristo, rnk Subscribers: niravd, majnemer, atrick, rnk, emaste, bmakam, mcrosier, mehdi_amini, llvm-commits Differential Revision: http://reviews.llvm.org/D19904 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275367 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-14[Object] Re-apply r275316 now that I have the corresponding LLD patch ready.Lang Hames
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275361 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-14Synchronize LLVM and clang's ObjCDeclSpec::ObjCPropertyAttributeKind.Adrian Prantl
This adds Clang-specific DWARF constants for nullability and ObjC class properties that are already generated by clang. This patch adds dwarfdump support and a more comprehensive testcase. <rdar://problem/27335745> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275354 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-14[Object] Revert r275316, Archive::child_iterator changes, while I update lld.Lang Hames
Should fix the bots broken by r275316. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275353 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-13Force a semicolon at the end of the LLVM_ENABLE_BITMASK_ENUMS_IN_NAMESPACE() ↵Justin Lebar
macro. This silences a warning about an extra semicolon on gcc. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275349 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-13Add EnableIPRA to TargetOptions, and move the cl::opt -enable-ipra to ↵Mehdi Amini
TargetMachine.cpp Avoid exposing a cl::opt in a public header and instead promote this option in the API. Alternatively, we could land the cl::opt in CommandFlags.h so that it is available to every tool, but we would still have to find an option for clang. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275348 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-13[IPRA] Set callee saved registers to none for local function when IPRA is ↵Mehdi Amini
enabled. IPRA try to optimize caller saved register by propagating register usage information from callee to caller so it is beneficial to have caller saved registers compare to callee saved registers when IPRA is enabled. Please find more detailed explanation here https://groups.google.com/d/msg/llvm-dev/XRzGhJ9wtZg/tjAJqb0eEgAJ. This change makes local function do not have any callee preserved register when IPRA is enabled. A simple test case is also added to verify this change. Patch by Vivek Pandya <vivekvpandya@gmail.com> Differential Revision: http://reviews.llvm.org/D21561 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275347 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-13[Coverage] Return an ArrayRef to avoid copies (NFC)Vedant Kumar
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275338 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-13[Coverage] Mark a few methods const (NFC)Vedant Kumar
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275337 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-13[LAA] Don't hold on to DominatorTree in the analysis resultAdam Nemet
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275335 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-13[LAA] Don't hold on to TargetLibraryInfo in the analysis resultAdam Nemet
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275334 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-13MIRYamlMapping: Update stale commentMatthias Braun
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275328 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-13[LAA] Don't hold on to DataLayout in the analysis resultAdam Nemet
In fact, don't even pass this to the ctor since we can get it from the module. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275326 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-13[LAA] Don't hold on to LoopInfo in the analysis resultAdam Nemet
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275325 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-13[LAA] Don't hold on to AliasAnalysis in the analysis resultAdam Nemet
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275322 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-13Mark the textual headers in the module map for ProfileDataTeresa Johnson
Follow on to r275312. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275319 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-13[Object] Change Archive::child_iterator for better interop with Error/Expected.Lang Hames
See http://reviews.llvm.org/D22079 Changes the Archive::child_begin and Archive::children to require a reference to an Error. If iterator increment fails (because the archive header is damaged) the iterator will be set to 'end()', and the error stored in the given Error&. The Error value should be checked by the user immediately after the loop. E.g.: Error Err; for (auto &C : A->children(Err)) { // Do something with archive child C. } // Check the error immediately after the loop. if (Err) return Err; Failure to check the Error will result in an abort() when the Error goes out of scope (as guaranteed by the Error class). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275316 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-13Define a module map entry for ProfileData.Teresa Johnson
As per Richard Smith, this should help avoid a modules bug exposed by my r275216 commit: http://lab.llvm.org:8011/builders/clang-x86_64-linux-selfhost-modules/builds/17560 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275312 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-13Reverting r275284 due to platform-specific test failuresAndrew Kaylor
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275304 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-13[ADT] Add LLVM_MARK_AS_BITMASK_ENUM, used to enable bitwise operations on ↵Justin Lebar
enums without static_cast. Summary: Normally when you do a bitwise operation on an enum value, you get back an instance of the underlying type (e.g. int). But using this macro, bitwise ops on your enum will return you back instances of the enum. This is particularly useful for enums which represent a combination of flags. Suppose you have a function which takes an int and a set of flags. One way to do this would be to take two numeric params: enum SomeFlags { F1 = 1, F2 = 2, F3 = 4, ... }; void Fn(int Num, int Flags); void foo() { Fn(42, F2 | F3); } But now if you get the order of arguments wrong, you won't get an error. You might try to fix this by changing the signature of Fn so it accepts a SomeFlags arg: enum SomeFlags { F1 = 1, F2 = 2, F3 = 4, ... }; void Fn(int Num, SomeFlags Flags); void foo() { Fn(42, static_cast<SomeFlags>(F2 | F3)); } But now we need a static cast after doing "F2 | F3" because the result of that computation is the enum's underlying type. This patch adds a mechanism which gives us the safety of the second approach with the brevity of the first. enum SomeFlags { F1 = 1, F2 = 2, F3 = 4, ..., F_MAX = 128, LLVM_MARK_AS_BITMASK_ENUM(F_MAX) }; void Fn(int Num, SomeFlags Flags); void foo() { Fn(42, F2 | F3); // No static_cast. } The LLVM_MARK_AS_BITMASK_ENUM macro enables overloads for bitwise operators on SomeFlags. Critically, these operators return the enum type, not its underlying type, so you don't need any static_casts. An advantage of this solution over the previously-proposed BitMask class [0, 1] is that we don't need any wrapper classes -- we can operate directly on the enum itself. The approach here is somewhat similar to OpenOffice's typed_flags_set [2]. But we skirt the need for a wrapper class (and a good deal of complexity) by judicious use of enable_if. We SFINAE on the presence of a particular enumerator (added by the LLVM_MARK_AS_BITMASK_ENUM macro) instead of using a traits class so that it's impossible to use the enum before the overloads are present. The solution here also seamlessly works across multiple namespaces. [0] http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20150622/283369.html [1] http://lists.llvm.org/pipermail/llvm-commits/attachments/20150623/073434b6/attachment.obj [2] https://cgit.freedesktop.org/libreoffice/core/tree/include/o3tl/typed_flags_set.hxx Reviewers: chandlerc, rsmith Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D22279 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275292 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-13Fix for Bug 26903, adds support to inline __builtin_mempcpyAndrew Kaylor
Patch by Sunita Marathe Differential Revision: http://reviews.llvm.org/D21920 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275284 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-13[BFI] Add new LazyBFI analysis passAdam Nemet
Summary: This is necessary for D21771. In order to add the hotness attribute to optimization remarks we need BFI to be available in all passes that emit optimization remarks. However we don't want to pay for computing BFI unless the hotness attribute is requested. This is achieved by making BFI lazy at the very high-level through a new analysis pass -- BFI is not calculated unless requested. I am adding a test to check the laziness under D21771 where the first user of the analysis is added. Reviewers: hfinkel, dexonsmith, davidxl Subscribers: davidxl, dexonsmith, llvm-commits Differential Revision: http://reviews.llvm.org/D22141 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275250 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-13[IR] Make getIndexedOffsetInType return a signed resultDavid Majnemer
A GEPed offset can go negative, the result of getIndexedOffsetInType should according be a signed type. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275246 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-12New pass manager for LICM.Dehao Chen
Summary: Port LICM to the new pass manager. Reviewers: davidxl, silvas Subscribers: krasin, vitalybuka, silvas, davide, sanjoy, llvm-commits, mehdi_amini Differential Revision: http://reviews.llvm.org/D21772 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275222 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-12Refactor indirect call promotion profitability analysis (NFC)Teresa Johnson
Summary: Refactored the profitability analysis out of the IC promotion pass and into lib/Analysis so that it can be accessed by the summary index builder in a follow-on patch to enable IC promotion in ThinLTO (D21932). Reviewers: davidxl, xur Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D22182 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275216 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-12[PM] Port LoopIdiomRecognize Pass to new PMDehao Chen
Summary: Port LoopIdiomRecognize Pass to new PM Reviewers: davidxl Subscribers: davide, sanjoy, mzolotukhin, llvm-commits Differential Revision: http://reviews.llvm.org/D22250 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275202 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-12AMDGPU: Add LLVM IR Intrinsic for v_lerp_u8Wei Ding
Differential Revision: http://reviews.llvm.org/D22239 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275197 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-12Add print/dump routines to LiveInterval::SubRangeKrzysztof Parzyszek
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275194 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-12Revert "New pass manager for LICM."Vitaly Buka
Summary: This reverts commit r275118. Subscribers: sanjoy, mehdi_amini Differential Revision: http://reviews.llvm.org/D22259 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275156 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-12[AVX512] Remove masked logic op intrinsics and autoupgrade them to native IR.Craig Topper
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275155 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-12Re-enable TPI hash verification for enum records.Rui Ueyama
We didn't read unique names correctly. As a result, we computed hashes on (non-)unique names instead of unique names. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275150 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-11Do not use bool in C header lto.h, use lto_bool_t insteadMehdi Amini
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275130 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-11Add a libLTO API to query a memory buffer and check if it contains ObjC ↵Mehdi Amini
categories The linker supports a feature to force load an object from a static archive if it defines an Objective-C category. This API supports this feature by looking at every section in the module to find if a category is defined in the module. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275125 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-11New pass manager for LICM.Dehao Chen
Summary: Port LICM to the new pass manager. Reviewers: davidxl, silvas Subscribers: silvas, davide, sanjoy, llvm-commits, mehdi_amini Differential Revision: http://reviews.llvm.org/D21772 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275118 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-11Refactor the PDB writing to use a builder approachZachary Turner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275110 91177308-0d34-0410-b5e6-96231b3b80d8