[LLVMdev] [llvm] [libunwind] r207467 misprint (original) (raw)
Dan Albert danalbert at google.com
Wed Jul 15 17:13:28 PDT 2015
- Previous message: [LLVMdev] [llvm] [libunwind] r207467 misprint
- Next message: [LLVMdev] How to fix RegisterPressureTracker after inserting a new Machine Instruction during MachineScheduler Pass
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Looks like my change to that line was just a drive-by reformatting from r225187. The assert was added in r207467.
On Wed, Jul 15, 2015 at 2:22 PM, Nick Kledzik <kledzik at apple.com> wrote:
Daniil,
It looks like those asserts were added by Dan Albert. 225187 danalbert assert((int)CFIParser::kMaxRegisterNumber > lastReg && 225187 danalbert "register range too large"); 225187 danalbert assert(lastReg <= (int)cieInfo.returnAddressRegister && 225187 danalbert "register range does not contain return address register"); The assert for the return register is complicated because stack based calling conventions (like x86[64]) don’t have a register for the return value. Instead the dwarf makes up a number (x86 uses 8) for the return address number. This assert happens to work as-is for x86[64] because the return register number == lastReg. -Nick
On Jul 14, 2015, at 4:45 AM, Daniil Troshkov <troshkovdanil at gmail.com> wrote: Hi Nick! In r207467 you added code(libunwind: DwarfInstructions.hpp): assert(lastReg <= (int)cieInfo.returnAddressRegister_ _&& "register range does not contain return address_ _register");_ _for (int i = 0; i <= lastReg; ++i) {_ _....._ _else if (i == (int)cieInfo.returnAddressRegister)_ _There is misprint here: lastReg should be >= (int)cieInfo.returnAddressRegister in assert. So patch is: Index: DwarfInstructions.hpp =================================================================== --- DwarfInstructions.hpp (revision 242137) +++ DwarfInstructions.hpp (working copy) @@ -170,7 +170,7 @@ const int lastReg = R::lastDwarfRegNum(); assert((int)CFIParser::kMaxRegisterNumber > lastReg && "register range too large"); - assert(lastReg <= (int)cieInfo.returnAddressRegister &&_ _+ assert(lastReg >= (int)cieInfo.returnAddressRegister && "register range does not contain return address register"); for (int i = 0; i <= lastReg; ++i) {_ _if (prolog.savedRegisters[i].location !=_ _If you agree, can you please commit it, because I have no commit access._ _Thank you!_ _<DwarfInstructions.hpp.patch> -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150715/0f9d080e/attachment.html>
- Previous message: [LLVMdev] [llvm] [libunwind] r207467 misprint
- Next message: [LLVMdev] How to fix RegisterPressureTracker after inserting a new Machine Instruction during MachineScheduler Pass
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]