aboutsummaryrefslogtreecommitdiff
path: root/gcc/analyzer/infinite-recursion.cc
diff options
context:
space:
mode:
authorPatrick Bernardi <bernardi@adacore.com>2023-08-15 15:52:57 -0400
committerMarc Poulhiès <poulhies@adacore.com>2023-09-15 15:01:30 +0200
commit2578936b341585230d8554bb9c822c3d6f46f6ad (patch)
tree0adf9f0824b3f817409497e043f2abcc8c91a07c /gcc/analyzer/infinite-recursion.cc
parent62e170e586d0822e7b92ca2f92df29d4b7b8e38b (diff)
downloadgcc-2578936b341585230d8554bb9c822c3d6f46f6ad.zip
gcc-2578936b341585230d8554bb9c822c3d6f46f6ad.tar.gz
gcc-2578936b341585230d8554bb9c822c3d6f46f6ad.tar.bz2
ada: Do not perform local-exception-to-goto optimization on barrier functions
The local-exception-to-goto optimization is no longer applied to entry barrier functions as entry barriers cannot contain exception handlers and this optimization interferes with another optimization that occurs for simple barrier functions. In particular, the simple barrier optimization removes the push error label statements generated by the local-exception-to-goto optimization. This causes a Storage_Error in GIGI when the restriction No_Exception_Propagation is active and a protected object contains more than one simple entry barrier. gcc/ada/ * exp_ch6.adb (Expand_N_Subprogram_Body): Do not perform local-exception-to- goto optimization on barrier functions. * exp_ch9.adb (Expand_Entry_Barrier): Simplify the if statement around the simple barrier optimization and remove an old, no longer relevant comment.
Diffstat (limited to 'gcc/analyzer/infinite-recursion.cc')
0 files changed, 0 insertions, 0 deletions