On Wed, May 1, 2024 at 7:40 PM Ian Lance Taylor <i...@google.com> wrote:
>
> On Wed, May 1, 2024 at 12:43 AM Aldy Hernandez <al...@redhat.com> wrote:
> >
> > gcc/ChangeLog:
> >
> >         * ipa-fnsummary.cc (evaluate_properties_for_edge): Initialize 
> > Value_Range's.
> >         * value-range.h (class Value_Range): Add a buffer and remove
> >         m_irange and m_frange.
> >         (Value_Range::Value_Range): Call init.
> >         (Value_Range::set_type): Same.
> >         (Value_Range::init): Use in place new to initialize buffer.
> >         (Value_Range::operator=): Tidy.
>
>
> I'm seeing a crash building on sparc-sun-solaris2.11 that may be due
> to this change.  The crash occurs in stage 1, the first time the newly
> built compiler is used.
>
> ./xgcc -B./ -B/var/gcc/iant/install/sparc-sun-solaris2.11/bin/
> -isystem /var/gcc/iant/install/sparc-sun-solaris2.11/include -isystem
> /var/gcc/iant/install/sparc-sun-solaris2.11/sys-include
> -L/var/gcc/iant/bootstrap/gcc/../ld  -xc -nostdinc /dev/null -S -o
> /dev/null -fself-test=../../gcc/gcc/testsuite/selftests
> In function ‘test_fn’:
> cc1: internal compiler error: Bus Error
> 0x1c7db03 crash_signal
>         ../../gcc/gcc/toplev.cc:319
> 0x104a82c void wi::copy<wide_int_storage,
> generic_wide_int<wide_int_ref_storage<true, false> >
> >(wide_int_storage&, generic_wide_int<wide_int_ref_storage<true,
> false> > const&)
>         ../../gcc/gcc/wide-int.h:2191
> 0x1049da3 wide_int_storage&
> wide_int_storage::operator=<wi::hwi_with_prec>(wi::hwi_with_prec
> const&)
>         ../../gcc/gcc/wide-int.h:1247
> 0x104929b generic_wide_int<wide_int_storage>&
> generic_wide_int<wide_int_storage>::operator=<wi::hwi_with_prec>(wi::hwi_with_prec
> const&)
>         ../../gcc/gcc/wide-int.h:1002
> 0x104757f irange_bitmask::set_unknown(unsigned int)
>         ../../gcc/gcc/value-range.h:163
> 0x1047b6f irange::set_varying(tree_node*)
>         ../../gcc/gcc/value-range.h:1067
> 0x1774d1b Value_Range::set_varying(tree_node*)
>         ../../gcc/gcc/value-range.h:720
> 0x1aef213 range_cast(vrange&, tree_node*)
>         ../../gcc/gcc/range-op.h:248
> 0x1ada517 operator_lshift::op1_range(irange&, tree_node*, irange
> const&, irange const&, relation_trio) const
>         ../../gcc/gcc/range-op.cc:2706
> 0x1aeaa6b range_op_lshift_tests
>         ../../gcc/gcc/range-op.cc:4750
> 0x1aee20f selftest::range_op_tests()
>         ../../gcc/gcc/range-op.cc:4887
> 0x2dfaa37 test_ranges
>         ../../gcc/gcc/function-tests.cc:585
> 0x2dfb337 selftest::function_tests_cc_tests()
>         ../../gcc/gcc/function-tests.cc:681
> 0x308a027 selftest::run_tests()
>         ../../gcc/gcc/selftest-run-tests.cc:108
> 0x1c833ef toplev::run_self_tests()
>         ../../gcc/gcc/toplev.cc:2213
> 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.
> make: *** [../../gcc/gcc/c/Make-lang.in:153: s-selftest-c] Error 1

This was also reported here: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114912

The same question applies really, what compiler are you using to
compile GCC with? I suspect this is making a difference. It might also
be the sparc compiler that both of you two are using is causing wrong
code with some more complex C++ code even though it is at -O0.
The adding of the deconstructor to Value_Range might be causing the
structure to become a "non-POD" and different argument passing and it
was broken even at -O0 (this is just a guess).

Thanks,
Andrew Pinski

>
> Ian

Reply via email to