Re: [[PING][PATCH]] Use TREE_CODE to check for void return type in SIMD function clones for OpenMP.
Andrea Pinski <[email protected]> Mon, 3 Aug 2026 16:57:07 -0700
| Newsgroups | gmane.comp.gcc.patches |
|---|---|
| Message-ID | <CALvbMcCbuDDt-7tE0sJeWdcvidWOmijAZajwrZ-bx7RPiHte_w@mail.gmail.com> |
On Mon, Aug 3, 2026 at 10:30 AM Kevin Stefanov <[email protected]> wrote: > > This change fixes an issue where functions > decorated with: > pragma omp declare simd > that return void via a typedef would crash > GCC with an ICE while compiling a program > containing such a function, by comparing the > TREE_CODE of the type to VOID_TYPE instead of > directly comparing to void_type_node. > > gcc/ > * omp-simd-clone.cc (simd_clone_adjust_return_type): Use TREE_CODE > and VOID_TYPE when checking for void return type in adjusted functions. > (simd_clone_adjust): Likewise. > > Signed-off-by: Kevin Stefanov <[email protected]> > --- > Hi all, > > Just a ping for this patch of mine. > It fixes the ICE reported in the bugzilla item: > > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111856 > > The test openMP program no longer crashes GCC. > > No merge conflicts with trunk as of 3rd August 2026. > Boostrapped and regression tested on > x86_64-pc-linux-gnu with enable-languages=all. > > gcc/omp-simd-clone.cc | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/gcc/omp-simd-clone.cc b/gcc/omp-simd-clone.cc > index 7564846fac4..2f4cfcccb17 100644 > --- a/gcc/omp-simd-clone.cc > +++ b/gcc/omp-simd-clone.cc > @@ -715,7 +715,7 @@ simd_clone_adjust_return_type (struct cgraph_node *node) > tree t; > > /* Adjust the function return type. */ > - if (orig_rettype == void_type_node) > + if (TREE_CODE (orig_rettype) == VOID_TYPE) > return; You should use VOID_TYPE_P instead. Yes I know it is not used everywhere but it is better to use it. OK with that change and an added testcase. Thanks, Andrea > t = TREE_TYPE (TREE_TYPE (fndecl)); > if (INTEGRAL_TYPE_P (t) || POINTER_TYPE_P (t)) > @@ -1370,7 +1370,7 @@ simd_clone_adjust (struct cgraph_node *node) > simd_clone_adjust_argument_types (node); > targetm.simd_clone.adjust (node); > tree retval = NULL_TREE; > - if (orig_rettype != void_type_node) > + if (TREE_CODE (orig_rettype) != VOID_TYPE) > { > poly_uint64 veclen; > if (INTEGRAL_TYPE_P (orig_rettype) || POINTER_TYPE_P (orig_rettype)) > -- > 2.55.0 >