[llvm] e872e16 - Revert "[RISCV] relaxDwarfCallFrameFragment: remove unneeded relocations for relaxation"

Volodymyr Sapsai via llvm-commits llvm-commits at lists.llvm.org
Fri Jun 16 12:03:16 PDT 2023


Author: Volodymyr Sapsai
Date: 2023-06-16T12:01:54-07:00
New Revision: e872e162a3974e9385b719c0b514190e38845dc5

URL: https://github.com/llvm/llvm-project/commit/e872e162a3974e9385b719c0b514190e38845dc5
DIFF: https://github.com/llvm/llvm-project/commit/e872e162a3974e9385b719c0b514190e38845dc5.diff

LOG: Revert "[RISCV] relaxDwarfCallFrameFragment: remove unneeded relocations for relaxation"

Failing buildbot https://green.lab.llvm.org/green/job/clang-stage1-RA/34684/
This reverts commit 11ebe3d906558d93a607347de472e7718127f409.

Added: 
    

Modified: 
    llvm/lib/MC/MCAssembler.cpp
    llvm/lib/Target/RISCV/MCTargetDesc/RISCVAsmBackend.cpp
    llvm/test/DebugInfo/RISCV/relax-debug-frame.ll
    llvm/test/MC/ELF/RISCV/gen-dwarf.s

Removed: 
    


################################################################################
diff  --git a/llvm/lib/MC/MCAssembler.cpp b/llvm/lib/MC/MCAssembler.cpp
index 69ea337e16978..f1853bfe2b92f 100644
--- a/llvm/lib/MC/MCAssembler.cpp
+++ b/llvm/lib/MC/MCAssembler.cpp
@@ -1110,17 +1110,16 @@ bool MCAssembler::relaxDwarfCallFrameFragment(MCAsmLayout &Layout,
     return WasRelaxed;
 
   MCContext &Context = Layout.getAssembler().getContext();
-  int64_t Value;
-  bool Abs = DF.getAddrDelta().evaluateAsAbsolute(Value, Layout);
-  assert(Abs && "CFA with invalid expression");
-  (void)Abs;
-
+  uint64_t OldSize = DF.getContents().size();
+  int64_t AddrDelta;
+  bool Abs = DF.getAddrDelta().evaluateKnownAbsolute(AddrDelta, Layout);
+  assert(Abs && "We created call frame with an invalid expression");
+  (void) Abs;
   SmallVectorImpl<char> &Data = DF.getContents();
-  uint64_t OldSize = Data.size();
   Data.clear();
   DF.getFixups().clear();
 
-  MCDwarfFrameEmitter::encodeAdvanceLoc(Context, Value, Data);
+  MCDwarfFrameEmitter::encodeAdvanceLoc(Context, AddrDelta, Data);
   return OldSize != Data.size();
 }
 

diff  --git a/llvm/lib/Target/RISCV/MCTargetDesc/RISCVAsmBackend.cpp b/llvm/lib/Target/RISCV/MCTargetDesc/RISCVAsmBackend.cpp
index 81542b2697d5f..68dfb6852631c 100644
--- a/llvm/lib/Target/RISCV/MCTargetDesc/RISCVAsmBackend.cpp
+++ b/llvm/lib/Target/RISCV/MCTargetDesc/RISCVAsmBackend.cpp
@@ -273,15 +273,14 @@ bool RISCVAsmBackend::relaxDwarfLineAddr(MCDwarfLineAddrFragment &DF,
 bool RISCVAsmBackend::relaxDwarfCFA(MCDwarfCallFrameFragment &DF,
                                     MCAsmLayout &Layout,
                                     bool &WasRelaxed) const {
+
   const MCExpr &AddrDelta = DF.getAddrDelta();
   SmallVectorImpl<char> &Data = DF.getContents();
   SmallVectorImpl<MCFixup> &Fixups = DF.getFixups();
   size_t OldSize = Data.size();
 
   int64_t Value;
-  if (AddrDelta.evaluateAsAbsolute(Value, Layout.getAssembler()))
-    return false;
-  bool IsAbsolute = AddrDelta.evaluateAsAbsolute(Value, Layout);
+  bool IsAbsolute = AddrDelta.evaluateKnownAbsolute(Value, Layout);
   assert(IsAbsolute && "CFA with invalid expression");
   (void)IsAbsolute;
 

diff  --git a/llvm/test/DebugInfo/RISCV/relax-debug-frame.ll b/llvm/test/DebugInfo/RISCV/relax-debug-frame.ll
index 280da01567a2b..557986fa38b56 100644
--- a/llvm/test/DebugInfo/RISCV/relax-debug-frame.ll
+++ b/llvm/test/DebugInfo/RISCV/relax-debug-frame.ll
@@ -7,29 +7,15 @@
 ; RELAX-NEXT:   0x1C R_RISCV_32_PCREL - 0x0
 ; RELAX-NEXT:   0x20 R_RISCV_ADD32 - 0x0
 ; RELAX-NEXT:   0x20 R_RISCV_SUB32 - 0x0
-; RELAX-NEXT:   0x30 R_RISCV_32_PCREL - 0x0
-; RELAX-NEXT:   0x34 R_RISCV_ADD32 - 0x0
-; RELAX-NEXT:   0x34 R_RISCV_SUB32 - 0x0
-; RELAX-NEXT:   0x44 R_RISCV_32_PCREL - 0x0
-; RELAX-NEXT:   0x48 R_RISCV_ADD32 - 0x0
-; RELAX-NEXT:   0x48 R_RISCV_SUB32 - 0x0
-; RELAX-NEXT:  }
-
+; RELAX-NOT:  }
+; RELAX:        0x39 R_RISCV_SET6 - 0x0
+; RELAX-NEXT:   0x39 R_RISCV_SUB6 - 0x0
+;
 ; RELAX-DWARFDUMP-NOT: error: failed to compute relocation
-; RELAX-DWARFDUMP:      FDE
-; RELAX-DWARFDUMP-NEXT: Format:
-; RELAX-DWARFDUMP:      DW_CFA_advance_loc: 4
-; RELAX-DWARFDUMP-NEXT: DW_CFA_def_cfa_offset: +16
-; RELAX-DWARFDUMP-EMPTY:
-
-; RELAX-DWARFDUMP:      FDE
-; RELAX-DWARFDUMP:      Format:
-; RELAX-DWARFDUMP-NEXT: DW_CFA_advance_loc: 4
-; RELAX-DWARFDUMP-NEXT: DW_CFA_def_cfa_offset: +16
-; RELAX-DWARFDUMP-NEXT: DW_CFA_advance_loc: 4
-; RELAX-DWARFDUMP-NEXT: DW_CFA_offset: X1 -4
-; RELAX-DWARFDUMP-NEXT: DW_CFA_nop
-; RELAX-DWARFDUMP-EMPTY:
+; RELAX-DWARFDUMP: CIE
+; RELAX-DWARFDUMP: DW_CFA_advance_loc
+; RELAX-DWARFDUMP: DW_CFA_def_cfa_offset
+; RELAX-DWARFDUMP: DW_CFA_offset
 source_filename = "frame.c"
 
 ; Function Attrs: noinline nounwind optnone

diff  --git a/llvm/test/MC/ELF/RISCV/gen-dwarf.s b/llvm/test/MC/ELF/RISCV/gen-dwarf.s
index c0c8cae61c72b..a9e9d2c730bbb 100644
--- a/llvm/test/MC/ELF/RISCV/gen-dwarf.s
+++ b/llvm/test/MC/ELF/RISCV/gen-dwarf.s
@@ -45,6 +45,8 @@
 # RELOC-NEXT:   0x20 R_RISCV_SUB32 - 0x0
 # RELOC-NEXT:   0x25 R_RISCV_SET6 - 0x0
 # RELOC-NEXT:   0x25 R_RISCV_SUB6 - 0x0
+# RELOC-NEXT:   0x28 R_RISCV_SET6 - 0x0
+# RELOC-NEXT:   0x28 R_RISCV_SUB6 - 0x0
 # RELOC-NEXT:   0x34 R_RISCV_32_PCREL - 0x0
 # RELOC-NEXT:   0x38 R_RISCV_ADD32 - 0x0
 # RELOC-NEXT:   0x38 R_RISCV_SUB32 - 0x0


        


More information about the llvm-commits mailing list