aboutsummaryrefslogtreecommitdiffstats
path: root/tools/llc
Commit message (Collapse)AuthorAgeFilesLines
* Update aosp/master LLVM for rebase to r235153Pirama Arumuga Nainar2015-05-181-10/+37
| | | | | Change-Id: I9bf53792f9fc30570e81a8d80d296c681d005ea7 (cherry picked from commit 0c7f116bb6950ef819323d855415b2f2b0aad987)
* Fix mips vs. mips64 build issues.Stephen Hines2015-04-241-0/+1
| | | | Change-Id: I55b16d8c0e597079c036ceeefd8c04bfb394367b
* Update aosp/master llvm for rebase to r233350Pirama Arumuga Nainar2015-04-092-3/+3
| | | | Change-Id: I07d935f8793ee8ec6b7da003f6483046594bca49
* Update aosp/master LLVM for rebase to r230699.Stephen Hines2015-03-232-28/+27
| | | | Change-Id: I2b5be30509658cb8266be782de0ab24f9099f9b9
* Update aosp/master LLVM for rebase to r222494.Stephen Hines2014-12-022-26/+15
| | | | Change-Id: Ic787f5e0124df789bd26f3f24680f45e678eef2d
* Adds the ability to run the llvm test suite in-tree.Chris Wailes2014-06-061-1/+0
| | | | | | | | | | | | | | | | | This was accomplished by building additional tools and hand-generating several files that are auto-generated by the configuration system when LLVM is built out-of-tree. The LTO, Interpreter, and DebugInfo libraries are now being compiled, and several source files were added to existing compilation targets. To run these tests you must first run build/envsetup.sh and have used lunch to select a target. You can then launch the test script by running: cd $ANDROID_BUILD_TOP/external/llvm && ./android_test.sh Bug: 15433215 Change-Id: I43d87de0a4620cdd46c8d0f825dd4428e8409702
* llvm: fix buildColin Cross2014-06-041-2/+2
| | | | | | | | The previous patch renamed some variables used by the build system from arm64 to aarch64. Rename them back so that LLVM can be built for arm64 again. Change-Id: I760aff378411b46841819b30723eb1fa9e166519
* Updated the makefiles to use AArch64 name.Chris Wailes2014-06-041-11/+11
| | | | | | | | The makefiles had previously used the name Arm64 for the AArch64 libraries. This patch changes all of makefiles to use the correct name for the backend. Change-Id: Ida062b1173b719b6d2519618827c3a67ede8b479
* Update LLVM for 3.5 rebase (r209712).Stephen Hines2014-05-292-28/+43
| | | | Change-Id: I149556c940fb7dc92d075273c87ff584f400941f
* We need to build the ARM components for AArch64 as well.Stephen Hines2014-05-061-5/+6
| | | | | Bug: 14474874 Change-Id: I37d5a95db83c31bb77cf2e2b5686d8aa329fd7d8
* Update to LLVM 3.5a.Stephen Hines2014-04-244-49/+42
| | | | Change-Id: Ifadecab779f128e62e430c2b4f6ddd84953ed617
* Make LLVM build on AArch64.Tim Murray2014-03-141-0/+12
| | | | | | bug 13343378 Change-Id: I4152d2437a144645fa0b5a425b7bfdcb3a2a5594
* llvm: convert makefiles to support multilib buildColin Cross2014-02-061-18/+8
| | | | | | | | Convert makefiles to allow for building two architectures at the same time. This will also cause make checkbuild to build the target libraries for all supported architectures. Change-Id: Ia5e6fe5b1186a67753faafd3532ed4cb280a8b10
* [MIPS64] Temporary placeholder build, to allow other projects to buildDuane Sand2014-02-051-2/+3
| | | | Change-Id: I050c96c687f44e882bb7139a7dd81a46c72ac3b6
* llvm: rename aarch64 target to arm64Colin Cross2014-01-231-3/+3
| | | | | | | Rename aarch64 build targets to arm64. The gcc toolchain is still aarch64. Change-Id: Ia92d8a50824e5329cf00fd6f4f92eae112b7f3a3
* AArch64: Temporarily disable AArch64 buildSerban Constantinescu2013-12-111-0/+4
| | | | | | | | | This patch disables AArch64 build and will get us going with building bionic. Needs to be reverted once upstream llvm support is integrated into AOSP (AArch64 backend). Change-Id: I4dde21bc340d7d00d5ffda551db2e5ab83c85c63 Signed-off-by: Serban Constantinescu <serban.constantinescu@arm.com>
* am 8e708faf: am 5edef2e8: Merge "x86_64/x32: Avoid early fail on x32 or ↵Stephen Hines2013-09-231-1/+1
|\ | | | | | | | | | | | | x86_64 build" * commit '8e708fafb747b3f1e536d87016bb67c118fb5b0d': x86_64/x32: Avoid early fail on x32 or x86_64 build
| * x86_64/x32: Avoid early fail on x32 or x86_64 buildPavel Chupin2013-09-201-1/+1
| | | | | | | | | | Change-Id: I30186cfb74467004400a10e79e0fcbf72f876098 Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
* | Merge commit '10251753b6897adcd22cc981c0cc42f348c109de' into merge-20130807Stephen Hines2013-08-071-5/+4
|\ \ | | | | | | | | | | | | | | | | | | | | | Conflicts: lib/Archive/ArchiveReader.cpp lib/Support/Unix/PathV2.inc Change-Id: I29d8c1e321a4a380b6013f00bac6a8e4b593cc4e
| * | Use function attributes to indicate that we don't want to realign the stack.Bill Wendling2013-08-011-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | Function attributes are the future! So just query whether we want to realign the stack directly from the function instead of through a random target options structure. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187618 91177308-0d34-0410-b5e6-96231b3b80d8
| * | Replace the "NoFramePointerElimNonLeaf" target option with a function attribute.Bill Wendling2013-07-251-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | There's no need to specify a flag to omit frame pointer elimination on non-leaf nodes...(Honestly, I can't parse that option out.) Use the function attribute stuff instead. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187093 91177308-0d34-0410-b5e6-96231b3b80d8
| * | Recommit r186217 with testcase fix:Bill Wendling2013-07-221-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use the function attributes to pass along the stack protector buffer size. Now that we have robust function attributes, don't use a command line option to specify the stack protecto buffer size. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186863 91177308-0d34-0410-b5e6-96231b3b80d8
| * | Add a wrapper for open.Rafael Espindola2013-07-161-2/+3
| | | | | | | | | | | | | | | | | | | | | This centralizes the handling of O_BINARY and opens the way for hiding more differences (like how open behaves with directories). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186447 91177308-0d34-0410-b5e6-96231b3b80d8
| * | Revert commit r186217 -- this is breaking bots:Chandler Carruth2013-07-131-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | http://lab.llvm.org:8013/builders/clang-x86_64-darwin11-nobootstrap-RAincremental/builds/4328 Original commit log: Use the function attributes to pass along the stack protector buffer size. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186234 91177308-0d34-0410-b5e6-96231b3b80d8
| * | Use the function attributes to pass along the stack protector buffer size.Bill Wendling2013-07-121-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | Now that we have robust function attributes, don't use a command line option to specify the stack protecto buffer size. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186217 91177308-0d34-0410-b5e6-96231b3b80d8
| * | Test commit access.Wan Xiaofei2013-06-191-0/+1
| | | | | | | | | | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184278 91177308-0d34-0410-b5e6-96231b3b80d8
* | | Update LLVM for merge to r183849.Stephen Hines2013-06-131-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | s/LLVM_HOSTTRIPLE/LLVM_HOST_TRIPLE Add #include<ctype.h> to LinkModules.cpp for isdigit(). Add missing libLLVMObject to llc dependencies. Android.mk updates: Remove Linker.cpp Remove JITDwarfEmitter.cpp Remove MipsDirectObjLower.cpp Add MCExternalSymbolizer.cpp Add MCRelocationInfo.cpp Add MCSymbolizer.cpp Add ARMMachORelocationInfo.cpp Add Mips16HardFloat.cpp Add MipsOptimizeMathLibCalls.cpp Add X86ELFRelocationInfo.cpp Add X86MachORelocationInfo.cpp Change-Id: I3f3dbc2b62e89ef9e303f5456c6a99f0937f6981
* | | Update LLVM for merge to r180947.Stephen Hines2013-05-061-0/+1
| | | | | | | | | | | | Change-Id: Ic9e7daa7ef3789298c49a7b308af92115f5d682d
* | | Merge remote-tracking branch 'upstream/master' into merge-20130502Stephen Hines2013-05-024-6/+7
|\ \ \ | |/ / | | / | |/ |/| | | | | | | Conflicts: lib/Support/Unix/Signals.inc unittests/Transforms/Utils/Cloning.cpp Change-Id: I027581a4390ec3ce4cd8d33da8b5f4c0c7d372c8
| * Replace uses of the deprecated std::auto_ptr with OwningPtr.Andy Gibbs2013-04-121-2/+2
| | | | | | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179373 91177308-0d34-0410-b5e6-96231b3b80d8
| * Manually update the dependencies in the Makefiles. It turns out that allChandler Carruth2013-03-261-1/+1
| | | | | | | | | | | | | | | | | | | | | | that work on the LLVMBuild based dependency specification didn't actually work, we just now maintain dependencies in *3* places instead of 2. Yay. There may still be some missing dependencies, I'm still sifting through the bots and my builds, but this is a step in the right direction. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177988 91177308-0d34-0410-b5e6-96231b3b80d8
| * Split out the IRReader header and the utility functions it provides intoChandler Carruth2013-03-263-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | its own library. These functions are bridging between the bitcode reader and the ll parser which are in different libraries. Previously we didn't have any good library to do this, and instead played fast and loose with a "header only" set of interfaces in the Support library. This really doesn't work well as evidenced by the recent attempt to add timing logic to the these routines. As part of this, make them normal functions rather than weird inline functions, and sink the implementation into the library. Also clean up the header to be nice and minimal. This requires updating lots of build system dependencies to specify that the IRReader library is needed, and several source files to not implicitly rely upon the header file to transitively include all manner of other headers. If you are using IRReader.h, this commit will break you (the header moved) and you'll need to also update your library usage to include 'irreader'. I will commit the corresponding change to Clang momentarily. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177971 91177308-0d34-0410-b5e6-96231b3b80d8
* | Fix dependencies for llc/ARMAsmPrinter.Stephen Hines2013-02-261-0/+1
| | | | | | | | | | | | | | We were incorrectly pulling the source file in from a subdirectory and not using the appropriate static library to build llc. Change-Id: Id5512a918f66e437c36a2cc737795f05173f8b25
* | Merge remote-tracking branch 'upstream/master' into merge-llvmStephen Hines2013-01-211-216/+33
|\ \ | |/ | | | | | | | | | | | | | | | | | | | | Conflicts: lib/CodeGen/AsmPrinter/AsmPrinter.cpp lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp lib/MC/MCAssembler.cpp lib/Support/Atomic.cpp lib/Support/Memory.cpp lib/Target/ARM/ARMJITInfo.cpp Change-Id: Ib339baf88df5b04870c8df1bedcfe1f877ccab8d
| * Switch TargetTransformInfo from an immutable analysis pass that requiresChandler Carruth2013-01-071-5/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | a TargetMachine to construct (and thus isn't always available), to an analysis group that supports layered implementations much like AliasAnalysis does. This is a pretty massive change, with a few parts that I was unable to easily separate (sorry), so I'll walk through it. The first step of this conversion was to make TargetTransformInfo an analysis group, and to sink the nonce implementations in ScalarTargetTransformInfo and VectorTargetTranformInfo into a NoTargetTransformInfo pass. This allows other passes to add a hard requirement on TTI, and assume they will always get at least on implementation. The TargetTransformInfo analysis group leverages the delegation chaining trick that AliasAnalysis uses, where the base class for the analysis group delegates to the previous analysis *pass*, allowing all but tho NoFoo analysis passes to only implement the parts of the interfaces they support. It also introduces a new trick where each pass in the group retains a pointer to the top-most pass that has been initialized. This allows passes to implement one API in terms of another API and benefit when some other pass above them in the stack has more precise results for the second API. The second step of this conversion is to create a pass that implements the TargetTransformInfo analysis using the target-independent abstractions in the code generator. This replaces the ScalarTargetTransformImpl and VectorTargetTransformImpl classes in lib/Target with a single pass in lib/CodeGen called BasicTargetTransformInfo. This class actually provides most of the TTI functionality, basing it upon the TargetLowering abstraction and other information in the target independent code generator. The third step of the conversion adds support to all TargetMachines to register custom analysis passes. This allows building those passes with access to TargetLowering or other target-specific classes, and it also allows each target to customize the set of analysis passes desired in the pass manager. The baseline LLVMTargetMachine implements this interface to add the BasicTTI pass to the pass manager, and all of the tools that want to support target-aware TTI passes call this routine on whatever target machine they end up with to add the appropriate passes. The fourth step of the conversion created target-specific TTI analysis passes for the X86 and ARM backends. These passes contain the custom logic that was previously in their extensions of the ScalarTargetTransformInfo and VectorTargetTransformInfo interfaces. I separated them into their own file, as now all of the interface bits are private and they just expose a function to create the pass itself. Then I extended these target machines to set up a custom set of analysis passes, first adding BasicTTI as a fallback, and then adding their customized TTI implementations. The fourth step required logic that was shared between the target independent layer and the specific targets to move to a different interface, as they no longer derive from each other. As a consequence, a helper functions were added to TargetLowering representing the common logic needed both in the target implementation and the codegen implementation of the TTI pass. While technically this is the only change that could have been committed separately, it would have been a nightmare to extract. The final step of the conversion was just to delete all the old boilerplate. This got rid of the ScalarTargetTransformInfo and VectorTargetTransformInfo classes, all of the support in all of the targets for producing instances of them, and all of the support in the tools for manually constructing a pass based around them. Now that TTI is a relatively normal analysis group, two things become straightforward. First, we can sink it into lib/Analysis which is a more natural layer for it to live. Second, clients of this interface can depend on it *always* being available which will simplify their code and behavior. These (and other) simplifications will follow in subsequent commits, this one is clearly big enough. Finally, I'm very aware that much of the comments and documentation needs to be updated. As soon as I had this working, and plausibly well commented, I wanted to get it committed and in front of the build bots. I'll be doing a few passes over documentation later if it sticks. Commits to update DragonEgg and Clang will be made presently. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171681 91177308-0d34-0410-b5e6-96231b3b80d8
| * Convert the TargetTransformInfo from an immutable pass with dynamicChandler Carruth2013-01-051-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | interfaces which could be extracted from it, and must be provided on construction, to a chained analysis group. The end goal here is that TTI works much like AA -- there is a baseline "no-op" and target independent pass which is in the group, and each target can expose a target-specific pass in the group. These passes will naturally chain allowing each target-specific pass to delegate to the generic pass as needed. In particular, this will allow a much simpler interface for passes that would like to use TTI -- they can have a hard dependency on TTI and it will just be satisfied by the stub implementation when that is all that is available. This patch is a WIP however. In particular, the "stub" pass is actually the one and only pass, and everything there is implemented by delegating to the target-provided interfaces. As a consequence the tools still have to explicitly construct the pass. Switching targets to provide custom passes and sinking the stub behavior into the NoTTI pass is the next step. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171621 91177308-0d34-0410-b5e6-96231b3b80d8
| * Move all of the header files which are involved in modelling the LLVM IRChandler Carruth2013-01-021-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | into their new header subdirectory: include/llvm/IR. This matches the directory structure of lib, and begins to correct a long standing point of file layout clutter in LLVM. There are still more header files to move here, but I wanted to handle them in separate commits to make tracking what files make sense at each layer easier. The only really questionable files here are the target intrinsic tablegen files. But that's a battle I'd rather not fight today. I've updated both CMake and Makefile build systems (I think, and my tests think, but I may have missed something). I've also re-sorted the includes throughout the project. I'll be committing updates to Clang, DragonEgg, and Polly momentarily. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171366 91177308-0d34-0410-b5e6-96231b3b80d8
| * Sort a few more #include lines in tools/... unittests/... and utils/...Chandler Carruth2013-01-021-1/+1
| | | | | | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171363 91177308-0d34-0410-b5e6-96231b3b80d8
| * llvm/tools: Add #include "llvm/TargetTransformInfo.h"NAKAMURA Takumi2012-12-111-0/+1
| | | | | | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169817 91177308-0d34-0410-b5e6-96231b3b80d8
| * Sort the #include lines for tools/...Chandler Carruth2012-12-041-7/+7
| | | | | | | | | | | | | | | | Again, tools are trickier to pick the main module header for than library source files. I've started to follow the pattern of using LLVMContext.h when it is included as a stub for program source files. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169252 91177308-0d34-0410-b5e6-96231b3b80d8
| * Add a -time-compilations=<N> option to llc.Jakob Stoklund Olesen2012-11-301-0/+16
| | | | | | | | | | | | | | | | This causes llc to repeat the module compilation N times, making it possible to get more accurate information from -time-passes when compiling small modules. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169040 91177308-0d34-0410-b5e6-96231b3b80d8
| * One more step towards making doInitialization and doFinalization useful forPedro Artigas2012-11-291-2/+0
| | | | | | | | | | | | | | | | | | start up and clean up module passes, now that ASAN and TSAN are fixed the tests pass git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168905 91177308-0d34-0410-b5e6-96231b3b80d8
| * Revert r168635 "Step towards implementation of pass manager with ↵Owen Anderson2012-11-271-0/+2
| | | | | | | | | | | | | | | | | | doInitialization and doFinalization per module detangled from runOn?? calls, still has temporary code not to break ASAN to be removed when that pass conforms to the proposed model". It appears to have broken at least one buildbot. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168654 91177308-0d34-0410-b5e6-96231b3b80d8
| * Step towards implementation of pass manager with doInitialization and ↵Owen Anderson2012-11-261-2/+0
| | | | | | | | | | | | | | | | | | doFinalization per module detangled from runOn?? calls, still has temporary code not to break ASAN to be removed when that pass conforms to the proposed model Patch by Pedro Artigas, with feedback from by Chandler Carruth. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168635 91177308-0d34-0410-b5e6-96231b3b80d8
| * Add doInitialization and doFinalization methods to ModulePass's, to allow ↵Owen Anderson2012-11-151-0/+2
| | | | | | | | | | | | | | | | | | them to be re-initialized and reused on multiple Module's. Patch by Pedro Artigas. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168008 91177308-0d34-0410-b5e6-96231b3b80d8
| * Reapply the TargerTransformInfo changes, minus the changes to LSR and ↵Nadav Rotem2012-10-181-206/+9
| | | | | | | | | | | | Lowerinvoke. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166248 91177308-0d34-0410-b5e6-96231b3b80d8
| * Temporarily revert the TargetTransform changes.Bob Wilson2012-10-181-9/+206
| | | | | | | | | | | | | | | | | | | | | | The TargetTransform changes are breaking LTO bootstraps of clang. I am working with Nadav to figure out the problem, but I am reverting it for now to get our buildbots working. This reverts svn commits: 165665 165669 165670 165786 165787 165997 and I have also reverted clang svn 165741 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166168 91177308-0d34-0410-b5e6-96231b3b80d8
| * Add a new interface to allow IR-level passes to access codegen-specific ↵Nadav Rotem2012-10-101-206/+9
| | | | | | | | | | | | information. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165665 91177308-0d34-0410-b5e6-96231b3b80d8
| * Move TargetData to DataLayout.Micah Villmow2012-10-081-4/+4
| | | | | | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165403 91177308-0d34-0410-b5e6-96231b3b80d8
* | Fix broken dependency for x86 llc.Stephen Hines2012-10-311-1/+1
| | | | | | | | Change-Id: Ifa5c290c6edfca10da3e81ace2246818d079ba9b