This is a simple manual import of Perforce job004158 so that it can be discussed with collaborators such as @waywardmonkeys .
Description
Filip Strömbäck @fstromback reports [1] that setjmp is not a reliable method of spilling registers onto the stack.
Analysis
The analysis we gave in design.mps.sol.setjmp.justify is not correct. A compiler can arrange for longjmp to reconstruct the registers using (for example) debug information, and so avoid the need to spill all the registers to the jump buffer.
How-found
customer
Introduced-in
Perforce changelist 194595 / Git commit 76166b7 / version 1.117.
Evidence
[1] https://info.ravenbrook.com/mail/2019/05/20/13-08-23/0/ (also below)
Test
none
History:
Created-by
@gareth-rees
Creation-date
2019/06/04 11:43:26
Modified-date
2019/06/04 11:43:26
This is a simple manual import of Perforce job004158 so that it can be discussed with collaborators such as @waywardmonkeys .
Description
Filip Strömbäck @fstromback reports [1] that setjmp is not a reliable method of spilling registers onto the stack.
Analysis
The analysis we gave in design.mps.sol.setjmp.justify is not correct. A compiler can arrange for longjmp to reconstruct the registers using (for example) debug information, and so avoid the need to spill all the registers to the jump buffer.
How-found
customer
Introduced-in
Perforce changelist 194595 / Git commit 76166b7 / version 1.117.
Evidence
[1] https://info.ravenbrook.com/mail/2019/05/20/13-08-23/0/ (also below)
Test
none
History:
Created-by
@gareth-rees
Creation-date
2019/06/04 11:43:26
Modified-date
2019/06/04 11:43:26