[clang] [llvm] [GOFF][z/OS] Change PrivateGlobalPrefix and PrivateLabelPrefix to be L# (PR #85730)

2024-03-19 Thread Neumann Hon via cfe-commits

https://github.com/Everybody0523 updated 
https://github.com/llvm/llvm-project/pull/85730

>From 37ab123e23e140ee6534804ea22b62f2cc47aa20 Mon Sep 17 00:00:00 2001
From: Neumann Hon 
Date: Mon, 18 Mar 2024 23:16:26 -0400
Subject: [PATCH 1/4] Change prefix from @/@@ to L#

---
 llvm/lib/MC/MCAsmInfoGOFF.cpp|  4 ++--
 llvm/test/CodeGen/SystemZ/zos-ada-relocations.ll |  6 +++---
 llvm/test/CodeGen/SystemZ/zos-landingpad.ll  |  2 +-
 llvm/test/CodeGen/SystemZ/zos-ppa2.ll| 14 +++---
 llvm/test/CodeGen/SystemZ/zos-prologue-epilog.ll | 14 +++---
 llvm/test/MC/GOFF/ppa1.ll| 10 +-
 llvm/unittests/IR/ManglerTest.cpp|  2 +-
 7 files changed, 26 insertions(+), 26 deletions(-)

diff --git a/llvm/lib/MC/MCAsmInfoGOFF.cpp b/llvm/lib/MC/MCAsmInfoGOFF.cpp
index 81704ffe4b2460..3c81a466e82e79 100644
--- a/llvm/lib/MC/MCAsmInfoGOFF.cpp
+++ b/llvm/lib/MC/MCAsmInfoGOFF.cpp
@@ -21,7 +21,7 @@ void MCAsmInfoGOFF::anchor() {}
 MCAsmInfoGOFF::MCAsmInfoGOFF() {
   Data64bitsDirective = "\t.quad\t";
   HasDotTypeDotSizeDirective = false;
-  PrivateGlobalPrefix = "@@";
-  PrivateLabelPrefix = "@";
+  PrivateGlobalPrefix = "L#";
+  PrivateLabelPrefix = "L#";
   ZeroDirective = "\t.space\t";
 }
diff --git a/llvm/test/CodeGen/SystemZ/zos-ada-relocations.ll 
b/llvm/test/CodeGen/SystemZ/zos-ada-relocations.ll
index e25246917ec099..db67ac57818680 100644
--- a/llvm/test/CodeGen/SystemZ/zos-ada-relocations.ll
+++ b/llvm/test/CodeGen/SystemZ/zos-ada-relocations.ll
@@ -56,9 +56,9 @@ entry:
 declare signext i32 @callout(i32 signext)
 
 ; CHECK: .section".ada"
-; CHECK:  .set @@DoFunc@indirect0, DoFunc
-; CHECK:  .indirect_symbol   @@DoFunc@indirect0
-; CHECK:  .quad V(@@DoFunc@indirect0)  * Offset 0 pointer to function 
descriptor DoFunc
+; CHECK:  .set L#DoFunc@indirect0, DoFunc
+; CHECK:  .indirect_symbol   L#DoFunc@indirect0
+; CHECK:  .quad V(L#DoFunc@indirect0)  * Offset 0 pointer to function 
descriptor DoFunc
 ; CHECK:  .quad R(Caller)  * Offset 8 function descriptor 
of Caller
 ; CHECK:  .quad V(Caller)
 ; CHECK:  .quad A(i2)   * Offset 24 pointer to data 
symbol i2
diff --git a/llvm/test/CodeGen/SystemZ/zos-landingpad.ll 
b/llvm/test/CodeGen/SystemZ/zos-landingpad.ll
index 7f3214d574242b..9db10114e9795f 100644
--- a/llvm/test/CodeGen/SystemZ/zos-landingpad.ll
+++ b/llvm/test/CodeGen/SystemZ/zos-landingpad.ll
@@ -19,7 +19,7 @@ done:
 lpad:
   %0 = landingpad { ptr, i32 } cleanup
 ; The Exception Pointer is %r1; the Exception Selector, %r2.
-; CHECK: @BB{{[^%]*}} %lpad
+; CHECK: L#BB{{[^%]*}} %lpad
 ; CHECK-DAG: stg 1, {{.*}}
 ; CHECK-DAG: st 2, {{.*}}
   %1 = extractvalue { ptr, i32 } %0, 0
diff --git a/llvm/test/CodeGen/SystemZ/zos-ppa2.ll 
b/llvm/test/CodeGen/SystemZ/zos-ppa2.ll
index 60580aeb6d83cc..189b5a3757ee07 100644
--- a/llvm/test/CodeGen/SystemZ/zos-ppa2.ll
+++ b/llvm/test/CodeGen/SystemZ/zos-ppa2.ll
@@ -2,24 +2,24 @@
 ; REQUIRES: systemz-registered-target
 
 ; CHECK:.section".ppa2"
-; CHECK: @@PPA2:
+; CHECK: L#PPA2:
 ; CHECK:.byte   3
 ; CHECK:.byte   231
 ; CHECK:.byte   34
 ; CHECK:.byte   4
-; CHECK:.long   CELQSTRT-@@PPA2
+; CHECK:.long   CELQSTRT-L#PPA2
 ; CHECK:.long   0
-; CHECK:.long   @@DVS-@@PPA2
+; CHECK:.long   L#DVS-L#PPA2
 ; CHECK:.long   0
 ; CHECK:.byte   129
 ; CHECK:.byte   0
 ; CHECK:.short  0
-; CHECK: @@DVS:
+; CHECK: L#DVS:
 ; CHECK:.ascii  "\361\371\367\360\360\361\360\361\360\360\360\360\360\360"
 ; CHECK:.short  0
-; CHECK:.quad   @@PPA2-CELQSTRT * A(PPA2-CELQSTRT)
-; CHECK: @@PPA1_void_test_0:
-; CHECK:.long   @@PPA2-@@PPA1_void_test_0   * Offset to PPA2
+; CHECK:.quad   L#PPA2-CELQSTRT * A(PPA2-CELQSTRT)
+; CHECK: L#PPA1_void_test_0:
+; CHECK:.long   L#PPA2-L#PPA1_void_test_0   * Offset to PPA2
 ; CHECK:.section"B_IDRL"
 ; CHECK:.byte   0
 ; CHECK:.byte   3
diff --git a/llvm/test/CodeGen/SystemZ/zos-prologue-epilog.ll 
b/llvm/test/CodeGen/SystemZ/zos-prologue-epilog.ll
index 8c0411629da7d2..d3e5823fcb1fe7 100644
--- a/llvm/test/CodeGen/SystemZ/zos-prologue-epilog.ll
+++ b/llvm/test/CodeGen/SystemZ/zos-prologue-epilog.ll
@@ -15,7 +15,7 @@
 ; CHECK64: aghi  4, 192
 ; CHECK64: b 2(7)
 
-; CHECK64: @@PPA1_func0_0:
+; CHECK64: L#PPA1_func0_0:
 ; CHECK64: .short  0  * Length/4 of Parms
 define void @func0() {
   call i64 (i64) @fun(i64 10) 
@@ -31,7 +31,7 @@ define void @func0() {
 ; CHECK64: aghi  4, 160
 ; CHECK64: b 2(7)
 
-; CHECK64: @@PPA1_func1_0:
+; CHECK64: L#PPA1_func1_0:
 ; CHECK64: .short  2  * Length/4 of Parms
 define void @func1(ptr %ptr) {
   %l01 = load volatile i64, ptr %ptr
@@ -336,16 +336,16 @@ define void @large_stack0() {
 ; CHECK64: lgr 0, 3
 ; CHECK64: llgt  3, 1208
 ; CHECK64: cg  4, 64(3)
-; CHECK64: jhe @BB7_2
+; CHECK64: jhe L#BB7_2
 ; CHECK64: %bb.1:
 ; CHECK6

[clang] [llvm] [GOFF][z/OS] Change PrivateGlobalPrefix and PrivateLabelPrefix to be L# (PR #85730)

2024-03-20 Thread Neumann Hon via cfe-commits

https://github.com/Everybody0523 closed 
https://github.com/llvm/llvm-project/pull/85730
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[libclc] [SystemZ][z/OS] Implement executePostLayoutBinding for GOFFObjectWriter (PR #67868)

2023-10-03 Thread Neumann Hon via cfe-commits

https://github.com/Everybody0523 updated 
https://github.com/llvm/llvm-project/pull/67868

>From 80073957d9adf8d107515d49a741df2b2130f82d Mon Sep 17 00:00:00 2001
From: Neumann Hon 
Date: Fri, 29 Sep 2023 19:52:27 -0400
Subject: [PATCH] [SystemZ][z/OS] Implement executePostLayoutBinding for
 GOFFObjectWriter

Implement executePostLayoutBinding() for the GOFFObjectWriter. With this
patch, we can now emit the ESD/TXT Records that are required by
global variables and functions.
---
 llvm/include/llvm/BinaryFormat/GOFF.h |  13 +-
 llvm/include/llvm/MC/MCAssembler.h|   7 +
 llvm/include/llvm/MC/MCContext.h  |   3 +-
 llvm/include/llvm/MC/MCGOFFObjectWriter.h |   1 +
 llvm/include/llvm/MC/MCGOFFStreamer.h |  10 +-
 llvm/include/llvm/MC/MCSymbolGOFF.h   |  40 +
 .../CodeGen/TargetLoweringObjectFileImpl.cpp  |   4 +
 llvm/lib/MC/GOFFObjectWriter.cpp  | 709 +-
 llvm/lib/MC/MCGOFFStreamer.cpp|  50 ++
 llvm/lib/Target/SystemZ/SystemZAsmPrinter.cpp |  37 +
 llvm/lib/Target/SystemZ/SystemZAsmPrinter.h   |   2 +
 llvm/test/MC/GOFF/basic-goff-64.ll| 242 ++
 llvm/test/MC/GOFF/empty-goff.s|  18 +-
 13 files changed, 1116 insertions(+), 20 deletions(-)
 create mode 100644 llvm/test/MC/GOFF/basic-goff-64.ll

diff --git a/llvm/include/llvm/BinaryFormat/GOFF.h 
b/llvm/include/llvm/BinaryFormat/GOFF.h
index f1a30e41b736bda..e53f0fd421fbdb1 100644
--- a/llvm/include/llvm/BinaryFormat/GOFF.h
+++ b/llvm/include/llvm/BinaryFormat/GOFF.h
@@ -65,12 +65,7 @@ enum ESDNameSpaceId : uint8_t {
   ESD_NS_Parts = 3
 };
 
-enum ESDReserveQwords : uint8_t {
-  ESD_RQ_0 = 0,
-  ESD_RQ_1 = 1,
-  ESD_RQ_2 = 2,
-  ESD_RQ_3 = 3
-};
+enum ESDReserveQwords : uint8_t { ESD_RQ_0 = 0, ESD_RQ_1 = 1 };
 
 enum ESDAmode : uint8_t {
   ESD_AMODE_None = 0,
@@ -157,6 +152,12 @@ enum ESDAlignment : uint8_t {
   ESD_ALIGN_4Kpage = 12,
 };
 
+enum TXTRecordStyle : uint8_t {
+  TXT_RS_Byte = 0,
+  TXT_RS_Structured = 1,
+  TXT_RS_Unstructured = 2,
+};
+
 enum ENDEntryPointRequest : uint8_t {
   END_EPR_None = 0,
   END_EPR_EsdidOffset = 1,
diff --git a/llvm/include/llvm/MC/MCAssembler.h 
b/llvm/include/llvm/MC/MCAssembler.h
index 5e1fc738b1dab4b..2b7b62e29722146 100644
--- a/llvm/include/llvm/MC/MCAssembler.h
+++ b/llvm/include/llvm/MC/MCAssembler.h
@@ -134,6 +134,9 @@ class MCAssembler {
   /// List of declared file names
   std::vector> FileNames;
 
+  /// GOFF Csect names.
+  std::pair CsectNames;
+
   MCDwarfLineTableParams LTParams;
 
   /// The set of function symbols for which a .thumb_func directive has
@@ -483,6 +486,10 @@ class MCAssembler {
 FileNames.emplace_back(std::string(FileName), Symbols.size());
   }
 
+  std::pair const &getCsectNames() {
+return CsectNames;
+  }
+
   /// Write the necessary bundle padding to \p OS.
   /// Expects a fragment \p F containing instructions and its size \p FSize.
   void writeFragmentPadding(raw_ostream &OS, const MCEncodedFragment &F,
diff --git a/llvm/include/llvm/MC/MCContext.h b/llvm/include/llvm/MC/MCContext.h
index 68d6f3e59d2d41a..dd5709d3be14c7f 100644
--- a/llvm/include/llvm/MC/MCContext.h
+++ b/llvm/include/llvm/MC/MCContext.h
@@ -621,7 +621,8 @@ class MCContext {
unsigned EntrySize);
 
   MCSectionGOFF *getGOFFSection(StringRef Section, SectionKind Kind,
-MCSection *Parent, const MCExpr *SubsectionId);
+MCSection *Parent = nullptr,
+const MCExpr *SubsectionId = nullptr);
 
   MCSectionCOFF *getCOFFSection(StringRef Section, unsigned Characteristics,
 SectionKind Kind, StringRef COMDATSymName,
diff --git a/llvm/include/llvm/MC/MCGOFFObjectWriter.h 
b/llvm/include/llvm/MC/MCGOFFObjectWriter.h
index 85316a6fd5d0e17..26bddde706dc601 100644
--- a/llvm/include/llvm/MC/MCGOFFObjectWriter.h
+++ b/llvm/include/llvm/MC/MCGOFFObjectWriter.h
@@ -10,6 +10,7 @@
 #define LLVM_MC_MCGOFFOBJECTWRITER_H
 
 #include "llvm/MC/MCObjectWriter.h"
+#include "llvm/Support/Casting.h"
 
 namespace llvm {
 class MCObjectWriter;
diff --git a/llvm/include/llvm/MC/MCGOFFStreamer.h 
b/llvm/include/llvm/MC/MCGOFFStreamer.h
index 2345509b161da5b..235edc01e88d5a5 100644
--- a/llvm/include/llvm/MC/MCGOFFStreamer.h
+++ b/llvm/include/llvm/MC/MCGOFFStreamer.h
@@ -24,9 +24,13 @@ class MCGOFFStreamer : public MCObjectStreamer {
 
   ~MCGOFFStreamer() override;
 
-  bool emitSymbolAttribute(MCSymbol *Symbol, MCSymbolAttr Attribute) override {
-return false;
-  }
+  // state management
+  void initSections(bool NoExecStack, const MCSubtargetInfo &STI) override;
+
+  void switchSection(MCSection *Section,
+ const MCExpr *Subsection = nullptr) override;
+
+  bool emitSymbolAttribute(MCSymbol *Symbol, MCSymbolAttr Attribute) override;
   void emitCommonSymbol(MCSymbol *Symbol, uint64_t Size,