[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