aboutsummaryrefslogtreecommitdiffstats
path: root/tools/llc/llc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/llc/llc.cpp')
-rw-r--r--tools/llc/llc.cpp21
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]));