Use chain_next on eh_landing_pad_d for GTY (PR middle-end/110510)

Message ID 20230701212840.330022-1-apinski@marvell.com
State Accepted
Headers
Series Use chain_next on eh_landing_pad_d for GTY (PR middle-end/110510) |

Checks

Context Check Description
snail/gcc-patch-check success Github commit url

Commit Message

Andrew Pinski July 1, 2023, 9:28 p.m. UTC
  The backtrace in the bug report suggest there is a running out of
stack during GC collection, because of a long chain of eh_landing_pad_d.
This might fix that by adding chain_next onto eh_landing_pad_d's GTY marker.

OK? Bootstrapped and tested on x86_64-linux-gnu with no regressions.

gcc/ChangeLog:

	PR middle-end/110510
	* except.h (struct eh_landing_pad_d): Add chain_next GTY.
---
 gcc/except.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Richard Biener July 3, 2023, 7:53 a.m. UTC | #1
On Sat, Jul 1, 2023 at 11:29 PM Andrew Pinski via Gcc-patches
<gcc-patches@gcc.gnu.org> wrote:
>
> The backtrace in the bug report suggest there is a running out of
> stack during GC collection, because of a long chain of eh_landing_pad_d.
> This might fix that by adding chain_next onto eh_landing_pad_d's GTY marker.
>
> OK? Bootstrapped and tested on x86_64-linux-gnu with no regressions.

OK.

Richard.

> gcc/ChangeLog:
>
>         PR middle-end/110510
>         * except.h (struct eh_landing_pad_d): Add chain_next GTY.
> ---
>  gcc/except.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/gcc/except.h b/gcc/except.h
> index 378a9e4cb77..173b0f026db 100644
> --- a/gcc/except.h
> +++ b/gcc/except.h
> @@ -66,7 +66,7 @@ enum eh_region_type
>  /* A landing pad for a given exception region.  Any transfer of control
>     from the EH runtime to the function happens at a landing pad.  */
>
> -struct GTY(()) eh_landing_pad_d
> +struct GTY((chain_next("%h.next_lp"))) eh_landing_pad_d
>  {
>    /* The linked list of all landing pads associated with the region.  */
>    struct eh_landing_pad_d *next_lp;
> --
> 2.31.1
>
  

Patch

diff --git a/gcc/except.h b/gcc/except.h
index 378a9e4cb77..173b0f026db 100644
--- a/gcc/except.h
+++ b/gcc/except.h
@@ -66,7 +66,7 @@  enum eh_region_type
 /* A landing pad for a given exception region.  Any transfer of control
    from the EH runtime to the function happens at a landing pad.  */
 
-struct GTY(()) eh_landing_pad_d
+struct GTY((chain_next("%h.next_lp"))) eh_landing_pad_d
 {
   /* The linked list of all landing pads associated with the region.  */
   struct eh_landing_pad_d *next_lp;