On Thu, Nov 12, 2026 at 1:14 AM Kael Andrew Franco
<[email protected]> wrote:
>
> Attached testcase ICE because pass_ipa_tm::gate
> execute on invalid code.
>
> Bootstrapped and regtested on x86_64-pc-linux-gnu.
>
> gcc/ChangeLog:
>
>         * trans-mem.cc (pass_ipa_tm::gate): Do not run on invalid code.

Ok.

>
> gcc/testsuite/ChangeLog:
>
>         * gcc.dg/pr128491.c: New test.
> ---
>  gcc/testsuite/gcc.dg/pr128491.c | 4 ++++
>  gcc/trans-mem.cc                | 2 +-
>  2 files changed, 5 insertions(+), 1 deletion(-)
>  create mode 100644 gcc/testsuite/gcc.dg/pr128491.c
>
> diff --git a/gcc/testsuite/gcc.dg/pr128491.c b/gcc/testsuite/gcc.dg/pr128491.c
> new file mode 100644
> index 00000000000..a4bd425b8eb
> --- /dev/null
> +++ b/gcc/testsuite/gcc.dg/pr128491.c
> @@ -0,0 +1,4 @@
> +/* { dg-do assemble } */
> +/* { dg-options "-fgnu-tm" } */
> +inline void __attribute__ ((strub ("internal"), always_inline)) inl (void) { 
> }
> +void bat (void) { inl (); } // { dg-error "" }
> diff --git a/gcc/trans-mem.cc b/gcc/trans-mem.cc
> index 0fa71841700..89840befea1 100644
> --- a/gcc/trans-mem.cc
> +++ b/gcc/trans-mem.cc
> @@ -5693,7 +5693,7 @@ public:
>    {}
>
>    /* opt_pass methods: */
> -  bool gate (function *) final override { return flag_tm; }
> +  bool gate (function *) final override { return (flag_tm && !seen_error 
> ()); }
>    unsigned int execute (function *) final override { return ipa_tm_execute 
> (); }
>
>  }; // class pass_ipa_tm
> --
> 2.56.0
>

Reply via email to