Integrated-As: Add support for setting the AllowTemporaryLabels flag via
authorDaniel Dunbar <daniel@zuster.org>
Mon, 28 Mar 2011 22:49:19 +0000 (22:49 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Mon, 28 Mar 2011 22:49:19 +0000 (22:49 +0000)
integrated-as.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128431 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Target/TargetMachine.h
lib/CodeGen/LLVMTargetMachine.cpp
lib/Target/TargetMachine.cpp

index d2fe1d3c5f74c75803ad5cb584895d612e597344..627ab427ef83ff1e29e9d95c0540ca4bbdf5b9b2 100644 (file)
@@ -106,6 +106,7 @@ protected: // Can only create subclasses.
 
   unsigned MCRelaxAll : 1;
   unsigned MCNoExecStack : 1;
+  unsigned MCSaveTempLabels : 1;
   unsigned MCUseLoc : 1;
 
 public:
@@ -172,6 +173,14 @@ public:
   /// relaxed.
   void setMCRelaxAll(bool Value) { MCRelaxAll = Value; }
 
+  /// hasMCSaveTempLabels - Check whether temporary labels will be preserved
+  /// (i.e., not treated as temporary).
+  bool hasMCSaveTempLabels() const { return MCSaveTempLabels; }
+
+  /// setMCSaveTempLabels - Set whether temporary labels will be preserved
+  /// (i.e., not treated as temporary).
+  void setMCSaveTempLabels(bool Value) { MCSaveTempLabels = Value; }
+
   /// hasMCNoExecStack - Check whether an executable stack is not needed.
   bool hasMCNoExecStack() const { return MCNoExecStack; }
 
index 89013a63cab6a47420de60a332c53b9fb0017403..8c2794a729ac5314a5ac7d98499f3d576c9ab56e 100644 (file)
@@ -126,6 +126,9 @@ bool LLVMTargetMachine::addPassesToEmitFile(PassManagerBase &PM,
     return true;
   assert(Context != 0 && "Failed to get MCContext");
 
+  if (hasMCSaveTempLabels())
+    Context->setAllowTemporaryLabels(false);
+
   const MCAsmInfo &MAI = *getMCAsmInfo();
   OwningPtr<MCStreamer> AsmStreamer;
 
@@ -231,6 +234,9 @@ bool LLVMTargetMachine::addPassesToEmitMC(PassManagerBase &PM,
   if (addCommonCodeGenPasses(PM, OptLevel, DisableVerify, Ctx))
     return true;
 
+  if (hasMCSaveTempLabels())
+    Ctx->setAllowTemporaryLabels(false);
+
   // Create the code emitter for the target if it exists.  If not, .o file
   // emission fails.
   MCCodeEmitter *MCE = getTarget().createCodeEmitter(*this, *Ctx);
index d579d95a99c4c9926515d53c91dc4774128d7bf0..681842ea6b6cb18ed368824cbfdbac9a075a31a6 100644 (file)
@@ -221,6 +221,7 @@ TargetMachine::TargetMachine(const Target &T)
   : TheTarget(T), AsmInfo(0),
     MCRelaxAll(false),
     MCNoExecStack(false),
+    MCSaveTempLabels(false),
     MCUseLoc(true) {
   // Typically it will be subtargets that will adjust FloatABIType from Default
   // to Soft or Hard.