diff options
Diffstat (limited to 'tools/llc/llc.cpp')
-rw-r--r-- | tools/llc/llc.cpp | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/tools/llc/llc.cpp b/tools/llc/llc.cpp index 0a3afe2..bb426a9 100644 --- a/tools/llc/llc.cpp +++ b/tools/llc/llc.cpp @@ -29,8 +29,8 @@ #include "llvm/Support/PluginLoader.h" #include "llvm/Support/PrettyStackTrace.h" #include "llvm/Support/ToolOutputFile.h" -#include "llvm/System/Host.h" -#include "llvm/System/Signals.h" +#include "llvm/Support/Host.h" +#include "llvm/Support/Signals.h" #include "llvm/Target/SubtargetFeature.h" #include "llvm/Target/TargetData.h" #include "llvm/Target/TargetMachine.h" @@ -96,6 +96,8 @@ FileType("filetype", cl::init(TargetMachine::CGFT_AssemblyFile), cl::opt<bool> NoVerify("disable-verify", cl::Hidden, cl::desc("Do not verify input module")); +cl::opt<bool> DisableDotLoc("disable-dot-loc", cl::Hidden, + cl::desc("Do not use .loc entries")); static cl::opt<bool> DisableRedZone("disable-red-zone", @@ -274,6 +276,21 @@ int main(int argc, char **argv) { assert(target.get() && "Could not allocate target machine!"); TargetMachine &Target = *target.get(); + if (DisableDotLoc) + Target.setMCUseLoc(false); + if (TheTriple.getOS() == Triple::Darwin) { + switch (TheTriple.getDarwinMajorNumber()) { + case 7: + case 8: + case 9: + // disable .loc support for older darwin OS. + Target.setMCUseLoc(false); + break; + default: + break; + } + } + // Figure out where we are going to send the output... OwningPtr<tool_output_file> Out (GetOutputStream(TheTarget->getName(), TheTriple.getOS(), argv[0])); |