diff options
author | Vy Nguyen <vyng@google.com> | 2022-10-06 09:08:00 -0400 |
---|---|---|
committer | Vy Nguyen <vyng@google.com> | 2022-10-14 15:16:40 -0400 |
commit | a6d6734a41f4960bf7447db4515e2acfd187fea0 (patch) | |
tree | 7a3ce5e8d6fa9662040a0e4e25af817339260db0 /flang/lib/Frontend/CompilerInvocation.cpp | |
parent | 1fab0ac559a1eb4e74d193c772264b590ad3c317 (diff) | |
download | llvm-a6d6734a41f4960bf7447db4515e2acfd187fea0.zip llvm-a6d6734a41f4960bf7447db4515e2acfd187fea0.tar.gz llvm-a6d6734a41f4960bf7447db4515e2acfd187fea0.tar.bz2 |
[lld-macho][nfc] define command UNWIND_MODE_MASK for convenience and rewrite mode-mask checking logic for clarity
The previous form is currently "harmless" and happened to work but may not in the future:
Consider the struct: (for x86-64, but same issue can be said for the ARM/64 families):
```
UNWIND_X86_64_MODE_MASK = 0x0F000000,
UNWIND_X86_64_MODE_RBP_FRAME = 0x01000000,
UNWIND_X86_64_MODE_STACK_IMMD = 0x02000000,
UNWIND_X86_64_MODE_STACK_IND = 0x03000000,
UNWIND_X86_64_MODE_DWARF = 0x04000000,
```
Previously, we were doing: `(encoding & MODE_DWARF) == MODE_DWARF`
As soon as a new `UNWIND_X86_64_MODE_FOO = 0x05000000` is defined, then the check above would always return true for encoding=MODE_FOO (because `(0b0101 & 0b0100) == 0b0100` )
Differential Revision: https://reviews.llvm.org/D135359
Diffstat (limited to 'flang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions