Author: Shimin Cui
Date: 2026-10-28T11:54:59-04:00
New Revision: 86a58fc0154ba91a281681db1657a2b272b1f119

URL: 
https://github.com/llvm/llvm-project/commit/86a58fc0154ba91a281681db1657a2b272b1f119
DIFF: 
https://github.com/llvm/llvm-project/commit/86a58fc0154ba91a281681db1657a2b272b1f119.diff

LOG: [SystemZ] [HLASM] Print address constant type with value of size (#236296)

Currently the address constant type is emitted as `AD` which has
implicit value of size 8. This is to change to print the address
constant type with implicit or explicit value for the real size.

Added: 
    

Modified: 
    clang/test/CodeGen/SystemZ/systemz-ppa2.c
    llvm/lib/Target/SystemZ/MCTargetDesc/SystemZHLASMAsmStreamer.cpp
    llvm/test/CodeGen/SystemZ/zos-hlasm-out.ll
    llvm/test/CodeGen/SystemZ/zos-ppa1-name.ll
    llvm/test/CodeGen/SystemZ/zos-ppa1.ll
    llvm/test/CodeGen/SystemZ/zos-ppa2.ll

Removed: 
    


################################################################################
diff  --git a/clang/test/CodeGen/SystemZ/systemz-ppa2.c 
b/clang/test/CodeGen/SystemZ/systemz-ppa2.c
index f7cb5bcb1f3bfd..1639a123a562bd 100644
--- a/clang/test/CodeGen/SystemZ/systemz-ppa2.c
+++ b/clang/test/CodeGen/SystemZ/systemz-ppa2.c
@@ -14,7 +14,7 @@
 // CHECK-C-NEXT:   DC  XL1'00'
 // CHECK-C-NEXT:   DC  XL1'22'
 // CHECK-C-NEXT:   DC  XL1'04'
-// CHECK-C-NEXT:   DC AD(CELQSTRT-[[PPA2]])
+// CHECK-C-NEXT:   DC A(CELQSTRT-[[PPA2]])
 
 // RUN: %clang_cc1 -triple s390x-ibm-zos -xc++ -S -o - %s | FileCheck %s 
--check-prefix CHECK-CXX
 // CHECK-CXX:        [[PPA2:(.L)|(L#)PPA2]] DS 0H
@@ -22,4 +22,4 @@
 // CHECK-CXX-NEXT:   DC  XL1'01'
 // CHECK-CXX-NEXT:   DC  XL1'22'
 // CHECK-CXX-NEXT:   DC  XL1'04'
-// CHECK-CXX-NEXT:   DC AD(CELQSTRT-[[PPA2]])
+// CHECK-CXX-NEXT:   DC A(CELQSTRT-[[PPA2]])

diff  --git a/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZHLASMAsmStreamer.cpp 
b/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZHLASMAsmStreamer.cpp
index 3a18575f9757f7..1f1c394631daf5 100644
--- a/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZHLASMAsmStreamer.cpp
+++ b/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZHLASMAsmStreamer.cpp
@@ -518,6 +518,17 @@ void SystemZHLASMAsmStreamer::emitLabel(MCSymbol *Symbol, 
SMLoc Loc) {
   }
 }
 
+// Print the HLASM address constant type for a value of the given size:
+// A(...) is a fullword, AD(...) a doubleword, AL<n>(...) any other length.
+static void printAddrConstPrefix(raw_ostream &OS, unsigned Size) {
+  if (Size == 4)
+    OS << "A(";
+  else if (Size == 8)
+    OS << "AD(";
+  else
+    OS << "AL" << Size << '(';
+}
+
 bool SystemZHLASMAsmStreamer::emitSymbolAttribute(MCSymbol *Sym,
                                                   MCSymbolAttr Attribute) {
   return static_cast<MCSymbolGOFF *>(Sym)->setSymbolAttribute(Attribute);
@@ -564,7 +575,7 @@ void SystemZHLASMAsmStreamer::emitHLASMValueImpl(const 
MCExpr *Value,
     }
 
     if (Parens)
-      OS << "AD(";
+      printAddrConstPrefix(OS, Size);
     emitHLASMValueImpl(BE.getLHS(), Size);
 
     switch (BE.getOpcode()) {
@@ -602,7 +613,7 @@ void SystemZHLASMAsmStreamer::emitHLASMValueImpl(const 
MCExpr *Value,
   default:
     Parens &= isa<MCSymbolRefExpr>(Value);
     if (Parens)
-      OS << "AD(";
+      printAddrConstPrefix(OS, Size);
     MAI->printExpr(OS, *Value);
     if (Parens)
       OS << ')';

diff  --git a/llvm/test/CodeGen/SystemZ/zos-hlasm-out.ll 
b/llvm/test/CodeGen/SystemZ/zos-hlasm-out.ll
index 6ef88083814b38..10a860ec2646b3 100644
--- a/llvm/test/CodeGen/SystemZ/zos-hlasm-out.ll
+++ b/llvm/test/CodeGen/SystemZ/zos-hlasm-out.ll
@@ -16,9 +16,9 @@ define void @foo() {
 ; CHECK: DC XL1'E7'
 ; CHECK: DC XL1'22'
 ; CHECK: DC XL1'04'
-; CHECK: DC AD(CELQSTRT-L#PPA2)
+; CHECK: DC A(CELQSTRT-L#PPA2)
 ; CHECK: DC XL4'00000000'
-; CHECK: DC AD(L#DVS-L#PPA2)
+; CHECK: DC A(L#DVS-L#PPA2)
 ; CHECK: DC XL4'00000000'
 ; CHECK: DC XL1'81'
 ; CHECK: DC XL1'00'
@@ -43,16 +43,16 @@ define void @foo() {
 ; CHECK: DC XL1'02'
 ; CHECK: DC XL1'CE'
 ; CHECK: DC XL2'0300'
-; CHECK: DC AD(L#PPA2-L#PPA1_foo_0)
+; CHECK: DC A(L#PPA2-L#PPA1_foo_0)
 ; CHECK: DC XL1'80'
 ; CHECK: DC XL1'80'
 ; CHECK: DC XL1'00'
 ; CHECK: DC XL1'81'
 ; CHECK: DC XL2'0000'
-; CHECK: DC AD(L#foo_end_0-L#EPM_foo_0)
+; CHECK: DC A(L#foo_end_0-L#EPM_foo_0)
 ; CHECK: DC XL2'0003'
 ; CHECK: DC XL3'869696'
-; CHECK: DC AD(L#EPM_foo_0-L#PPA1_foo_0)
+; CHECK: DC A(L#EPM_foo_0-L#PPA1_foo_0)
 ; CHECK: C_WSA64 CATTR 
ALIGN(4),FILL(0),DEFLOAD,NOTEXECUTABLE,RMODE(64),PART(stdi
 ; CHECK:                in#S)
 ; CHECK: stdin#S XATTR LINKAGE(XPLINK),REFERENCE(DATA),SCOPE(SECTION)

diff  --git a/llvm/test/CodeGen/SystemZ/zos-ppa1-name.ll 
b/llvm/test/CodeGen/SystemZ/zos-ppa1-name.ll
index 409b3dfc90360a..53953570b5f292 100644
--- a/llvm/test/CodeGen/SystemZ/zos-ppa1-name.ll
+++ b/llvm/test/CodeGen/SystemZ/zos-ppa1-name.ll
@@ -5,7 +5,7 @@
 ; CHECK: L#EPM_sourcename_0 DS 0H
 ; CHECK-NEXT: DC XL7'00C300C500C500'
 ; CHECK-NEXT: DC XL1'F1'
-; CHECK-NEXT: DC AD(L#PPA1_sourcename_0-L#EPM_sourcename_0)
+; CHECK-NEXT: DC A(L#PPA1_sourcename_0-L#EPM_sourcename_0)
 ; CHECK-NEXT: DC XL4'00000008'
 ; CHECK-NEXT: ENTRY sourcename
 ; CHECK:sourcename DS 0H
@@ -23,7 +23,7 @@ attributes #0 = { "zos-ppa1-name"="name" }
 ; CHECK-NEXT: DC XL1'02'
 ; CHECK-NEXT: DC XL1'CE'
 ; CHECK-NEXT: DC XL2'0000'
-; CHECK-NEXT: DC AD(L#PPA2-L#PPA1_sourcename_0)
+; CHECK-NEXT: DC A(L#PPA2-L#PPA1_sourcename_0)
 ; CHECK-NEXT: DC XL1'80'
 ; CHECK-NEXT: DC XL1'80'
 ; CHECK-NEXT: DC XL1'00'
@@ -31,8 +31,8 @@ attributes #0 = { "zos-ppa1-name"="name" }
 ; CHECK-NEXT: DC XL2'0000'
 ; CHECK-NEXT: DC XL1'00'
 ; CHECK-NEXT: DC XL1'00'
-; CHECK-NEXT: DC AD(L#sourcename_end_0-L#EPM_sourcename_0)
+; CHECK-NEXT: DC A(L#sourcename_end_0-L#EPM_sourcename_0)
 ; CHECK-NEXT: DC XL2'0004'
 ; CHECK-NEXT: DC XL4'95819485'
 ; CHECK-NEXT: DC 2XL1'00'
-; CHECK-NEXT: DC AD(L#EPM_sourcename_0-L#PPA1_sourcename_0)
+; CHECK-NEXT: DC A(L#EPM_sourcename_0-L#PPA1_sourcename_0)

diff  --git a/llvm/test/CodeGen/SystemZ/zos-ppa1.ll 
b/llvm/test/CodeGen/SystemZ/zos-ppa1.ll
index c1f8f9a8d77df1..184bf068134e56 100644
--- a/llvm/test/CodeGen/SystemZ/zos-ppa1.ll
+++ b/llvm/test/CodeGen/SystemZ/zos-ppa1.ll
@@ -10,7 +10,7 @@ define i32 @leaf(i32 signext %arg) {
 ; CHECK-NEXT: * Mark Type C'1'
 ; CHECK-NEXT:  DC XL1'F1'
 ; CHECK-NEXT: * Offset to PPA1
-; CHECK-NEXT:  DC AD(L#PPA1_leaf_0-L#EPM_leaf_0)
+; CHECK-NEXT:  DC A(L#PPA1_leaf_0-L#EPM_leaf_0)
 ; CHECK-NEXT: * DSA Size 0x0
 ; CHECK-NEXT: * Entry Flags
 ; CHECK-NEXT: *   Bit 1: 1 = Leaf function
@@ -36,7 +36,7 @@ define i32 @nonleaf(i32 signext %arg) {
 ; CHECK-NEXT: * Mark Type C'1'
 ; CHECK-NEXT:  DC XL1'F1'
 ; CHECK-NEXT: * Offset to PPA1
-; CHECK-NEXT:  DC AD(L#PPA1_nonleaf_0-L#EPM_nonleaf_0)
+; CHECK-NEXT:  DC A(L#PPA1_nonleaf_0-L#EPM_nonleaf_0)
 ; CHECK-NEXT: * DSA Size 0xc0
 ; CHECK-NEXT: * Entry Flags
 ; CHECK-NEXT: *   Bit 1: 0 = Non-leaf function
@@ -64,7 +64,7 @@ define i32 @withalloca(i32 signext %arg) {
 ; CHECK-NEXT: * Mark Type C'1'
 ; CHECK-NEXT:  DC XL1'F1'
 ; CHECK-NEXT: * Offset to PPA1
-; CHECK-NEXT:  DC AD(L#PPA1_withalloca_0-L#EPM_withalloca_0)
+; CHECK-NEXT:  DC A(L#PPA1_withalloca_0-L#EPM_withalloca_0)
 ; CHECK-NEXT: * DSA Size 0xc0
 ; CHECK-NEXT: * Entry Flags
 ; CHECK-NEXT: *   Bit 1: 0 = Non-leaf function
@@ -95,7 +95,7 @@ declare i32 @other(ptr, i32)
 ; CHECK-NEXT: * Saved GPR Mask
 ; CHECK-NEXT:  DC XL2'0000'
 ; CHECK-NEXT: * Offset to PPA2
-; CHECK-NEXT:  DC AD(L#PPA2-L#PPA1_leaf_0)
+; CHECK-NEXT:  DC A(L#PPA2-L#PPA1_leaf_0)
 ; CHECK-NEXT: * PPA1 Flags 1
 ; CHECK-NEXT: *   Bit 0: 1 = 64-bit DSA
 ; CHECK-NEXT:  DC XL1'80'
@@ -117,13 +117,13 @@ declare i32 @other(ptr, i32)
 ; CHECK-NEXT: *   Bit 4-8: Offset
 ; CHECK-NEXT:  DC XL1'00'
 ; CHECK-NEXT: * Length of Code
-; CHECK-NEXT:  DC AD(L#leaf_end_0-L#EPM_leaf_0)
+; CHECK-NEXT:  DC A(L#leaf_end_0-L#EPM_leaf_0)
 ; CHECK-NEXT: * Length of Name
 ; CHECK-NEXT:  DC XL2'0004'
 ; CHECK-NEXT: * Name of Function
 ; CHECK-NEXT:  DC XL4'93858186'
 ; CHECK-NEXT:  DC 2XL1'00'
-; CHECK-NEXT:  DC AD(L#EPM_leaf_0-L#PPA1_leaf_0)
+; CHECK-NEXT:  DC A(L#EPM_leaf_0-L#PPA1_leaf_0)
 ; CHECK-NEXT:  DS 0B
 ; CHECK-NEXT: * PPA1
 ; CHECK-NEXT: L#PPA1_nonleaf_0 DS 0H
@@ -134,7 +134,7 @@ declare i32 @other(ptr, i32)
 ; CHECK-NEXT: * Saved GPR Mask
 ; CHECK-NEXT:  DC XL2'0300'
 ; CHECK-NEXT: * Offset to PPA2
-; CHECK-NEXT:  DC AD(L#PPA2-L#PPA1_nonleaf_0)
+; CHECK-NEXT:  DC A(L#PPA2-L#PPA1_nonleaf_0)
 ; CHECK-NEXT: * PPA1 Flags 1
 ; CHECK-NEXT: *   Bit 0: 1 = 64-bit DSA
 ; CHECK-NEXT:  DC XL1'80'
@@ -151,20 +151,20 @@ declare i32 @other(ptr, i32)
 ; CHECK-NEXT:  DC XL2'0002'
 ; CHECK-NEXT: L#tmp0 EQU L#end_of_prologue0-nonleaf
 ; CHECK-NEXT: * Length/2 of Prolog
-; CHECK-NEXT:  DC AD(L#tmp0/2)
+; CHECK-NEXT:  DC AL1(L#tmp0/2)
 ; CHECK-NEXT: L#tmp1 EQU L#stack_update0-nonleaf
 ; CHECK-NEXT: * Alloca Reg + Offset/2 to SP Update
 ; CHECK-NEXT: *   Bit 0-3: Register R0
 ; CHECK-NEXT: *   Bit 4-8: Offset
-; CHECK-NEXT:  DC AD(L#tmp1/2),XL1'00'
+; CHECK-NEXT:  DC AL1(L#tmp1/2),XL1'00'
 ; CHECK-NEXT: * Length of Code
-; CHECK-NEXT:  DC AD(L#nonleaf_end_0-L#EPM_nonleaf_0)
+; CHECK-NEXT:  DC A(L#nonleaf_end_0-L#EPM_nonleaf_0)
 ; CHECK-NEXT: * Length of Name
 ; CHECK-NEXT:  DC XL2'0007'
 ; CHECK-NEXT: * Name of Function
 ; CHECK-NEXT:  DC XL7'95969593858186'
 ; CHECK-NEXT:  DC 3XL1'00'
-; CHECK-NEXT:  DC AD(L#EPM_nonleaf_0-L#PPA1_nonleaf_0)
+; CHECK-NEXT:  DC A(L#EPM_nonleaf_0-L#PPA1_nonleaf_0)
 ; CHECK-NEXT:  DS 0B
 ; CHECK-NEXT: * PPA1
 ; CHECK-NEXT: L#PPA1_withalloca_0 DS 0H
@@ -175,7 +175,7 @@ declare i32 @other(ptr, i32)
 ; CHECK-NEXT: * Saved GPR Mask
 ; CHECK-NEXT:  DC XL2'0FE0'
 ; CHECK-NEXT: * Offset to PPA2
-; CHECK-NEXT:  DC AD(L#PPA2-L#PPA1_withalloca_0)
+; CHECK-NEXT:  DC A(L#PPA2-L#PPA1_withalloca_0)
 ; CHECK-NEXT: * PPA1 Flags 1
 ; CHECK-NEXT: *   Bit 0: 1 = 64-bit DSA
 ; CHECK-NEXT:  DC XL1'80'
@@ -193,14 +193,14 @@ declare i32 @other(ptr, i32)
 ; CHECK-NEXT:  DC XL2'0002'
 ; CHECK-NEXT: L#tmp2 EQU L#end_of_prologue1-withalloca
 ; CHECK-NEXT: * Length/2 of Prolog
-; CHECK-NEXT:  DC AD(L#tmp2/2)
+; CHECK-NEXT:  DC AL1(L#tmp2/2)
 ; CHECK-NEXT: L#tmp3 EQU L#stack_update1-withalloca
 ; CHECK-NEXT: * Alloca Reg + Offset/2 to SP Update
 ; CHECK-NEXT: *   Bit 0-3: Register R8
 ; CHECK-NEXT: *   Bit 4-8: Offset
-; CHECK-NEXT:  DC AD(L#tmp3/2),XL1'80'
+; CHECK-NEXT:  DC AL1(L#tmp3/2),XL1'80'
 ; CHECK-NEXT: * Length of Code
-; CHECK-NEXT:  DC AD(L#withalloca_end_0-L#EPM_withalloca_0)
+; CHECK-NEXT:  DC A(L#withalloca_end_0-L#EPM_withalloca_0)
 ; CHECK-NEXT: * Argument Area Length
 ; CHECK-NEXT:  DC XL4'00000040'
 ; CHECK-NEXT: * Length of Name
@@ -208,7 +208,7 @@ declare i32 @other(ptr, i32)
 ; CHECK-NEXT: * Name of Function
 ; CHECK-NEXT:  DC XL10'A689A388819393968381'
 ; CHECK-NEXT:  DC 4XL1'00'
-; CHECK-NEXT:  DC AD(L#EPM_withalloca_0-L#PPA1_withalloca_0)
+; CHECK-NEXT:  DC A(L#EPM_withalloca_0-L#PPA1_withalloca_0)
 
 ; Attribute "zos-ppa1-name"="" removes the function name from PPA1.
 ; CHECK: * PPA1
@@ -224,8 +224,8 @@ declare i32 @other(ptr, i32)
 ; CHECK-NEXT: *   Bit 4-8: Offset
 ; CHECK-NEXT:  DC XL1'00'
 ; CHECK-NEXT: * Length of Code
-; CHECK-NEXT:  DC AD(L#no_name_end_0-L#EPM_no_name_0)
-; CHECK-NEXT:  DC AD(L#EPM_no_name_0-L#PPA1_no_name_0)
+; CHECK-NEXT:  DC A(L#no_name_end_0-L#EPM_no_name_0)
+; CHECK-NEXT:  DC A(L#EPM_no_name_0-L#PPA1_no_name_0)
 define void @no_name() #0 {
 entry:
   ret void

diff  --git a/llvm/test/CodeGen/SystemZ/zos-ppa2.ll 
b/llvm/test/CodeGen/SystemZ/zos-ppa2.ll
index d7c5fe4e18f300..ad50945c8fe307 100644
--- a/llvm/test/CodeGen/SystemZ/zos-ppa2.ll
+++ b/llvm/test/CodeGen/SystemZ/zos-ppa2.ll
@@ -12,9 +12,9 @@
 ; CHECK:  DC XL1'E7'
 ; CHECK:  DC XL1'22'
 ; CHECK:  DC XL1'04'
-; CHECK:  DC AD(CELQSTRT-L#PPA2)
+; CHECK:  DC A(CELQSTRT-L#PPA2)
 ; CHECK:  DC XL4'00000000'
-; CHECK:  DC AD(L#DVS-L#PPA2)
+; CHECK:  DC A(L#DVS-L#PPA2)
 ; CHECK:  DC XL4'00000000'
 ; CHECK:  DC XL1'BYTE'
 ; CHECK:  DC XL1'00'
@@ -33,7 +33,7 @@
 
 ; CHECK: L#EPM_void_test_0 DS 0H
 ; CHECK: * Offset to PPA1
-; CHECK:  DC AD(L#PPA1_void_test_0-L#EPM_void_test_0)
+; CHECK:  DC A(L#PPA1_void_test_0-L#EPM_void_test_0)
  
 ; CHECK: B_IDRL CATTR ALIGN(3),FILL(0),NOLOAD,READONLY,RMODE(64)
 ; CHECK:  DC XL1'00'


        
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to