diff options
author | Vladimir Stefanovic <vladimir.stefanovic@rt-rk.com> | 2018-08-30 17:31:38 +0000 |
---|---|---|
committer | Vladimir Stefanovic <vladimir.stefanovic@rt-rk.com> | 2018-08-30 17:31:38 +0000 |
commit | 7e58ebf6b85f8ea737b281a0552bcbb4ea3b04fb (patch) | |
tree | b32d272a9766872803c14c1883de5f71448b11fa /llvm/lib/CodeGen/CFIInstrInserter.cpp | |
parent | 748297341171927b0693e4ac78fa0a223df5ea3c (diff) | |
download | bcm5719-llvm-7e58ebf6b85f8ea737b281a0552bcbb4ea3b04fb.tar.gz bcm5719-llvm-7e58ebf6b85f8ea737b281a0552bcbb4ea3b04fb.zip |
Allow inconsistent offsets for 'noreturn' basic blocks when '-verify-cfiinstrs'
With r295105, some 'noreturn' blocks (those that don't return and have no
successors) may be merged.
If such blocks' predecessors have different outgoing offset or register, don't
report an error in CFIInstrInserter verify().
Thanks to Vlad Tsyrklevich for reporting the issue.
Differential Revision: https://reviews.llvm.org/D51161
llvm-svn: 341087
Diffstat (limited to 'llvm/lib/CodeGen/CFIInstrInserter.cpp')
-rw-r--r-- | llvm/lib/CodeGen/CFIInstrInserter.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/CFIInstrInserter.cpp b/llvm/lib/CodeGen/CFIInstrInserter.cpp index 00ebf63fc17..4fd119430cf 100644 --- a/llvm/lib/CodeGen/CFIInstrInserter.cpp +++ b/llvm/lib/CodeGen/CFIInstrInserter.cpp @@ -317,6 +317,10 @@ unsigned CFIInstrInserter::verify(MachineFunction &MF) { // outgoing offset and register values of CurrMBB if (SuccMBBInfo.IncomingCFAOffset != CurrMBBInfo.OutgoingCFAOffset || SuccMBBInfo.IncomingCFARegister != CurrMBBInfo.OutgoingCFARegister) { + // Inconsistent offsets/registers are ok for 'noreturn' blocks because + // we don't generate epilogues inside such blocks. + if (SuccMBBInfo.MBB->succ_empty() && !SuccMBBInfo.MBB->isReturnBlock()) + continue; report(CurrMBBInfo, SuccMBBInfo); ErrorNum++; } |