forked from OSchip/llvm-project
aaff1a631a
Summary: The functions different in two ways: - getLLVMRegNum could return both "eh" and "other" dwarf register numbers, while getLLVMRegNumFromEH only returned the "eh" number. - getLLVMRegNum asserted if the register was not found, while the second function returned -1. The second distinction was pretty important, but it was very hard to infer that from the function name. Aditionally, for the use case of dumping dwarf expressions, we needed a function which can work with both kinds of number, but does not assert. This patch solves both of these issues by merging the two functions into one, returning an Optional<unsigned> value. While the same thing could be achieved by adding an "IsEH" argument to the (renamed) getLLVMRegNumFromEH function, it seemed better to avoid the confusion of two functions and put the choice of asserting into the hands of the caller -- if he checks the Optional value, he can safely process "untrusted" input, and if he blindly dereferences the Optional, he gets the assertion. I've updated all call sites to the new API, choosing between the two options according to the function they were calling originally, except that I've updated the usage in DWARFExpression.cpp to use the "safe" method instead, and added a test case which would have previously triggered an assertion failure when processing (incorrect?) dwarf expressions. Reviewers: dsanders, arsenm, JDevlieghere Subscribers: wdng, aprantl, javed.absar, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D67154 llvm-svn: 372710 |
||
---|---|---|
.. | ||
CMakeLists.txt | ||
LLVMBuild.txt | ||
X86ATTInstPrinter.cpp | ||
X86ATTInstPrinter.h | ||
X86AsmBackend.cpp | ||
X86BaseInfo.h | ||
X86ELFObjectWriter.cpp | ||
X86FixupKinds.h | ||
X86InstComments.cpp | ||
X86InstComments.h | ||
X86InstPrinterCommon.cpp | ||
X86InstPrinterCommon.h | ||
X86IntelInstPrinter.cpp | ||
X86IntelInstPrinter.h | ||
X86MCAsmInfo.cpp | ||
X86MCAsmInfo.h | ||
X86MCCodeEmitter.cpp | ||
X86MCExpr.h | ||
X86MCTargetDesc.cpp | ||
X86MCTargetDesc.h | ||
X86MachObjectWriter.cpp | ||
X86TargetStreamer.h | ||
X86WinCOFFObjectWriter.cpp | ||
X86WinCOFFStreamer.cpp | ||
X86WinCOFFTargetStreamer.cpp |