[llvm] [SystemZ][z/OS] Remove use of subsections. (PR #184167)

Ulrich Weigand via llvm-commits llvm-commits at lists.llvm.org
Thu Mar 5 09:55:45 PST 2026


================
@@ -99,15 +100,35 @@ class LLVM_LIBRARY_VISIBILITY SystemZAsmPrinter : public AsmPrinter {
   DenseMap<const GlobalObject *, SmallVector<const GlobalAlias *, 1>>
       GOAliasMap;
 
-  void emitPPA1(MCSymbol *FnEndSym);
+  struct PPA1Info {
+    StringRef Name;
+    MCSymbol *FnEnd = nullptr;    // Symbol marking function end.
+    MCSymbol *PPA1 = nullptr;     // Symbol marking PPA1 begin.
+    MCSymbol *EPMarker = nullptr; // Symbol marking entry point.
+    MCSymbol *PersonalityRoutine = nullptr;
+    MCSymbol *GCCEH = nullptr;
+    uint64_t CallFrameSize = 0;
+    unsigned SizeOfFnParams = 0;
+    uint32_t FrameAndFPROffset;
+    uint32_t FrameAndVROffset;
+    uint16_t SavedGPRMask = 0;
+    uint16_t SavedFPRMask = 0;
+    uint8_t SavedVRMask = 0;
+    bool HasArgAreaLength = false;
+    bool IsVarArg = false;
+    bool HasStackProtector = false;
+  };
+  SmallVector<PPA1Info, 0> DeferredPPA1;
+
+  void calculatePPA1(MCSymbol *FnEndSym);
+  void emitPPA1(PPA1Info &Info);
   void emitPPA2(Module &M);
   void emitADASection();
   void emitIDRLSection(Module &M);
 
 public:
   SystemZAsmPrinter(TargetMachine &TM, std::unique_ptr<MCStreamer> Streamer)
-      : AsmPrinter(TM, std::move(Streamer), ID), CurrentFnPPA1Sym(nullptr),
----------------
uweigand wrote:

I'd like to get rid of these globals, but as long as we still have them, don't we still need the initialization here?

https://github.com/llvm/llvm-project/pull/184167


More information about the llvm-commits mailing list