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
