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

Reply via email to