[llvm] a91c839 - [MC] Move -save-temp-labels from llvm-mc to MCTargetOptionsCommandFlags

Fangrui Song via llvm-commits llvm-commits at lists.llvm.org
Wed Jun 12 16:47:13 PDT 2024


Author: Fangrui Song
Date: 2024-06-12T16:47:08-07:00
New Revision: a91c8398f22c28618d681497e9856c3a4b8753c3

URL: https://github.com/llvm/llvm-project/commit/a91c8398f22c28618d681497e9856c3a4b8753c3
DIFF: https://github.com/llvm/llvm-project/commit/a91c8398f22c28618d681497e9856c3a4b8753c3.diff

LOG: [MC] Move -save-temp-labels from llvm-mc to MCTargetOptionsCommandFlags

so that tools like llc can use the option as well.
ca91538c9c6f5328f398ac849dcc4230824b007e is a prerequisite.

Added: 
    llvm/test/MC/ELF/twice.ll

Modified: 
    llvm/include/llvm/MC/MCTargetOptionsCommandFlags.h
    llvm/lib/MC/MCTargetOptionsCommandFlags.cpp
    llvm/test/CodeGen/X86/asm-label.ll
    llvm/tools/llvm-mc/llvm-mc.cpp

Removed: 
    llvm/test/MC/ELF/empty-twice.ll


################################################################################
diff  --git a/llvm/include/llvm/MC/MCTargetOptionsCommandFlags.h b/llvm/include/llvm/MC/MCTargetOptionsCommandFlags.h
index fc35eea09c4b3..dc33f7461ab28 100644
--- a/llvm/include/llvm/MC/MCTargetOptionsCommandFlags.h
+++ b/llvm/include/llvm/MC/MCTargetOptionsCommandFlags.h
@@ -49,6 +49,8 @@ bool getNoDeprecatedWarn();
 
 bool getNoTypeCheck();
 
+bool getSaveTempLabels();
+
 bool getX86RelaxRelocations();
 
 std::string getABIName();

diff  --git a/llvm/lib/MC/MCTargetOptionsCommandFlags.cpp b/llvm/lib/MC/MCTargetOptionsCommandFlags.cpp
index 31bfcdc3e4e79..2c378643797da 100644
--- a/llvm/lib/MC/MCTargetOptionsCommandFlags.cpp
+++ b/llvm/lib/MC/MCTargetOptionsCommandFlags.cpp
@@ -46,6 +46,7 @@ MCOPT(bool, FatalWarnings)
 MCOPT(bool, NoWarn)
 MCOPT(bool, NoDeprecatedWarn)
 MCOPT(bool, NoTypeCheck)
+MCOPT(bool, SaveTempLabels)
 MCOPT(bool, X86RelaxRelocations)
 MCOPT(std::string, ABIName)
 MCOPT(std::string, AsSecureLogFile)
@@ -123,6 +124,10 @@ llvm::mc::RegisterMCTargetOptionsFlags::RegisterMCTargetOptionsFlags() {
       "no-type-check", cl::desc("Suppress type errors (Wasm)"));
   MCBINDOPT(NoTypeCheck);
 
+  static cl::opt<bool> SaveTempLabels(
+      "save-temp-labels", cl::desc("Don't discard temporary labels"));
+  MCBINDOPT(SaveTempLabels);
+
   static cl::opt<bool> X86RelaxRelocations(
       "x86-relax-relocations",
       cl::desc(
@@ -156,6 +161,7 @@ MCTargetOptions llvm::mc::InitMCTargetOptionsFromFlags() {
   Options.MCNoWarn = getNoWarn();
   Options.MCNoDeprecatedWarn = getNoDeprecatedWarn();
   Options.MCNoTypeCheck = getNoTypeCheck();
+  Options.MCSaveTempLabels = getSaveTempLabels();
   Options.X86RelaxRelocations = getX86RelaxRelocations();
   Options.EmitDwarfUnwind = getEmitDwarfUnwind();
   Options.EmitCompactUnwindNonCanonical = getEmitCompactUnwindNonCanonical();

diff  --git a/llvm/test/CodeGen/X86/asm-label.ll b/llvm/test/CodeGen/X86/asm-label.ll
index 1da66e74d34f5..05c37db532f87 100644
--- a/llvm/test/CodeGen/X86/asm-label.ll
+++ b/llvm/test/CodeGen/X86/asm-label.ll
@@ -7,6 +7,11 @@
 ; CHECK:        jmp     LBB0_9
 ; CHECK: LBB0_9:                                 ## %cleanup
 
+; RUN: llc -filetype=obj -mtriple=x86_64 -O0 -save-temp-labels < %s | llvm-objdump -d - | FileCheck %s --check-prefix=SAVETEMP
+
+; SAVETEMP:         jne {{.*}} <.LBB0_1>
+; SAVETEMP-LABEL: <.LBB0_1>:
+
 define void @foo()  {
 entry:
   br i1 undef, label %land.lhs.true, label %if.end11

diff  --git a/llvm/test/MC/ELF/empty-twice.ll b/llvm/test/MC/ELF/empty-twice.ll
deleted file mode 100644
index c24bd629c4165..0000000000000
--- a/llvm/test/MC/ELF/empty-twice.ll
+++ /dev/null
@@ -1,6 +0,0 @@
-; Check that there is no persistent state in the ELF emitter that crashes us
-; when we try to reuse the pass manager
-; RUN: llc -compile-twice -filetype=obj %s -o -
-
-target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32"
-target triple = "i386-pc-linux-gnu"

diff  --git a/llvm/test/MC/ELF/twice.ll b/llvm/test/MC/ELF/twice.ll
new file mode 100644
index 0000000000000..fe9817cb12865
--- /dev/null
+++ b/llvm/test/MC/ELF/twice.ll
@@ -0,0 +1,27 @@
+; Check that there is no persistent state in the ELF emitter that crashes us
+; when we try to reuse the pass manager
+; RUN: llc -compile-twice -filetype=obj %s -o -
+
+; RUN: llc -compile-twice -filetype=obj -save-temp-labels %s -o - | llvm-objdump -d - | FileCheck %s
+
+; CHECK-LABEL: <foo>:
+; CHECK:         je {{.*}} <.LBB0_2>
+; CHECK-LABEL: <.LBB0_2>:
+
+target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32"
+target triple = "i386-pc-linux-gnu"
+
+ at var = external local_unnamed_addr global i32
+
+define dso_local void @foo(i32 %a) {
+entry:
+  %tobool.not = icmp eq i32 %a, 0
+  br i1 %tobool.not, label %if.end, label %if.then
+
+if.then:                                          ; preds = %entry
+  store i32 1, ptr @var
+  br label %if.end
+
+if.end:                                           ; preds = %if.then, %entry
+  ret void
+}

diff  --git a/llvm/tools/llvm-mc/llvm-mc.cpp b/llvm/tools/llvm-mc/llvm-mc.cpp
index 506e4f22ef8f5..de999a48d5753 100644
--- a/llvm/tools/llvm-mc/llvm-mc.cpp
+++ b/llvm/tools/llvm-mc/llvm-mc.cpp
@@ -183,10 +183,6 @@ static cl::opt<std::string> MainFileName(
     cl::desc("Specifies the name we should consider the input file"),
     cl::cat(MCCategory));
 
-static cl::opt<bool> SaveTempLabels("save-temp-labels",
-                                    cl::desc("Don't discard temporary labels"),
-                                    cl::cat(MCCategory));
-
 static cl::opt<bool> LexMasmIntegers(
     "masm-integers",
     cl::desc("Enable binary and hex masm integers (0b110 and 0ABCh)"),
@@ -428,9 +424,6 @@ int main(int argc, char **argv) {
       TheTarget->createMCObjectFileInfo(Ctx, PIC, LargeCodeModel));
   Ctx.setObjectFileInfo(MOFI.get());
 
-  if (SaveTempLabels)
-    Ctx.setAllowTemporaryLabels(false);
-
   Ctx.setGenDwarfForAssembly(GenDwarfForAssembly);
   // Default to 4 for dwarf version.
   unsigned DwarfVersion = MCOptions.DwarfVersion ? MCOptions.DwarfVersion : 4;


        


More information about the llvm-commits mailing list