path: root/tools/llc
AgeCommit message (Collapse)AuthorFilesLines
2014-05-15Unify command line handling of MCTargetOptions and remove extraEric Christopher1-9/+3
options and code. No functional change. git-svn-id: 91177308-0d34-0410-b5e6-96231b3b80d8
2014-05-06Have the SubtargetFeature help routine just not return a number andEric Christopher1-1/+8
fall back to the normal path without a cpu. While doing this fix llc to just exit when we don't have a module to process instead of asserting. git-svn-id: 91177308-0d34-0410-b5e6-96231b3b80d8
2014-05-05Remove the -disable-cfi option.Rafael Espindola1-3/+0
This also add a release note about it. If this stays I will cleanup MC next week. git-svn-id: 91177308-0d34-0410-b5e6-96231b3b80d8
2014-04-29raw_ostream: Forward declare OpenFlags and include FileSystem.h only where ↵Benjamin Kramer1-0/+1
necessary. git-svn-id: 91177308-0d34-0410-b5e6-96231b3b80d8
2014-04-25[C++] Use 'nullptr'. Tools edition.Craig Topper1-5/+5
git-svn-id: 91177308-0d34-0410-b5e6-96231b3b80d8
2014-04-12llc: Add support for -mcpu=native.Jim Grosbach1-0/+6
When -mcpu=native is passed, autodetect the host CPU and pass that as the CPU name to the TargetMachine factory method. git-svn-id: 91177308-0d34-0410-b5e6-96231b3b80d8
2014-03-06Replace OwningPtr<T> with std::unique_ptr<T>.Ahmed Charles1-7/+6
This compiles with no changes to clang/lld/lldb with MSVC and includes overloads to various functions which are used by those projects and llvm which have OwningPtr's as parameters. This should allow out of tree projects some time to move. There are also no changes to libs/Target, which should help out of tree targets have time to move, if necessary. git-svn-id: 91177308-0d34-0410-b5e6-96231b3b80d8
2014-02-25Use DataLayout from the module when easily available.Rafael Espindola1-3/+2
Eventually DataLayoutPass should go away, but for now that is the only easy way to get a DataLayout in some APIs. This patch only changes the ones that have easy access to a Module. One interesting issue with sometimes using DataLayoutPass and sometimes fetching it from the Module is that we have to make sure they are equivalent. We can get most of the way there by always constructing the pass with a Module. In fact, the pass could be changed to point to an external DataLayout instead of owning one to make this stricter. Unfortunately, the C api passes a DataLayout, so it has to be up to the caller to make sure the pass and the module are in sync. git-svn-id: 91177308-0d34-0410-b5e6-96231b3b80d8
2014-02-25Make DataLayout a plain object, not a pass.Rafael Espindola1-2/+2
Instead, have a DataLayoutPass that holds one. This will allow parts of LLVM don't don't handle passes to also use DataLayout. git-svn-id: 91177308-0d34-0410-b5e6-96231b3b80d8
2014-02-24Replace the F_Binary flag with a F_Text one.Rafael Espindola1-2/+2
After this I will set the default back to F_None. The advantage is that before this patch forgetting to set F_Binary would corrupt a file on windows. Forgetting to set F_Text produces one that cannot be read in notepad, which is a better failure mode :-) git-svn-id: 91177308-0d34-0410-b5e6-96231b3b80d8
2014-02-21Make DisableIntegratedAS a TargetOption.Rafael Espindola1-0/+5
This replaces the old NoIntegratedAssembler with at TargetOption. This is more flexible and will be used to forward clang's -no-integrated-as option. git-svn-id: 91177308-0d34-0410-b5e6-96231b3b80d8
2014-02-21One last pass of DataLayout variable renaming.Rafael Espindola1-2/+2
git-svn-id: 91177308-0d34-0410-b5e6-96231b3b80d8
2014-02-19Refactor TargetOptions initialization into a single place.Eli Bendersky1-20/+1
The same code (~20 lines) for initializing a TargetOptions object from CodeGen cmdline flags is duplicated 4 times in 4 different tools. This patch moves it into a utility function. Since the CodeGen/CommandFlags.h file defines cl::opt flags in a header, it's a bit of a touchy situation because we should only link them into tools. So this patch puts the init function in the header. git-svn-id: 91177308-0d34-0410-b5e6-96231b3b80d8
2014-02-05Remove support for not using .loc directives.Rafael Espindola1-8/+0
Clang itself was not using this. The only way to access it was via llc. git-svn-id: 91177308-0d34-0410-b5e6-96231b3b80d8
2014-01-23Add target analysis passes to the codegen pipeline for MCJIT.Juergen Ributzka1-3/+0
This patch adds the target analysis passes (usually TargetTransformInfo) to the codgen pipeline. We also expose now the AddAnalysisPasses method through the C API, because the optimizer passes would also benefit from better target-specific cost models. Reviewed by Andrew Kaylor git-svn-id: 91177308-0d34-0410-b5e6-96231b3b80d8
2014-01-13Re-sort #include lines again, prior to moving headers around.Chandler Carruth1-2/+2
git-svn-id: 91177308-0d34-0410-b5e6-96231b3b80d8
2014-01-12[PM] Rename the IR printing pass header to a more generic and correctChandler Carruth1-2/+2
name to match the source file which I got earlier. Update the include sites. Also modernize the comments in the header to use the more recommended doxygen style. git-svn-id: 91177308-0d34-0410-b5e6-96231b3b80d8
2014-01-07Move the LLVM IR asm writer header files into the IR directory, as theyChandler Carruth1-1/+1
are part of the core IR library in order to support dumping and other basic functionality. Rename the 'Assembly' include directory to 'AsmParser' to match the library name and the only functionality left their -- printing has been in the core IR library for quite some time. Update all of the #includes to match. All of this started because I wanted to have the layering in good shape before I started adding support for printing LLVM IR using the new pass infrastructure, and commandline support for the new pass infrastructure. git-svn-id: 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-30Port r198087 and r198089 (strip dead code by default) from make to cmake.Nico Weber1-0/+3
git-svn-id: 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-27Strip dead code when linking by default with BFD ld (linux, ...) and ld64 ↵Nico Weber1-0/+3
(os x). This reduces the size of clang-format from 22 MB to 1.8 MB, diagtool goes from 21 MB to 2.8 MB, goes from 29 MB to 20 MB, etc. The size of the bin/ folder shrinks from 270 MB to 200 MB. Targets that support plugins and don't already use EXPORTED_SYMBOL_FILE (which libclang and libLTO already do) can set NO_DEAD_STRIP to opt out. git-svn-id: 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-10[CMake] Update LLVM_LINK_COMPONENTS for each CMakeLists.txt.NAKAMURA Takumi1-1/+12
git-svn-id: 91177308-0d34-0410-b5e6-96231b3b80d8
2013-12-05Export symbols in tools that support loading plugins.Will Dietz1-0/+1
git-svn-id: 91177308-0d34-0410-b5e6-96231b3b80d8
2013-08-01Use function attributes to indicate that we don't want to realign the stack.Bill Wendling1-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: 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-25Replace the "NoFramePointerElimNonLeaf" target option with a function attribute.Bill Wendling1-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: 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-22Recommit r186217 with testcase fix:Bill Wendling1-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: 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-16Add a wrapper for open.Rafael Espindola1-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: 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-13Revert commit r186217 -- this is breaking bots:Chandler Carruth1-0/+1 Original commit log: Use the function attributes to pass along the stack protector buffer size. git-svn-id: 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-12Use the function attributes to pass along the stack protector buffer size.Bill Wendling1-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: 91177308-0d34-0410-b5e6-96231b3b80d8
2013-06-19Test commit access.Wan Xiaofei1-0/+1
git-svn-id: 91177308-0d34-0410-b5e6-96231b3b80d8
2013-04-12Replace uses of the deprecated std::auto_ptr with OwningPtr.Andy Gibbs1-2/+2
git-svn-id: 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-26Manually update the dependencies in the Makefiles. It turns out that allChandler Carruth1-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: 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-26Split out the IRReader header and the utility functions it provides intoChandler Carruth3-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: 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-07Switch TargetTransformInfo from an immutable analysis pass that requiresChandler Carruth1-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: 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-05Convert the TargetTransformInfo from an immutable pass with dynamicChandler Carruth1-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: 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-02Move all of the header files which are involved in modelling the LLVM IRChandler Carruth1-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: 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-02Sort a few more #include lines in tools/... unittests/... and utils/...Chandler Carruth1-1/+1
git-svn-id: 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-11llvm/tools: Add #include "llvm/TargetTransformInfo.h"NAKAMURA Takumi1-0/+1
git-svn-id: 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-04Sort the #include lines for tools/...Chandler Carruth1-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: 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-30Add a -time-compilations=<N> option to llc.Jakob Stoklund Olesen1-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: 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-29One more step towards making doInitialization and doFinalization useful forPedro Artigas1-2/+0
start up and clean up module passes, now that ASAN and TSAN are fixed the tests pass git-svn-id: 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-27Revert r168635 "Step towards implementation of pass manager with ↵Owen Anderson1-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: 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-26Step towards implementation of pass manager with doInitialization and ↵Owen Anderson1-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: 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-15Add doInitialization and doFinalization methods to ModulePass's, to allow ↵Owen Anderson1-0/+2
them to be re-initialized and reused on multiple Module's. Patch by Pedro Artigas. git-svn-id: 91177308-0d34-0410-b5e6-96231b3b80d8
2012-10-18Reapply the TargerTransformInfo changes, minus the changes to LSR and ↵Nadav Rotem1-206/+9
Lowerinvoke. git-svn-id: 91177308-0d34-0410-b5e6-96231b3b80d8
2012-10-18Temporarily revert the TargetTransform changes.Bob Wilson1-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: 91177308-0d34-0410-b5e6-96231b3b80d8
2012-10-10Add a new interface to allow IR-level passes to access codegen-specific ↵Nadav Rotem1-206/+9
information. git-svn-id: 91177308-0d34-0410-b5e6-96231b3b80d8
2012-10-08Move TargetData to DataLayout.Micah Villmow1-4/+4
git-svn-id: 91177308-0d34-0410-b5e6-96231b3b80d8
2012-08-21Add support for the --param ssp-buffer-size= driver option.Chad Rosier1-0/+6
PR9673 git-svn-id: 91177308-0d34-0410-b5e6-96231b3b80d8
2012-08-08Add test triples to fix win32 failures. Revert workaround from r161292.Bob Wilson1-5/+2
I don't have a win32 system to test, so hopefully I got them all fixed here. git-svn-id: 91177308-0d34-0410-b5e6-96231b3b80d8
2012-08-04llc: Try to suppress failures since r161262 .NAKAMURA Takumi1-2/+5
FIXME: Fix several tests on i686-win32 due to lacking of many libraries. git-svn-id: 91177308-0d34-0410-b5e6-96231b3b80d8