@@ -39,6 +39,20 @@ struct SFrameFRE {
3939
4040 SFrameFRE (const MCSymbol *Start) : Label(Start) {}
4141
42+ void emitOffset (MCObjectStreamer &S, FREOffset OffsetSize, size_t Offset) {
43+ switch (OffsetSize) {
44+ case (FREOffset::B1):
45+ S.emitInt8 (Offset);
46+ return ;
47+ case (FREOffset::B2):
48+ S.emitInt16 (Offset);
49+ return ;
50+ case (FREOffset::B4):
51+ S.emitInt32 (Offset);
52+ return ;
53+ }
54+ }
55+
4256 void emit (MCObjectStreamer &S, const MCSymbol *FuncBegin,
4357 MCFragment *FDEFrag) {
4458 S.emitSFrameCalculateFuncOffset (FuncBegin, Label, FDEFrag, SMLoc ());
@@ -72,44 +86,14 @@ struct SFrameFRE {
7286
7387 // FRE Offsets
7488 [[maybe_unused]] unsigned OffsetsEmitted = 1 ;
75- switch (Info.getOffsetSize ()) {
76- case (FREOffset::B1):
77- S.emitInt8 (CFAOffset);
78- break ;
79- case (FREOffset::B2):
80- S.emitInt16 (CFAOffset);
81- break ;
82- case (FREOffset::B4):
83- S.emitInt32 (CFAOffset);
84- break ;
85- }
89+ emitOffset (S, Info.getOffsetSize (), CFAOffset);
8690 if (FPOffset) {
8791 OffsetsEmitted++;
88- switch (Info.getOffsetSize ()) {
89- case (FREOffset::B1):
90- S.emitInt8 (FPOffset);
91- break ;
92- case (FREOffset::B2):
93- S.emitInt16 (FPOffset);
94- break ;
95- case (FREOffset::B4):
96- S.emitInt32 (FPOffset);
97- break ;
98- }
92+ emitOffset (S, Info.getOffsetSize (), FPOffset);
9993 }
10094 if (RAOffset) {
10195 OffsetsEmitted++;
102- switch (Info.getOffsetSize ()) {
103- case (FREOffset::B1):
104- S.emitInt8 (RAOffset);
105- break ;
106- case (FREOffset::B2):
107- S.emitInt16 (RAOffset);
108- break ;
109- case (FREOffset::B4):
110- S.emitInt32 (RAOffset);
111- break ;
112- }
96+ emitOffset (S, Info.getOffsetSize (), RAOffset);
11397 }
11498 assert (OffsetsEmitted == RegsTracked &&
11599 " Didn't emit the right number of offsets" );
@@ -467,7 +451,7 @@ void MCSFrameEmitter::emit(MCObjectStreamer &Streamer) {
467451void MCSFrameEmitter::encodeFuncOffset (MCContext &C, uint64_t Offset,
468452 SmallVectorImpl<char > &Out,
469453 MCFragment *FDEFrag) {
470- // If encoding into the FDE Frag itself, generate the sfde_info_word .
454+ // If encoding into the FDE Frag itself, generate the sfde_func_info .
471455 if (FDEFrag == nullptr ) {
472456 // sfde_func_info
473457
0 commit comments