middle-end/101824 - properly handle volatiles in nested fn lowering
authorRichard Biener <rguenther@suse.de>
Mon, 9 Aug 2021 08:19:10 +0000 (10:19 +0200)
committerRichard Biener <rguenther@suse.de>
Tue, 10 Aug 2021 07:27:49 +0000 (09:27 +0200)
commitbb169406cdc9e044eaec500dd742c2fed40f5488
treef89b60e9073bc859ecfdc044a91bb65cf63bdf49
parent0631faf87a197145acd833249bf8f20a1c4aaabf
middle-end/101824 - properly handle volatiles in nested fn lowering

When we build the COMPONENT_REF of a formerly volatile local off
the FRAME decl we have to make sure to mark the COMPONENT_REF
as TREE_THIS_VOLATILE.  While the GIMPLE operand scanner looks
at the FIELD_DECL this is not how volatile GENERIC refs work.

2021-08-09  Richard Biener  <rguenther@suse.de>

PR middle-end/101824
* tree-nested.c (get_frame_field): Mark the COMPONENT_REF as
volatile in case the variable was.

* gcc.dg/tree-ssa/pr101824.c: New testcase.
gcc/testsuite/gcc.dg/tree-ssa/pr101824.c [new file with mode: 0644]
gcc/tree-nested.c