diff options
author | Stephen Hines <srhines@google.com> | 2012-08-23 19:08:53 -0700 |
---|---|---|
committer | Stephen Hines <srhines@google.com> | 2012-08-23 19:08:53 -0700 |
commit | 31675153bd2d7617db8cb6aeb58054934c7b9f73 (patch) | |
tree | c1970fcebc736d4f731db0559a79a7ac5cb0f8bf /tools/llc | |
parent | 416bb6a168a9316547db6ce3909c515f70a84f52 (diff) | |
parent | 75dd7f0c4a2b3fb9e9d4d5a0517591810c57ed92 (diff) | |
download | external_llvm-31675153bd2d7617db8cb6aeb58054934c7b9f73.zip external_llvm-31675153bd2d7617db8cb6aeb58054934c7b9f73.tar.gz external_llvm-31675153bd2d7617db8cb6aeb58054934c7b9f73.tar.bz2 |
Merge branch 'upstream' into merge_2
Conflicts:
lib/Target/ARM/ARMCodeEmitter.cpp
Change-Id: I6702d340c733e9721499b5d85b13b96ad9c14eb5
Diffstat (limited to 'tools/llc')
-rw-r--r-- | tools/llc/llc.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/tools/llc/llc.cpp b/tools/llc/llc.cpp index 004763f..81f297f 100644 --- a/tools/llc/llc.cpp +++ b/tools/llc/llc.cpp @@ -35,6 +35,7 @@ #include "llvm/Support/TargetRegistry.h" #include "llvm/Support/TargetSelect.h" #include "llvm/Target/TargetData.h" +#include "llvm/Target/TargetLibraryInfo.h" #include "llvm/Target/TargetMachine.h" #include <memory> using namespace llvm; @@ -214,6 +215,11 @@ DontPlaceZerosInBSS("nozero-initialized-in-bss", cl::init(false)); static cl::opt<bool> +DisableSimplifyLibCalls("disable-simplify-libcalls", + cl::desc("Disable simplify-libcalls"), + cl::init(false)); + +static cl::opt<bool> EnableGuaranteedTailCallOpt("tailcallopt", cl::desc("Turn fastcc calls into tail calls by (potentially) changing ABI."), cl::init(false)); @@ -262,6 +268,11 @@ static cl::opt<std::string> StartAfter("start-after", cl::value_desc("pass-name"), cl::init("")); +static cl::opt<unsigned> +SSPBufferSize("stack-protector-buffer-size", cl::init(8), + cl::desc("Lower bound for a buffer to be considered for " + "stack protection")); + // GetFileNameRoot - Helper function to get the basename of a filename. static inline std::string GetFileNameRoot(const std::string &InputFilename) { @@ -453,6 +464,7 @@ int main(int argc, char **argv) { Options.PositionIndependentExecutable = EnablePIE; Options.EnableSegmentedStacks = SegmentedStacks; Options.UseInitArray = UseInitArray; + Options.SSPBufferSize = SSPBufferSize; std::auto_ptr<TargetMachine> target(TheTarget->createTargetMachine(TheTriple.getTriple(), @@ -487,6 +499,12 @@ int main(int argc, char **argv) { // Build up all of the passes that we want to do to the module. PassManager PM; + // Add an appropriate TargetLibraryInfo pass for the module's triple. + TargetLibraryInfo *TLI = new TargetLibraryInfo(TheTriple); + if (DisableSimplifyLibCalls) + TLI->disableAllFunctions(); + PM.add(TLI); + // Add the target data from the target machine, if it exists, or the module. if (const TargetData *TD = Target.getTargetData()) PM.add(new TargetData(*TD)); |