diff options
| author | Hsiangkai Wang <hsiangkai@gmail.com> | 2019-06-12 03:04:22 +0000 |
|---|---|---|
| committer | Hsiangkai Wang <hsiangkai@gmail.com> | 2019-06-12 03:04:22 +0000 |
| commit | 04ddf39b44659920ae0f8590464dd21a4f0530bb (patch) | |
| tree | 5215d9d0d5c14efbf39beda8306cdfcdb42701c3 /llvm/lib/Target/RISCV/MCTargetDesc | |
| parent | 93be25b5806ec3066af05a1cb726b9928231c436 (diff) | |
| download | bcm5719-llvm-04ddf39b44659920ae0f8590464dd21a4f0530bb.tar.gz bcm5719-llvm-04ddf39b44659920ae0f8590464dd21a4f0530bb.zip | |
[RISCV] Add CFI directives for RISCV prologue/epilog.
In order to generate correct debug frame information, it needs to
generate CFI information in prologue and epilog.
Differential Revision: https://reviews.llvm.org/D61773
llvm-svn: 363120
Diffstat (limited to 'llvm/lib/Target/RISCV/MCTargetDesc')
| -rw-r--r-- | llvm/lib/Target/RISCV/MCTargetDesc/RISCVMCAsmInfo.cpp | 1 | ||||
| -rw-r--r-- | llvm/lib/Target/RISCV/MCTargetDesc/RISCVMCTargetDesc.cpp | 8 |
2 files changed, 8 insertions, 1 deletions
diff --git a/llvm/lib/Target/RISCV/MCTargetDesc/RISCVMCAsmInfo.cpp b/llvm/lib/Target/RISCV/MCTargetDesc/RISCVMCAsmInfo.cpp index 51106cd4e64..98362969288 100644 --- a/llvm/lib/Target/RISCV/MCTargetDesc/RISCVMCAsmInfo.cpp +++ b/llvm/lib/Target/RISCV/MCTargetDesc/RISCVMCAsmInfo.cpp @@ -21,6 +21,7 @@ RISCVMCAsmInfo::RISCVMCAsmInfo(const Triple &TT) { CommentString = "#"; AlignmentIsInBytes = false; SupportsDebugInformation = true; + ExceptionsType = ExceptionHandling::DwarfCFI; Data16bitsDirective = "\t.half\t"; Data32bitsDirective = "\t.word\t"; } diff --git a/llvm/lib/Target/RISCV/MCTargetDesc/RISCVMCTargetDesc.cpp b/llvm/lib/Target/RISCV/MCTargetDesc/RISCVMCTargetDesc.cpp index d920fd203d8..bc45262ab2d 100644 --- a/llvm/lib/Target/RISCV/MCTargetDesc/RISCVMCTargetDesc.cpp +++ b/llvm/lib/Target/RISCV/MCTargetDesc/RISCVMCTargetDesc.cpp @@ -50,7 +50,13 @@ static MCRegisterInfo *createRISCVMCRegisterInfo(const Triple &TT) { static MCAsmInfo *createRISCVMCAsmInfo(const MCRegisterInfo &MRI, const Triple &TT) { - return new RISCVMCAsmInfo(TT); + MCAsmInfo *MAI = new RISCVMCAsmInfo(TT); + + unsigned SP = MRI.getDwarfRegNum(RISCV::X2, true); + MCCFIInstruction Inst = MCCFIInstruction::createDefCfa(nullptr, SP, 0); + MAI->addInitialFrameState(Inst); + + return MAI; } static MCSubtargetInfo *createRISCVMCSubtargetInfo(const Triple &TT, |

