-
Notifications
You must be signed in to change notification settings - Fork 5.4k
Fix the unwind opcode for new APX registers #112799
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -71,6 +71,30 @@ short Compiler::mapRegNumToDwarfReg(regNumber reg) | |
| case REG_R15: | ||
| dwarfReg = 15; | ||
| break; | ||
| case REG_R16: | ||
| dwarfReg = 16; | ||
| break; | ||
| case REG_R17: | ||
| dwarfReg = 17; | ||
| break; | ||
| case REG_R18: | ||
| dwarfReg = 18; | ||
| break; | ||
| case REG_R19: | ||
| dwarfReg = 19; | ||
| break; | ||
| case REG_R20: | ||
| dwarfReg = 20; | ||
| break; | ||
| case REG_R21: | ||
| dwarfReg = 21; | ||
| break; | ||
| case REG_R22: | ||
| dwarfReg = 22; | ||
| break; | ||
| case REG_R23: | ||
| dwarfReg = 23; | ||
| break; | ||
| default: | ||
| noway_assert(!"unexpected REG_NUM"); | ||
| } | ||
|
|
@@ -399,7 +423,7 @@ void Compiler::unwindSaveRegWindows(regNumber reg, unsigned offset) | |
| code = (UNWIND_CODE*)&func->unwindCodes[func->unwindCodeSlot -= sizeof(UNWIND_CODE)]; | ||
| code->UnwindOp = (genIsValidFloatReg(reg)) ? UWOP_SAVE_XMM128_FAR : UWOP_SAVE_NONVOL_FAR; | ||
| } | ||
| code->OpInfo = (BYTE)reg; | ||
| code->OpInfo = (BYTE)(genIsValidFloatReg(reg) ? reg - XMMBASE : reg); | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Can we add an assert that
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We could even assert on the actual range of the computed value, since the unwind codes are well-defined and if they change, we want the assert to hit.
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. let me do it as a follow up PR and merge this as is to unblock weekend runs. |
||
| unsigned int cbProlog = unwindGetCurrentOffset(func); | ||
| noway_assert((BYTE)cbProlog == cbProlog); | ||
| code->CodeOffset = (BYTE)cbProlog; | ||
|
|
||
Uh oh!
There was an error while loading. Please reload this page.