Bug 61084 - [4.10 regression] wide-int merge broke Solaris/SPARC bootstrap
Summary: [4.10 regression] wide-int merge broke Solaris/SPARC bootstrap
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: bootstrap (show other bugs)
Version: 5.0
: P3 normal
Target Milestone: 5.0
Assignee: Richard Sandiford
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-05-06 19:21 UTC by Rainer Orth
Modified: 2014-05-26 14:00 UTC (History)
3 users (show)

See Also:
Host: sparc-sun-solaris2.*
Target: sparc-sun-solaris2.*
Build: sparc-sun-solaris2.*
Known to work:
Known to fail:
Last reconfirmed: 2014-05-06 00:00:00


Attachments
preprocessed input (19.02 KB, application/x-bzip)
2014-05-06 19:22 UTC, Rainer Orth
Details
Proposed patch (461 bytes, patch)
2014-05-06 20:05 UTC, Richard Sandiford
Details | Diff
Patch for pdist regression (372 bytes, patch)
2014-05-07 09:15 UTC, Richard Sandiford
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Rainer Orth 2014-05-06 19:21:11 UTC
Immediately after the wide-int merge, Solaris/SPARC bootstrap is broken
compiling the stage1 libgcc:

$ /var/gcc/regression/trunk/11-gcc/build/./gcc/xgcc -B/var/gcc/regression/trunk/11-gcc/build/./gcc/ -B/vol/gcc/sparc-sun-solaris2.11/bin/ -B/vol/gcc/sparc-sun-solaris2.11/lib/ -isystem /vol/gcc/sparc-sun-solaris2.11/include -isystem /vol/gcc/sparc-sun-solaris2.11/sys-include    -g -O2 -O2  -g -O2 -DIN_GCC    -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wno-format -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition  -isystem ./include   -fPIC -g -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector   -fPIC -I. -I. -I../.././gcc -I/vol/gcc/src/hg/trunk/local/libgcc -I/vol/gcc/src/hg/trunk/local/libgcc/. -I/vol/gcc/src/hg/trunk/local/libgcc/../gcc -I/vol/gcc/src/hg/trunk/local/libgcc/../include  -DHAVE_CC_TLS  -o _floatdisf.o -MT _floatdisf.o -MD -MP -MF _floatdisf.dep -DL_floatdisf -c /vol/gcc/src/hg/trunk/local/libgcc/libgcc2.c -fvisibility=hidden -DHIDE_EXPORTS
/vol/gcc/src/hg/trunk/local/libgcc/libgcc2.c: In function '__floatdisf':
/vol/gcc/src/hg/trunk/local/libgcc/libgcc2.c:1674:1: internal compiler error: in decompose, at rtl.h:1442
 }
 ^
0xae5323 simplify_const_binary_operation(rtx_code, machine_mode, rtx_def*, rtx_def*)
        /vol/gcc/src/hg/trunk/local/gcc/simplify-rtx.c:3772
0xad976b simplify_binary_operation(rtx_code, machine_mode, rtx_def*, rtx_def*)
        /vol/gcc/src/hg/trunk/local/gcc/simplify-rtx.c:1958
0xaee5e7 simplify_rtx(rtx_def const*)
        /vol/gcc/src/hg/trunk/local/gcc/simplify-rtx.c:5769
0x592557 cselib_expand_value_rtx_1
        /vol/gcc/src/hg/trunk/local/gcc/cselib.c:1830
0x59165f expand_loc
        /vol/gcc/src/hg/trunk/local/gcc/cselib.c:1458
0x591b2b cselib_expand_value_rtx_1
        /vol/gcc/src/hg/trunk/local/gcc/cselib.c:1621
0x591857 cselib_expand_value_rtx(rtx_def*, bitmap_head*, int)
        /vol/gcc/src/hg/trunk/local/gcc/cselib.c:1518
0xede93f reverse_op
        /vol/gcc/src/hg/trunk/local/gcc/var-tracking.c:5816
0xedfff3 add_stores
        /vol/gcc/src/hg/trunk/local/gcc/var-tracking.c:6100
0xa7af2f note_stores(rtx_def const*, void (*)(rtx_def*, rtx_def const*, void*), 
void*)
        /vol/gcc/src/hg/trunk/local/gcc/rtlanal.c:1563
0xa7afa3 note_stores(rtx_def const*, void (*)(rtx_def*, rtx_def const*, void*), void*)
        /vol/gcc/src/hg/trunk/local/gcc/rtlanal.c:1568
0xee2fd3 add_with_sets
        /vol/gcc/src/hg/trunk/local/gcc/var-tracking.c:6540
0x595077 cselib_record_sets
        /vol/gcc/src/hg/trunk/local/gcc/cselib.c:2561
0x5958eb cselib_process_insn(rtx_def*)
        /vol/gcc/src/hg/trunk/local/gcc/cselib.c:2673
0xef263f vt_initialize
        /vol/gcc/src/hg/trunk/local/gcc/var-tracking.c:10110
0xef322f variable_tracking_main_1
        /vol/gcc/src/hg/trunk/local/gcc/var-tracking.c:10304
0xef342f variable_tracking_main()
        /vol/gcc/src/hg/trunk/local/gcc/var-tracking.c:10357
0xef350b execute
        /vol/gcc/src/hg/trunk/local/gcc/var-tracking.c:10395

  Rainer
Comment 1 Rainer Orth 2014-05-06 19:22:39 UTC
Created attachment 32747 [details]
preprocessed input
Comment 2 Richard Sandiford 2014-05-06 20:05:04 UTC
Created attachment 32749 [details]
Proposed patch

Please try the attached.  The first hunk is the one that fixes the bug.
The others were just by inspection.
Comment 3 ro@CeBiTec.Uni-Bielefeld.DE 2014-05-06 20:56:09 UTC
Bootstrap is into stage2 now.  Will take a couple of hours before it's done.

Thanks.
        Rainer
Comment 4 ro@CeBiTec.Uni-Bielefeld.DE 2014-05-07 05:46:39 UTC
The bootstrap is finished now: my last one is a week and a half ago, but
at least some of the regressions are wide-int related:

+FAIL: gcc.target/sparc/pdist-2.c (internal compiler error)
+FAIL: gcc.target/sparc/pdist-2.c (test for excess errors)
+UNRESOLVED: gcc.target/sparc/pdist-2.c scan-assembler-not pdist\\t%
+UNRESOLVED: gcc.target/sparc/pdist-2.c scan-tree-dump optimized "return 475"
+FAIL: gcc.target/sparc/pdist-3.c (internal compiler error)
+FAIL: gcc.target/sparc/pdist-3.c (test for excess errors)
+WARNING: gcc.target/sparc/pdist-3.c compilation failed to produce executable
+FAIL: gcc.target/sparc/pdistn-2.c (internal compiler error)
+FAIL: gcc.target/sparc/pdistn-2.c (test for excess errors)
+UNRESOLVED: gcc.target/sparc/pdistn-2.c scan-assembler-not pdistn\\t%
+UNRESOLVED: gcc.target/sparc/pdistn-2.c scan-tree-dump optimized "return 473"

The first is:

/vol/gcc/src/hg/trunk/local/gcc/testsuite/gcc.target/sparc/pdist-2.c: In function 'foo':
/vol/gcc/src/hg/trunk/local/gcc/testsuite/gcc.target/sparc/pdist-2.c:15:1: internal compiler error: in decompose, at wide-int.h:908
0x9d688f wi::int_traits<generic_wide_int<wide_int_storage> >::decompose(long long*, unsigned int, generic_wide_int<wide_int_storage> const&)
        /vol/gcc/src/hg/trunk/local/gcc/wide-int.h:908
0x9d688f wide_int_ref_storage<generic_wide_int<wide_int_storage> >
        /vol/gcc/src/hg/trunk/local/gcc/wide-int.h:956
0x9d688f generic_wide_int<generic_wide_int<wide_int_storage> >
        /vol/gcc/src/hg/trunk/local/gcc/wide-int.h:732
0x9d688f add<tree_node*, generic_wide_int<wide_int_storage> >
        /vol/gcc/src/hg/trunk/local/gcc/wide-int.h:732
0x9d688f add<tree_node*, generic_wide_int<wide_int_storage> >
        /vol/gcc/src/hg/trunk/local/gcc/wide-int.h:2319
0x9d688f sparc_fold_builtin
        /vol/gcc/src/hg/trunk/local/gcc/config/sparc/sparc.c:10946
0x30ff03 fold_call_expr(unsigned int, tree_node*, bool)
        /vol/gcc/src/hg/trunk/local/gcc/builtins.c:11145
0x4e72bf gimple_fold_stmt_to_constant_1(gimple_statement_base*, tree_node* (*)(tree_node*))
        /vol/gcc/src/hg/trunk/local/gcc/gimple-fold.c:2782
0x7ea6f3 ccp_fold
        /vol/gcc/src/hg/trunk/local/gcc/tree-ssa-ccp.c:1152
0x7ea6f3 evaluate_stmt
        /vol/gcc/src/hg/trunk/local/gcc/tree-ssa-ccp.c:1670
0x7eb737 visit_assignment
        /vol/gcc/src/hg/trunk/local/gcc/tree-ssa-ccp.c:2215
0x7ebbab ccp_visit_stmt
        /vol/gcc/src/hg/trunk/local/gcc/tree-ssa-ccp.c:2298
0x87bdb7 simulate_stmt
        /vol/gcc/src/hg/trunk/local/gcc/tree-ssa-propagate.c:329
0x87c587 simulate_block
        /vol/gcc/src/hg/trunk/local/gcc/tree-ssa-propagate.c:452
0x87c587 simulate_block
        /vol/gcc/src/hg/trunk/local/gcc/tree-ssa-propagate.c:452
0x87c587 ssa_propagate(ssa_prop_result (*)(gimple_statement_base*, edge_def**, tree_node**), ssa_prop_result (*)(gimple_statement_base*))
        /vol/gcc/src/hg/trunk/local/gcc/tree-ssa-propagate.c:869
0x7e613f do_ssa_ccp
        /vol/gcc/src/hg/trunk/local/gcc/tree-ssa-ccp.c:2339
0x7e613f execute
        /vol/gcc/src/hg/trunk/local/gcc/tree-ssa-ccp.c:2373

+FAIL: gfortran.dg/namelist_utf8.f90  -O0  execution test
+FAIL: gfortran.dg/namelist_utf8.f90  -O1  execution test
+FAIL: gfortran.dg/namelist_utf8.f90  -O2  execution test
+FAIL: gfortran.dg/namelist_utf8.f90  -O3 -fomit-frame-pointer  execution test
+FAIL: gfortran.dg/namelist_utf8.f90  -O3 -fomit-frame-pointer -funroll-loops  e
xecution test
+FAIL: gfortran.dg/namelist_utf8.f90  -O3 -fomit-frame-pointer -funroll-all-loop
s -finline-functions  execution test
+FAIL: gfortran.dg/namelist_utf8.f90  -O3 -g  execution test
+FAIL: gfortran.dg/namelist_utf8.f90  -Os  execution test

Most likely unrelated, PR libfortran/52539

+WARNING: program timed out.
+FAIL: gnat.dg/nested_agg_bitfield_constructor.adb (test for excess errors)
+WARNING: program timed out.
+FAIL: gnat.dg/outer_agg_bitfield_constructor.adb (test for excess errors)
+WARNING: gnat.dg/outer_agg_bitfield_constructor.adb compilation failed to produ
ce executable

Can't tell, but failure is consistent.

	Rainer
Comment 5 Richard Sandiford 2014-05-07 09:15:09 UTC
Created attachment 32752 [details]
Patch for pdist regression

Here's a patch for the pdist regression.  I'll need more info about
the gnat.dg/outer_agg_bitfield_constructor.adb problem.
Comment 6 ro@CeBiTec.Uni-Bielefeld.DE 2014-05-07 12:53:06 UTC
> --- Comment #5 from rsandifo at gcc dot gnu.org <rsandifo at gcc dot
> gnu.org> ---
[...]
> Here's a patch for the pdist regression.  I'll need more info about

I've manually rebuilt cc1 and could successfully run the pdist tests
with that.

> the gnat.dg/outer_agg_bitfield_constructor.adb problem.

In a build tree from 10 days ago, compiling
nested_agg_bitfield_constructor.adb took ca. 0:48 s.  After the wide-int
merge, it's already running for several minutes.

All this doesn't guarantee that wide-int is the culprit, of course.
I'll check further, probably even running a bootstrap of the rev
immediately before the merge.

	Rainer
Comment 7 ro@CeBiTec.Uni-Bielefeld.DE 2014-05-07 23:24:29 UTC
> --- Comment #6 from ro at CeBiTec dot Uni-Bielefeld.DE <ro at CeBiTec dot Uni-Bielefeld.DE> ---
[...]
>> the gnat.dg/outer_agg_bitfield_constructor.adb problem.
>
> In a build tree from 10 days ago, compiling
> nested_agg_bitfield_constructor.adb took ca. 0:48 s.  After the wide-int
> merge, it's already running for several minutes.

In fact, it was still running after two hours.

> All this doesn't guarantee that wide-int is the culprit, of course.
> I'll check further, probably even running a bootstrap of the rev
> immediately before the merge.

I did this now and indeed the tests pass in the last rev before the
wide-int merge.

	Rainer
Comment 8 ro@CeBiTec.Uni-Bielefeld.DE 2014-05-08 11:32:53 UTC
>>> the gnat.dg/outer_agg_bitfield_constructor.adb problem.
>>
>> In a build tree from 10 days ago, compiling
>> nested_agg_bitfield_constructor.adb took ca. 0:48 s.  After the wide-int
>> merge, it's already running for several minutes.
>
> In fact, it was still running after two hours.

Running the compilation with DTrace based profiled (instead of
rebuilding with profiling enabled) found the following top CPU
consumers:

__gnat_portable_no_block_spawn                           994414500
system__os_lib__non_blocking_spawn                      1002010800
make__compile_sources__compile.15427                    1010527200
make__compile_sources__start_compile_if_possible.15545       1029687100
namet__name_chars__set_item                             1248495500
snames__initialize                                      1710811700
namet__name_find                                        1750025500

So something strange seems to be happening in gcc/ada/named.adb
(Name_Find).

	Rainer
Comment 9 Richard Sandiford 2014-05-14 15:43:24 UTC
Author: rsandifo
Date: Wed May 14 15:42:52 2014
New Revision: 210428

URL: http://gcc.gnu.org/viewcvs?rev=210428&root=gcc&view=rev
Log:
gcc/
	PR target/61084
	* config/sparc/sparc.md: Fix types of low and high in DI constant
	splitter.  Use gen_int_mode in some other splitters.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/sparc/sparc.md
Comment 10 ro@CeBiTec.Uni-Bielefeld.DE 2014-05-15 08:31:44 UTC
Thanks for the fix.  The second part, fixing the pdist failures, is
still missing, though.

I haven't yet had an opportunity to look into the two gnat.dg testcases
that still time out.

Thanks.
        Rainer
Comment 11 Eric Botcazou 2014-05-15 08:35:53 UTC
> I haven't yet had an opportunity to look into the two gnat.dg testcases
> that still time out.

I'll look into these ones.
Comment 12 Richard Sandiford 2014-05-19 07:25:59 UTC
Author: rsandifo
Date: Mon May 19 07:25:25 2014
New Revision: 210604

URL: http://gcc.gnu.org/viewcvs?rev=210604&root=gcc&view=rev
Log:
gcc/
	PR target/61084
	* config/sparc/sparc.c (sparc_fold_builtin): Use widest_int rather
	than wide_int.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/sparc/sparc.c
Comment 13 Eric Botcazou 2014-05-26 14:00:43 UTC
By Richard.