https://gcc.gnu.org/bugzilla/show_bug.cgi?id=127451

            Bug ID: 127451
           Summary: internal compiler error: in
                    cp_check_omp_declare_reduction
           Product: gcc
           Version: 17.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: 0599jiangyc at gmail dot com
  Target Milestone: ---

The following code:

```cpp
struct W { int w; W () : w (0) {} W (int x) : w (x) {} };
  template <typename T1, typename T2, typename T3, typename T4, typename T5>
  int foo ()
  {
    #pragma omp declare reduction (foo : T4 : omp_out *= omp_in) initializer
(omp_priv (v)) // { dg-error "initializer refers to variable" }
  }
  int x = foo <long int, char, short, _Complex double, W> ();
```

Resulted in this output:
```
/tmp/test.cc: In function 'int foo()':
/tmp/test.cc:5:89: error: 'v' was not declared in this scope [-Wtemplate-body]
    5 |     #pragma omp declare reduction (foo : T4 : omp_out *= omp_in)
initializer (omp_priv (v)) // { dg-error "initializer refers to variable" }
      |                                                                        
                ^
/tmp/test.cc:6:3: warning: no return statement in function returning non-void
[-Wreturn-type]
    6 |   }
      |   ^
/tmp/test.cc: In instantiation of 'int foo() [with T1 = long int; T2 = char; T3
= short int; T4 = __complex__ double; T5 = W]':
/tmp/test.cc:7:59:   required from here
    7 |   int x = foo <long int, char, short, _Complex double, W> ();
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
/tmp/test.cc:5:13: internal compiler error: in cp_check_omp_declare_reduction,
at cp/semantics.cc:7262
    5 |     #pragma omp declare reduction (foo : T4 : omp_out *= omp_in)
initializer (omp_priv (v)) // { dg-error "initializer refers to variable" }
      |             ^~~
0x3046dcb internal_error(char const*, ...)
       
/home/fuzz/WorkSpace/fusion-fuzz/projects/gcc/gcc-src/gcc/diagnostic-global-context.cc:787
0xdd9a1e fancy_abort(char const*, int, char const*)
       
/home/fuzz/WorkSpace/fusion-fuzz/projects/gcc/gcc-src/gcc/diagnostics/context.cc:1813
0x8817e0 cp_check_omp_declare_reduction(tree_node*)
       
/home/fuzz/WorkSpace/fusion-fuzz/projects/gcc/gcc-src/gcc/cp/semantics.cc:7262
0x1089147 instantiate_body
       
/home/fuzz/WorkSpace/fusion-fuzz/projects/gcc/gcc-src/gcc/cp/pt.cc:29009
0x108470a tsubst_stmt
       
/home/fuzz/WorkSpace/fusion-fuzz/projects/gcc/gcc-src/gcc/cp/pt.cc:19980
0x107ec9e tsubst_stmt
       
/home/fuzz/WorkSpace/fusion-fuzz/projects/gcc/gcc-src/gcc/cp/pt.cc:20270
0x10890c2 tsubst_stmt
       
/home/fuzz/WorkSpace/fusion-fuzz/projects/gcc/gcc-src/gcc/cp/pt.cc:19819
0x10890c2 instantiate_body
       
/home/fuzz/WorkSpace/fusion-fuzz/projects/gcc/gcc-src/gcc/cp/pt.cc:28986
0x1089e9d instantiate_decl(tree_node*, bool, bool)
       
/home/fuzz/WorkSpace/fusion-fuzz/projects/gcc/gcc-src/gcc/cp/pt.cc:29277
0x1093cda instantiate_pending_templates(int)
       
/home/fuzz/WorkSpace/fusion-fuzz/projects/gcc/gcc-src/gcc/cp/pt.cc:29352
0xef5558 c_parse_final_cleanups()
       
/home/fuzz/WorkSpace/fusion-fuzz/projects/gcc/gcc-src/gcc/cp/decl2.cc:5882
0x11b8648 c_common_parse_file()
       
/home/fuzz/WorkSpace/fusion-fuzz/projects/gcc/gcc-src/gcc/c-family/c-opts.cc:1455
/home/fuzz/WorkSpace/fusion-fuzz/projects/gcc/gcc-install/libexec/gcc/x86_64-pc-linux-gnu/17.0.0/cc1plus
-quiet -imultiarch x86_64-linux-gnu -D_GNU_SOURCE -D_REENTRANT /tmp/test.cc
-quiet -dumpbase test.cc -dumpbase-ext .cc -mtune=generic -march=x86-64 -O0
-std=c++14 -floop-nest-optimize -ftree-vectorize -fopenmp -o /tmp/ccSwuN45.s
Please submit a full bug report, with preprocessed source (by using
-freport-bug).
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.

```

To reproduce:
```
/home/fuzz/WorkSpace/fusion-fuzz/projects/gcc/gcc-install/bin/g++ -fopenmp
./test.cc
```

Compiler version:
```
g++ (GCC) 17.0.0 20260917 (experimental)
Copyright (C) 2026 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
```

Commit:
```
d373724d1ddeef9b322b6b6078fc1de8dbe27791
```

Build configuration:
```
./configure --enable-languages=c,c++ --disable-bootstrap
--enable-checking=yes,extra,rtl --disable-multilib --disable-libsanitizer
--disable-nls --disable-werror
```

Operating System:
```
Ubuntu 22.04 Host, Docker fusion-fuzz-gcc:latest
```

*This bug was found by
[fusion-fuzz](https://github.com/fusion-fuzz/fusion-fuzz)*
  • [Bug c++/127451] New: internal c... 0599jiangyc at gmail dot com via Gcc-bugs

Reply via email to