Skip to content

[AArch64] Remove VK_WEAKREF from arm64ec lowering. #141717

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
May 28, 2025

Conversation

efriedma-quic
Copy link
Collaborator

VK_WEAKREF doesn't actually do anything anymore, and it was never really necessary. We set a bit on the MCSymbol to represent the anti-dep semantics.

This patch doesn't delete the VK_WEAKREF enum value because that causes an unrelated issue in CodeGen/AArch64/wineh-try-catch.ll.

VK_WEAKREF doesn't actually do anything anymore, and it was never really
necessary.  We set a bit on the MCSymbol to represent the anti-dep
semantics.

This patch doesn't delete the VK_WEAKREF enum value because that causes
an unrelated issue in CodeGen/AArch64/wineh-try-catch.ll.
@llvmbot
Copy link
Member

llvmbot commented May 28, 2025

@llvm/pr-subscribers-backend-aarch64

Author: Eli Friedman (efriedma-quic)

Changes

VK_WEAKREF doesn't actually do anything anymore, and it was never really necessary. We set a bit on the MCSymbol to represent the anti-dep semantics.

This patch doesn't delete the VK_WEAKREF enum value because that causes an unrelated issue in CodeGen/AArch64/wineh-try-catch.ll.


Full diff: https://github.com/llvm/llvm-project/pull/141717.diff

3 Files Affected:

  • (modified) llvm/lib/Target/AArch64/AArch64MCInstLower.cpp (+2-6)
  • (modified) llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.cpp (-1)
  • (modified) llvm/test/CodeGen/AArch64/arm64ec-varargs.ll (+8-8)
diff --git a/llvm/lib/Target/AArch64/AArch64MCInstLower.cpp b/llvm/lib/Target/AArch64/AArch64MCInstLower.cpp
index 165b7d8ad6330..eb699c75cf10c 100644
--- a/llvm/lib/Target/AArch64/AArch64MCInstLower.cpp
+++ b/llvm/lib/Target/AArch64/AArch64MCInstLower.cpp
@@ -78,14 +78,10 @@ MCSymbol *AArch64MCInstLower::GetGlobalValueSymbol(const GlobalValue *GV,
         Printer.OutStreamer->emitSymbolAttribute(Printer.getSymbol(GV),
                                                  MCSA_WeakAntiDep);
         Printer.OutStreamer->emitAssignment(
-            Printer.getSymbol(GV),
-            MCSymbolRefExpr::create(MangledSym, MCSymbolRefExpr::VK_WEAKREF,
-                                    Ctx));
+            Printer.getSymbol(GV), MCSymbolRefExpr::create(MangledSym, Ctx));
         Printer.OutStreamer->emitSymbolAttribute(MangledSym, MCSA_WeakAntiDep);
         Printer.OutStreamer->emitAssignment(
-            MangledSym,
-            MCSymbolRefExpr::create(Printer.getSymbol(GV),
-                                    MCSymbolRefExpr::VK_WEAKREF, Ctx));
+            MangledSym, MCSymbolRefExpr::create(Printer.getSymbol(GV), Ctx));
       }
 
       if (TargetFlags & AArch64II::MO_ARM64EC_CALLMANGLE)
diff --git a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.cpp b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.cpp
index e8a88f7f31401..31965d85d9eb4 100644
--- a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.cpp
+++ b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.cpp
@@ -33,7 +33,6 @@ static cl::opt<AsmWriterVariantTy> AsmWriterVariant(
 
 const MCAsmInfo::AtSpecifier COFFAtSpecifiers[] = {
     {MCSymbolRefExpr::VK_COFF_IMGREL32, "IMGREL"},
-    {MCSymbolRefExpr::VK_WEAKREF, "WEAKREF"},
     {AArch64MCExpr::M_PAGEOFF, "PAGEOFF"},
 };
 
diff --git a/llvm/test/CodeGen/AArch64/arm64ec-varargs.ll b/llvm/test/CodeGen/AArch64/arm64ec-varargs.ll
index 5796b6f3216a7..5fab5738078dc 100644
--- a/llvm/test/CodeGen/AArch64/arm64ec-varargs.ll
+++ b/llvm/test/CodeGen/AArch64/arm64ec-varargs.ll
@@ -45,9 +45,9 @@ define void @varargs_caller() nounwind {
 ; CHECK-NEXT:    stp x9, x8, [sp]
 ; CHECK-NEXT:    str xzr, [sp, #16]
 ; CHECK-NEXT:    .weak_anti_dep varargs_callee
-; CHECK-NEXT:  .set varargs_callee, "#varargs_callee"@WEAKREF
+; CHECK-NEXT:  .set varargs_callee, "#varargs_callee"
 ; CHECK-NEXT:    .weak_anti_dep "#varargs_callee"
-; CHECK-NEXT:  .set "#varargs_callee", varargs_callee@WEAKREF
+; CHECK-NEXT:  .set "#varargs_callee", varargs_callee
 ; CHECK-NEXT:    bl "#varargs_callee"
 ; CHECK-NEXT:    ldr x30, [sp, #32] // 8-byte Folded Reload
 ; CHECK-NEXT:    add sp, sp, #48
@@ -86,9 +86,9 @@ define void @varargs_many_argscalleer() nounwind {
 ; CHECK-NEXT:    stp x9, x8, [sp]
 ; CHECK-NEXT:    stp q0, q0, [sp, #16]
 ; CHECK-NEXT:    .weak_anti_dep varargs_many_argscallee
-; CHECK-NEXT:  .set varargs_many_argscallee, "#varargs_many_argscallee"@WEAKREF
+; CHECK-NEXT:  .set varargs_many_argscallee, "#varargs_many_argscallee"
 ; CHECK-NEXT:    .weak_anti_dep "#varargs_many_argscallee"
-; CHECK-NEXT:  .set "#varargs_many_argscallee", varargs_many_argscallee@WEAKREF
+; CHECK-NEXT:  .set "#varargs_many_argscallee", varargs_many_argscallee
 ; CHECK-NEXT:    bl "#varargs_many_argscallee"
 ; CHECK-NEXT:    ldr x30, [sp, #48] // 8-byte Folded Reload
 ; CHECK-NEXT:    add sp, sp, #64
@@ -116,9 +116,9 @@ define void @varargs_caller_tail() nounwind {
 ; CHECK-NEXT:    stp x9, x8, [sp]
 ; CHECK-NEXT:    str xzr, [sp, #16]
 ; CHECK-NEXT:    .weak_anti_dep varargs_callee
-; CHECK-NEXT:  .set varargs_callee, "#varargs_callee"@WEAKREF
+; CHECK-NEXT:  .set varargs_callee, "#varargs_callee"
 ; CHECK-NEXT:    .weak_anti_dep "#varargs_callee"
-; CHECK-NEXT:  .set "#varargs_callee", varargs_callee@WEAKREF
+; CHECK-NEXT:  .set "#varargs_callee", varargs_callee
 ; CHECK-NEXT:    bl "#varargs_callee"
 ; CHECK-NEXT:    ldr x30, [sp, #32] // 8-byte Folded Reload
 ; CHECK-NEXT:    add x4, sp, #48
@@ -129,9 +129,9 @@ define void @varargs_caller_tail() nounwind {
 ; CHECK-NEXT:    mov x5, xzr
 ; CHECK-NEXT:    add sp, sp, #48
 ; CHECK-NEXT:    .weak_anti_dep varargs_callee
-; CHECK-NEXT:  .set varargs_callee, "#varargs_callee"@WEAKREF
+; CHECK-NEXT:  .set varargs_callee, "#varargs_callee"
 ; CHECK-NEXT:    .weak_anti_dep "#varargs_callee"
-; CHECK-NEXT:  .set "#varargs_callee", varargs_callee@WEAKREF
+; CHECK-NEXT:  .set "#varargs_callee", varargs_callee
 ; CHECK-NEXT:    b "#varargs_callee"
   call void (double, ...) @varargs_callee(double 1.0, i32 2, double 3.0, i32 4, double 5.0, <2 x double> <double 0.0, double 0.0>)
   tail call void (double, ...) @varargs_callee(double 1.0, i32 4, i32 3, i32 2)

@MaskRay
Copy link
Member

MaskRay commented May 28, 2025

Thanks! Is the Anti -dep semantics documented anywhere?

@efriedma-quic
Copy link
Collaborator Author

#112542 has a description; there's no formal documentation.

Copy link
Contributor

@cjacek cjacek left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@efriedma-quic efriedma-quic merged commit f64cd30 into llvm:main May 28, 2025
13 checks passed
sivan-shani pushed a commit to sivan-shani/llvm-project that referenced this pull request Jun 3, 2025
VK_WEAKREF doesn't actually do anything anymore, and it was never really
necessary. We set a bit on the MCSymbol to represent the anti-dep
semantics.

This patch doesn't delete the VK_WEAKREF enum value because that causes
an unrelated issue in CodeGen/AArch64/wineh-try-catch.ll.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants