[llvm] 6c2aa37 - MCAsmStreamer: Print symbol equated to a register

Fangrui Song via llvm-commits llvm-commits at lists.llvm.org
Sat Jun 28 18:07:48 PDT 2025


Author: Fangrui Song
Date: 2025-06-28T18:07:43-07:00
New Revision: 6c2aa37fb1fd3802de1fedb0296f38756a30389b

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

LOG: MCAsmStreamer: Print symbol equated to a register

GNU Assembler supports `a = %eax` for x86. We use X86MCExpr to support a
register expression. https://reviews.llvm.org/D47545 added reassignment
support but this code is not necessary.

Added: 
    

Modified: 
    llvm/lib/MC/MCAsmStreamer.cpp
    llvm/test/MC/X86/register-assignment.s

Removed: 
    llvm/test/MC/X86/unused_reg_var_assign.s


################################################################################
diff  --git a/llvm/lib/MC/MCAsmStreamer.cpp b/llvm/lib/MC/MCAsmStreamer.cpp
index c6dbc625642d4..5ce71c024ad64 100644
--- a/llvm/lib/MC/MCAsmStreamer.cpp
+++ b/llvm/lib/MC/MCAsmStreamer.cpp
@@ -690,22 +690,14 @@ void MCAsmStreamer::emitDarwinTargetVariantBuildVersion(
 }
 
 void MCAsmStreamer::emitAssignment(MCSymbol *Symbol, const MCExpr *Value) {
-  // Do not emit a .set on inlined target assignments.
-  bool EmitSet = true;
-  if (auto *E = dyn_cast<MCTargetExpr>(Value))
-    if (E->inlineAssignedExpr())
-      EmitSet = false;
-  if (EmitSet) {
-    bool UseSet = MAI->usesSetToEquateSymbol();
-    if (UseSet)
-      OS << ".set ";
-    Symbol->print(OS, MAI);
-    OS << (UseSet ? ", " : " = ");
-    MAI->printExpr(OS, *Value);
-
-    EmitEOL();
-  }
+  bool UseSet = MAI->usesSetToEquateSymbol();
+  if (UseSet)
+    OS << ".set ";
+  Symbol->print(OS, MAI);
+  OS << (UseSet ? ", " : " = ");
+  MAI->printExpr(OS, *Value);
 
+  EmitEOL();
   MCStreamer::emitAssignment(Symbol, Value);
 }
 

diff  --git a/llvm/test/MC/X86/register-assignment.s b/llvm/test/MC/X86/register-assignment.s
index 4c7b07df050b8..043f010efda2e 100644
--- a/llvm/test/MC/X86/register-assignment.s
+++ b/llvm/test/MC/X86/register-assignment.s
@@ -1,12 +1,14 @@
 // RUN: llvm-mc -triple x86_64-unknown-unknown %s -o -      | FileCheck %s
 // RUN: not llvm-mc -triple x86_64 --defsym ERR=1 %s -o /dev/null 2>&1 | FileCheck %s --check-prefix=ERR
 	
-// CHECK-NOT: .set var_xdata
+// CHECK: var_xdata = %rcx
 var_xdata = %rcx
 
 // CHECK: xorq %rcx, %rcx
 xorq var_xdata, var_xdata
 
+unused_reg = %xmm0
+
 // CHECK: .data
 // CHECK-NEXT: .byte 1	
 .data 

diff  --git a/llvm/test/MC/X86/unused_reg_var_assign.s b/llvm/test/MC/X86/unused_reg_var_assign.s
deleted file mode 100644
index 53e5cd6a2747e..0000000000000
--- a/llvm/test/MC/X86/unused_reg_var_assign.s
+++ /dev/null
@@ -1,3 +0,0 @@
-# RUN: llvm-mc -triple x86_64-unknown-linux-gnu -filetype obj %s -o %t
-	
-reg_i = %xmm0


        


More information about the llvm-commits mailing list