On 5/28/19 11:26 AM, Wilco Dijkstra wrote: > Improve the fix for PR64242. Various optimizations can change a memory > reference > into a frame access. Given there are multiple virtual frame pointers which > may > be replaced by multiple hard frame pointers, there are no checks for writes > to the > various frame pointers. So updates to a frame pointer tends to generate > incorrect > code. Improve the previous fix to also add clobbers of several frame > pointers and > add a scheduling barrier. This should work in most cases until GCC supports a > generic "don't optimize across this instruction" feature. > > Bootstrap OK. Testcase passes on AArch64 and x86-64. Inspected x86, Arm, > Thumb-1 and Thumb-2 assembler which looks correct. > > ChangeLog: > 2018-12-07 Wilco Dijkstra <wdijk...@arm.com> > > gcc/ > PR middle-end/64242 > * builtins.c (expand_builtin_longjmp): Add frame clobbers and schedule > block. > (expand_builtin_nonlocal_goto): Likewise. > > testsuite/ > PR middle-end/64242 > * gcc.c-torture/execute/pr64242.c: Update test. OK. Though given history we might expect some targets to barf on the test changes. Please keep an eye out for such breakage.
jeff