[llvm] [TargetLowering][COFF] Allow GlobalAlias in lowerRelativeReference (PR #220674)
Eli Friedman via llvm-commits
llvm-commits at lists.llvm.org
Tue Sep 15 20:52:52 PDT 2026
================
@@ -1,11 +1,37 @@
; RUN: llc -mtriple=x86_64-pc-win32 %s -o - | FileCheck %s --check-prefix=X64
+; RUN: llc -mtriple=x86_64-pc-win32 -filetype=obj %s -o - | llvm-readobj -r - | FileCheck %s --check-prefix=RELOC
@__ImageBase = external global i8
-; X64: .quad "?x@@3HA"@IMGREL
-@"\01?x@@3HA" = global i64 sub nsw (i64 ptrtoint (ptr @"\01?x@@3HA" to i64), i64 ptrtoint (ptr @__ImageBase to i64)), align 8
+; X64: .long "?x@@3HA"@IMGREL
+; RELOC: IMAGE_REL_AMD64_ADDR32NB ?x@@3HA
+@"\01?x@@3HA" = global i32 trunc (i64 sub nsw (i64 ptrtoint (ptr @"\01?x@@3HA" to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), align 4
declare void @f()
-; X64: .quad f at IMGREL
- at fp = global i64 sub nsw (i64 ptrtoint (ptr @f to i64), i64 ptrtoint (ptr @__ImageBase to i64)), align 8
+; X64: .long f at IMGREL
+; RELOC: IMAGE_REL_AMD64_ADDR32NB f
+ at fp = global i32 trunc (i64 sub nsw (i64 ptrtoint (ptr @f to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), align 4
+
+ at target = internal global i32 42
+ at alias = hidden alias i32, ptr @target
+
+; X64: .long alias at IMGREL
+; RELOC: IMAGE_REL_AMD64_ADDR32NB alias
+ at alias_ref = global i32 trunc (i64 sub nsw (i64 ptrtoint (ptr @alias to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), align 4
+
+define internal void @func() {
+ ret void
+}
+ at func_alias = hidden alias void (), ptr @func
+
+; X64: .long func_alias at IMGREL
+; RELOC: IMAGE_REL_AMD64_ADDR32NB func_alias
+ at func_alias_ref = global i32 trunc (i64 sub nsw (i64 ptrtoint (ptr @func_alias to i64), i64 ptrtoint (ptr @__ImageBase to i64)) to i32), align 4
+
+; X64: .long alias at IMGREL+4
----------------
efriedma-quic wrote:
Can we also check that the immediate is correctly encoded?
https://github.com/llvm/llvm-project/pull/220674
More information about the llvm-commits
mailing list