[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