please could you check, if it's also seen with -13, and then report it upstream?

On 13.01.25 10:30, Andreas Beckmann wrote:
Followup-For: Bug #1091161

A few rounds of cvise produced this minimized reproducer:

extern "C" double copysign(double, double);
double ccosh_x;
struct type {
   double x;
   double y;
};
template <typename T> struct complex {
   complex(T, T);
   complex() = default;
   T real() { return data.x; }
   T imag() { return data.y; }
   type data;
};
void ccosh() {
   complex<double> z_;
   complex(z_.real(), z_.imag() * copysign(1.0, ccosh_x));
}

(Note: this is derived from the thrust headers, not from libstdc++)

This compiles fine with g++-11/g++-12/g++-13 as found in sid/arm64, it
fails with g++-14 and g++-15.

On some quick searches ("simplify_context::simplify_subreg", "gen_xorsigndf3")
I found no corresponding upstream bug report.

# g++-14 -O2 -c 1091161.cpp
during RTL pass: expand
1091161.cpp: In function 'void ccosh()':
1091161.cpp:16:56: internal compiler error: Segmentation fault
    16 |   complex(z_.real(), z_.imag() * copysign(1.0, ccosh_x));
       |                                                        ^
0xd81307 internal_error(char const*, ...)
         ???:0
0x15a6834 simplify_context::simplify_subreg(machine_mode, rtx_def*, machine_mode, 
poly_int<2u, unsigned long>)
         ???:0
0x15a66bb simplify_context::simplify_gen_subreg(machine_mode, rtx_def*, machine_mode, 
poly_int<2u, unsigned long>)
         ???:0
0xb02767 gen_xorsignv2df3(rtx_def*, rtx_def*, rtx_def*)
         ???:0
0xafbee3 gen_xorsigndf3(rtx_def*, rtx_def*, rtx_def*)
         ???:0
0x1608157 maybe_expand_insn(insn_code, unsigned int, expand_operand*)
         ???:0
0x197fd4b expand_insn(insn_code, unsigned int, expand_operand*)
         ???:0
Please submit a full bug report, with preprocessed source (by using 
-freport-bug).
Please include the complete backtrace with any bug report.
See <file:///usr/share/doc/gcc-14/README.Bugs> for instructions.
Preprocessed source stored into /tmp/ccxoQlJv.out file, please attach this to 
your bugreport.
=== BEGIN GCC DUMP ===
98041: // Target: aarch64-linux-gnu
98041: // Configured with: ../src/configure -v --with-pkgversion='Debian 
14.2.0-12' --with-bugurl=file:///usr/share/doc/gcc-14/README.Bugs 
--enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2,rust --prefix=/usr 
--with-gcc-major-version-only --program-suffix=-14 
--program-prefix=aarch64-linux-gnu- --enable-shared --enable-linker-build-id 
--libexecdir=/usr/libexec --without-included-gettext --enable-threads=posix 
--libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu 
--enable-libstdcxx-debug --enable-libstdcxx-time=yes 
--with-default-libstdcxx-abi=new --enable-libstdcxx-backtrace 
--enable-gnu-unique-object --disable-libquadmath --disable-libquadmath-support 
--enable-plugin --enable-default-pie --with-system-zlib 
--enable-libphobos-checking=release --with-target-system-zlib=auto 
--enable-objc-gc=auto --enable-multiarch --enable-fix-cortex-a53-843419 
--disable-werror 
--enable-offload-targets=nvptx-none=/build/reproducible-path/gcc-14-14.2.0/debian/tmp-nvptx/usr
 --enable-offload-defaulted --without-cuda-driver --enable-checking=release 
--build=aarch64-linux-gnu --host=aarch64-linux-gnu --target=aarch64-linux-gnu 
--with-build-config=bootstrap-lto-lean --enable-link-serialization=4
98041: // Thread model: posix
98041: // Supported LTO compression algorithms: zlib zstd
98041: // gcc version 14.2.0 (Debian 14.2.0-12)
98041: //
98041: // during RTL pass: expand
98041: // 1091161.cpp: In function 'void ccosh()':
98041: // 1091161.cpp:16:56: internal compiler error: Segmentation fault
98041: //    16 |   complex(z_.real(), z_.imag() * copysign(1.0, ccosh_x));
98041: //       |                                                        ^
98041: // 0xd81307 internal_error(char const*, ...)
98041: //       ???:0
98041: // 0x15a6834 simplify_context::simplify_subreg(machine_mode, rtx_def*, 
machine_mode, poly_int<2u, unsigned long>)
98041: //       ???:0
98041: // 0x15a66bb simplify_context::simplify_gen_subreg(machine_mode, rtx_def*, 
machine_mode, poly_int<2u, unsigned long>)
98041: //       ???:0
98041: // 0xb02767 gen_xorsignv2df3(rtx_def*, rtx_def*, rtx_def*)
98041: //       ???:0
98041: // 0xafbee3 gen_xorsigndf3(rtx_def*, rtx_def*, rtx_def*)
98041: //       ???:0
98041: // 0x1608157 maybe_expand_insn(insn_code, unsigned int, expand_operand*)
98041: //       ???:0
98041: // 0x197fd4b expand_insn(insn_code, unsigned int, expand_operand*)
98041: //       ???:0
98041: // Please submit a full bug report, with preprocessed source (by using 
-freport-bug).
98041: // Please include the complete backtrace with any bug report.
98041: // See <file:///usr/share/doc/gcc-14/README.Bugs> for instructions.
98041:
98041: // /usr/libexec/gcc/aarch64-linux-gnu/14/cc1plus -quiet -imultiarch 
aarch64-linux-gnu -D_GNU_SOURCE 1091161.cpp -quiet -dumpbase 1091161.cpp 
-dumpbase-ext .cpp -mlittle-endian -mabi=lp64 -O2 -fasynchronous-unwind-tables 
-o - -frandom-seed=0 -fdump-noaddr
98041:
98041: # 0 "1091161.cpp"
98041: # 0 "<built-in>"
98041: # 0 "<command-line>"
98041: # 1 "/usr/include/stdc-predef.h" 1 3 4
98041: # 0 "<command-line>" 2
98041: # 1 "1091161.cpp"
98041: extern "C" double copysign(double, double);
98041: double ccosh_x;
98041: struct type {
98041:   double x;
98041:   double y;
98041: };
98041: template <typename T> struct complex {
98041:   complex(T, T);
98041:   complex() = default;
98041:   T real() { return data.x; }
98041:   T imag() { return data.y; }
98041:   type data;
98041: };
98041: void ccosh() {
98041:   complex<double> z_;
98041:   complex(z_.real(), z_.imag() * copysign(1.0, ccosh_x));
98041: }
=== END GCC DUMP ===

Andreas


Reply via email to