[llvm] [SFrames] Emit and relax FREs (PR #158154)
Fangrui Song via llvm-commits
llvm-commits at lists.llvm.org
Wed Sep 17 22:15:30 PDT 2025
================
@@ -33,10 +34,70 @@ struct SFrameFRE {
size_t CFAOffset = 0;
size_t FPOffset = 0;
size_t RAOffset = 0;
- bool FromFP = false;
+ FREInfo<endianness::native> Info;
bool CFARegSet = false;
SFrameFRE(const MCSymbol *Start) : Label(Start) {}
+
+ void emitOffset(MCObjectStreamer &S, FREOffset OffsetSize, size_t Offset) {
+ switch (OffsetSize) {
+ case (FREOffset::B1):
+ S.emitInt8(Offset);
+ return;
+ case (FREOffset::B2):
+ S.emitInt16(Offset);
+ return;
+ case (FREOffset::B4):
+ S.emitInt32(Offset);
+ return;
+ }
+ }
+
+ void emit(MCObjectStreamer &S, const MCSymbol *FuncBegin,
+ MCFragment *FDEFrag) {
+ S.emitSFrameCalculateFuncOffset(FuncBegin, Label, FDEFrag, SMLoc());
+
+ // fre_cfa_base_reg_id already set during parsing
+
+ // fre_offset_count
+ unsigned RegsTracked = 1; // always track the cfa.
+ if (FPOffset != 0)
+ RegsTracked++;
----------------
MaskRay wrote:
LLVM coding style prefers pre-increment
https://github.com/llvm/llvm-project/pull/158154
More information about the llvm-commits
mailing list