]> granicus.if.org Git - clang/commitdiff
Integrated-As: Support -Wa,-L when using the integrated assembler.
authorDaniel Dunbar <daniel@zuster.org>
Mon, 28 Mar 2011 22:49:28 +0000 (22:49 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Mon, 28 Mar 2011 22:49:28 +0000 (22:49 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128433 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Driver/CC1Options.td
include/clang/Frontend/CodeGenOptions.h
lib/CodeGen/BackendUtil.cpp
lib/Driver/Tools.cpp
lib/Frontend/CompilerInvocation.cpp

index 6e1c61c99f5ee319e897c77799013c73bf31cfcc..7c1a9f071e51f5f9c5ee0c71dd7a2af31aef5425 100644 (file)
@@ -160,7 +160,9 @@ def backend_option : Separate<"-backend-option">,
 def mregparm : Separate<"-mregparm">,
   HelpText<"Limit the number of registers available for integer arguments">;
 def mrelax_all : Flag<"-mrelax-all">,
-  HelpText<"Relax all machine instructions">;
+  HelpText<"(integrated-as) Relax all machine instructions">;
+def msave_temp_labels : Flag<"-msave-temp-labels">,
+  HelpText<"(integrated-as) Save temporary labels">;
 def mrtd: Flag<"-mrtd">,
   HelpText<"Make StdCall calling convention the default">;
 def mrelocation_model : Separate<"-mrelocation-model">,
index b49c431817a10921413c5e4c571a373d88d310f6..60a639826259228b3ead46544b3bf62632798d86 100644 (file)
@@ -77,6 +77,7 @@ public:
   unsigned OptimizeSize      : 1; /// If -Os is specified.
   unsigned RelaxAll          : 1; /// Relax all machine code instructions.
   unsigned RelaxedAliasing   : 1; /// Set when -fno-strict-aliasing is enabled.
+  unsigned SaveTempLabels    : 1; /// Save temporary labels.
   unsigned SimplifyLibCalls  : 1; /// Set when -fbuiltin is enabled.
   unsigned SoftFloat         : 1; /// -soft-float.
   unsigned TimePasses        : 1; /// Set when -ftime-report is enabled.
@@ -154,6 +155,7 @@ public:
     OptimizeSize = 0;
     RelaxAll = 0;
     RelaxedAliasing = 0;
+    SaveTempLabels = 0;
     SimplifyLibCalls = 1;
     SoftFloat = 0;
     TimePasses = 0;
index ce64dc78880ba7d7259cad4eb0e8a9a54e428762..6358b9fc154a9abf1bef3f93f8b42694e43b693f 100644 (file)
@@ -268,6 +268,8 @@ bool EmitAssemblyHelper::AddEmitPasses(BackendAction Action,
 
   if (CodeGenOpts.RelaxAll)
     TM->setMCRelaxAll(true);
+  if (CodeGenOpts.SaveTempLabels)
+    TM->setMCSaveTempLabels(true);
 
   // Create the code generator passes.
   PassManager *PM = getCodeGenPasses();
index 721117071ba383617101677c230e3f04340cac09..8ac68ed9520430f9a6a75e1c1b1f6b658312f869 100644 (file)
@@ -950,10 +950,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
         if (Value == "-force_cpusubtype_ALL") {
           // Do nothing, this is the default and we don't support anything else.
         } else if (Value == "-L") {
-          // We don't support -L yet, but it isn't important enough to error
-          // on. No one should really be using it for a semantic change.
-          D.Diag(clang::diag::warn_drv_unsupported_option_argument)
-            << A->getOption().getName() << Value;
+          CmdArgs.push_back("-msave-temp-labels");
         } else {
           D.Diag(clang::diag::err_drv_unsupported_option_argument)
             << A->getOption().getName() << Value;
index 4c7657e20dd20515c3d385445417a571a571c9ee..4fc8b5bdf763cc03e4e1a4a47d36ed863749e536 100644 (file)
@@ -197,6 +197,8 @@ static void CodeGenOptsToArgs(const CodeGenOptions &Opts,
   }
   if (Opts.RelaxAll)
     Res.push_back("-mrelax-all");
+  if (Opts.SaveTempLabels)
+    Res.push_back("-msave-temp-labels");
   if (Opts.SoftFloat)
     Res.push_back("-msoft-float");
   if (Opts.UnwindTables)
@@ -935,6 +937,7 @@ static void ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args, InputKind IK,
   Opts.NumRegisterParameters = Args.getLastArgIntValue(OPT_mregparm, 0, Diags);
   Opts.RelaxAll = Args.hasArg(OPT_mrelax_all);
   Opts.OmitLeafFramePointer = Args.hasArg(OPT_momit_leaf_frame_pointer);
+  Opts.SaveTempLabels = Args.hasArg(OPT_msave_temp_labels);
   Opts.SoftFloat = Args.hasArg(OPT_msoft_float);
   Opts.UnsafeFPMath = Args.hasArg(OPT_cl_unsafe_math_optimizations) ||
                       Args.hasArg(OPT_cl_fast_relaxed_math);