On Fri, 27 Oct 2017, John Baldwin wrote:
On 10/27/17 8:59 AM, Martin Storsjo via cfe-commits wrote:
Author: mstorsjo
Date: Fri Oct 27 00:59:01 2017
New Revision: 316745
URL: http://llvm.org/viewvc/llvm-project?rev=316745&view=rev
Log:
Express Registers_*::lastDwarfReg using _LIBUNWIND_HIGHEST_DWARF_REGISTER
This avoids having to keep the same information duplicated in multiple
places.
Adjust _LIBUNWIND_HIGHEST_DWARF_REGISTER to actually have the value
of the highest used register and only use the value
_LIBUNWIND_HIGHEST_DWARF_REGISTER + 1 (kMaxRegisterNumber + 1) for
allocating the savedRegisters array.
Sorry I didn't realize it during the review, but I've just realized why
using HIGHEST_DWARF_REGISTER is not correct in the various Register classes.
If you are building without _LIBUNWIND_IS_NATIVE_ONLY defined, then you
will end up with all of the Register classes returning the same value
(119 from the end of __libunwind_config.h) instead of the architecture-specific
value. This is a change in behavior, so the Registers.hpp portion of this
change should perhaps be reverted.
I did think of it at some point, but wasn't aware if that setup actually
was too relevant.
In any case - I can think of an even better way of doing this, without
having to duplicate the definitions, while still keeping the individual
Registers classes returning the right values - I'll post a patch in a
little moment.
// Martin
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits