diff mbox

TS_OPTIMIZATION/TS_TARGET_OPTION need no chain/type

Message ID alpine.LSU.2.20.1701111628110.14052@zhemvz.fhfr.qr
State New
Headers show

Commit Message

Richard Biener Jan. 11, 2017, 3:28 p.m. UTC
On Wed, 11 Jan 2017, Richard Biener wrote:

> 
> LTO bootstrapped on x86_64-unknown-linux-gnu, testing in progress.
> 
> (most "gross" are still TS_LIST having a type and TS_VEC having type
> and chain, but that's been hard to fix with the C++ FE in place)

Forgot the tree-core.h part.

Re-bootstrapping testing on x86_64-unknown-linux-gnu.

Richard.

2017-01-11  Richard Biener  <rguenther@suse.de>

	* tree.c (initialize_tree_contains_struct): Make TS_OPTIMIZATION
	and TS_TARGET_OPTION directly derive from TS_BASE.
	* tree-core.h (tree_optimization_option): Derive from tree_base.
	(tree_target_option): Likewise.

Comments

Jan-Benedict Glaw Feb. 27, 2017, 12:22 a.m. UTC | #1
Hi Richard,

On Wed, 2017-01-11 16:28:33 +0100, Richard Biener <rguenther@suse.de> wrote:
> On Wed, 11 Jan 2017, Richard Biener wrote:
> > LTO bootstrapped on x86_64-unknown-linux-gnu, testing in progress.
> > 
> > (most "gross" are still TS_LIST having a type and TS_VEC having type
> > and chain, but that's been hard to fix with the C++ FE in place)
> 
> Forgot the tree-core.h part.
> 
> Re-bootstrapping testing on x86_64-unknown-linux-gnu.
> 
> Richard.
> 
> 2017-01-11  Richard Biener  <rguenther@suse.de>
> 
> 	* tree.c (initialize_tree_contains_struct): Make TS_OPTIMIZATION
> 	and TS_TARGET_OPTION directly derive from TS_BASE.
> 	* tree-core.h (tree_optimization_option): Derive from tree_base.
> 	(tree_target_option): Likewise.

This caused (or uncovered) a self-test issue on arm-netbsdelf (as run
by config-list.mk), like in this build:
http://toolchain.lug-owl.de/buildbot/show_build_details.php?id=696565

/home/jbglaw/build-configlist_mk/arm-netbsdelf/build-gcc/mk/arm-netbsdelf/./gcc/xgcc -B/home/jbglaw/build-configlist_mk/arm-netbsdelf/build-gcc/mk/arm-netbsdelf/./gcc/ -nostdinc -x c /dev/null -S -o /dev/null -fself-test=/home/jbglaw/repos-configlist_mk/gcc/gcc/testsuite/selftests
cc1: internal compiler error: Segmentation fault
0xaf7fdf crash_signal
/home/jbglaw/repos-configlist_mk/gcc/gcc/toplev.c:333
0x6739b3 lookup_page_table_entry
/home/jbglaw/repos-configlist_mk/gcc/gcc/ggc-page.c:635
0x6739b3 ggc_set_mark(void const*)
/home/jbglaw/repos-configlist_mk/gcc/gcc/ggc-page.c:1532
0x571bff gt_ggc_mx_lang_tree_node(void*)
./gt-c-c-decl.h:49
0x57242a gt_ggc_mx_lang_tree_node(void*)
./gt-c-c-decl.h:401
0x572fae gt_ggc_mx_lang_tree_node(void*)
./gt-c-c-decl.h:382
0x571e61 gt_ggc_mx_lang_tree_node(void*)
./gt-c-c-decl.h:391
0x83ed15 ggc_mark_root_tab
/home/jbglaw/repos-configlist_mk/gcc/gcc/ggc-common.c:77
0x83ef70 ggc_mark_roots()
/home/jbglaw/repos-configlist_mk/gcc/gcc/ggc-common.c:94
0x674417 ggc_collect()
/home/jbglaw/repos-configlist_mk/gcc/gcc/ggc-page.c:2202
0x842dff selftest::forcibly_ggc_collect()
/home/jbglaw/repos-configlist_mk/gcc/gcc/ggc-tests.c:36
0x11d0491 selftest::run_tests()
/home/jbglaw/repos-configlist_mk/gcc/gcc/selftest-run-tests.c:103
0xaf9742 toplev::run_self_tests()
/home/jbglaw/repos-configlist_mk/gcc/gcc/toplev.c:2046
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.
Makefile:1932: recipe for target 's-selftest' failed


Reverting your patch from current HEAD lets the self-test pass. Do you
spot something obvious?

MfG, JBG
Richard Biener Feb. 27, 2017, 8:19 a.m. UTC | #2
On Mon, 27 Feb 2017, Jan-Benedict Glaw wrote:

> Hi Richard,
> 
> On Wed, 2017-01-11 16:28:33 +0100, Richard Biener <rguenther@suse.de> wrote:
> > On Wed, 11 Jan 2017, Richard Biener wrote:
> > > LTO bootstrapped on x86_64-unknown-linux-gnu, testing in progress.
> > > 
> > > (most "gross" are still TS_LIST having a type and TS_VEC having type
> > > and chain, but that's been hard to fix with the C++ FE in place)
> > 
> > Forgot the tree-core.h part.
> > 
> > Re-bootstrapping testing on x86_64-unknown-linux-gnu.
> > 
> > Richard.
> > 
> > 2017-01-11  Richard Biener  <rguenther@suse.de>
> > 
> > 	* tree.c (initialize_tree_contains_struct): Make TS_OPTIMIZATION
> > 	and TS_TARGET_OPTION directly derive from TS_BASE.
> > 	* tree-core.h (tree_optimization_option): Derive from tree_base.
> > 	(tree_target_option): Likewise.
> 
> This caused (or uncovered) a self-test issue on arm-netbsdelf (as run
> by config-list.mk), like in this build:
> http://toolchain.lug-owl.de/buildbot/show_build_details.php?id=696565
> 
> /home/jbglaw/build-configlist_mk/arm-netbsdelf/build-gcc/mk/arm-netbsdelf/./gcc/xgcc -B/home/jbglaw/build-configlist_mk/arm-netbsdelf/build-gcc/mk/arm-netbsdelf/./gcc/ -nostdinc -x c /dev/null -S -o /dev/null -fself-test=/home/jbglaw/repos-configlist_mk/gcc/gcc/testsuite/selftests
> cc1: internal compiler error: Segmentation fault
> 0xaf7fdf crash_signal
> /home/jbglaw/repos-configlist_mk/gcc/gcc/toplev.c:333
> 0x6739b3 lookup_page_table_entry
> /home/jbglaw/repos-configlist_mk/gcc/gcc/ggc-page.c:635
> 0x6739b3 ggc_set_mark(void const*)
> /home/jbglaw/repos-configlist_mk/gcc/gcc/ggc-page.c:1532
> 0x571bff gt_ggc_mx_lang_tree_node(void*)
> ./gt-c-c-decl.h:49
> 0x57242a gt_ggc_mx_lang_tree_node(void*)
> ./gt-c-c-decl.h:401
> 0x572fae gt_ggc_mx_lang_tree_node(void*)
> ./gt-c-c-decl.h:382
> 0x571e61 gt_ggc_mx_lang_tree_node(void*)
> ./gt-c-c-decl.h:391
> 0x83ed15 ggc_mark_root_tab
> /home/jbglaw/repos-configlist_mk/gcc/gcc/ggc-common.c:77
> 0x83ef70 ggc_mark_roots()
> /home/jbglaw/repos-configlist_mk/gcc/gcc/ggc-common.c:94
> 0x674417 ggc_collect()
> /home/jbglaw/repos-configlist_mk/gcc/gcc/ggc-page.c:2202
> 0x842dff selftest::forcibly_ggc_collect()
> /home/jbglaw/repos-configlist_mk/gcc/gcc/ggc-tests.c:36
> 0x11d0491 selftest::run_tests()
> /home/jbglaw/repos-configlist_mk/gcc/gcc/selftest-run-tests.c:103
> 0xaf9742 toplev::run_self_tests()
> /home/jbglaw/repos-configlist_mk/gcc/gcc/toplev.c:2046
> Please submit a full bug report,
> with preprocessed source if appropriate.
> Please include the complete backtrace with any bug report.
> See <https://gcc.gnu.org/bugs/> for instructions.
> Makefile:1932: recipe for target 's-selftest' failed
> 
> 
> Reverting your patch from current HEAD lets the self-test pass. Do you
> spot something obvious?

No, can you see which collect call in the self-test is involved?
That is, a better backtrace, eventually when compiling the testcase
with -O0?

Richard.

> MfG, JBG
> 
>
Jan-Benedict Glaw Feb. 28, 2017, 10:30 a.m. UTC | #3
On Mon, 2017-02-27 09:19:51 +0100, Richard Biener <rguenther@suse.de> wrote:
> On Mon, 27 Feb 2017, Jan-Benedict Glaw wrote:
> > On Wed, 2017-01-11 16:28:33 +0100, Richard Biener <rguenther@suse.de> wrote:
> > > On Wed, 11 Jan 2017, Richard Biener wrote:
> > > > LTO bootstrapped on x86_64-unknown-linux-gnu, testing in progress.
> > > > 
> > > > (most "gross" are still TS_LIST having a type and TS_VEC having type
> > > > and chain, but that's been hard to fix with the C++ FE in place)
> > > 
> > > Forgot the tree-core.h part.
> > > 
> > > Re-bootstrapping testing on x86_64-unknown-linux-gnu.
> > > 
> > > Richard.
> > > 
> > > 2017-01-11  Richard Biener  <rguenther@suse.de>
> > > 
> > > 	* tree.c (initialize_tree_contains_struct): Make TS_OPTIMIZATION
> > > 	and TS_TARGET_OPTION directly derive from TS_BASE.
> > > 	* tree-core.h (tree_optimization_option): Derive from tree_base.
> > > 	(tree_target_option): Likewise.
> > 
> > This caused (or uncovered) a self-test issue on arm-netbsdelf (as run
> > by config-list.mk), like in this build:
> > http://toolchain.lug-owl.de/buildbot/show_build_details.php?id=696565
[...]
> > Reverting your patch from current HEAD lets the self-test pass. Do you
> > spot something obvious?
> 
> No, can you see which collect call in the self-test is involved?
> That is, a better backtrace, eventually when compiling the testcase
> with -O0?

Starting with selftest::run_tests(), these tests need to be run to
trigger it, all others can be omitted:

	ggc_tests_c_tests ();
	input_c_tests ();
	gimple_c_tests ();
	rtl_tests_c_tests ();
	read_rtl_function_c_tests ();
	--> forcibly_ggc_collect ();

In this constellation, we have on the stack:

(gdb) bt full
#0  0x00000000008aad77 in lookup_page_table_entry (p=0x7) at ../../gcc/gcc/ggc-page.c:635
        base = 0x23649c0
        L1 = 246
        L2 = 320
        table = 0x0
        high_bits = 0
#1  0x00000000008abe72 in ggc_set_mark (p=0x7) at ../../gcc/gcc/ggc-page.c:1532
        entry = 0x7ffff6140228
        bit = 23
        word = 0
        mask = 7730548
        __FUNCTION__ = "ggc_set_mark"
#2  0x0000000000782d27 in gt_ggc_mx_lang_tree_node (x_p=0x7ffff6140228) at ./gt-c-c-decl.h:49
        x = 0x7ffff6140228
        xlimit = 0x7
        __FUNCTION__ = "gt_ggc_mx_lang_tree_node"
#3  0x0000000000784b7a in gt_ggc_mx_lang_tree_node (x_p=0x7ffff6472000) at ./gt-c-c-decl.h:401
        i1 = 8
        l1 = 252
        x = 0x7ffff6472000
        xlimit = 0x0
        __FUNCTION__ = "gt_ggc_mx_lang_tree_node"
#4  0x00000000007849e2 in gt_ggc_mx_lang_tree_node (x_p=0x7ffff64695e8) at ./gt-c-c-decl.h:382
        x = 0x7ffff64695e8
        xlimit = 0x0
        __FUNCTION__ = "gt_ggc_mx_lang_tree_node"
#5  0x0000000000782e29 in gt_ggc_mx_lang_tree_node (x_p=0x7ffff646b6c0) at ./gt-c-c-decl.h:68
        x = 0x7ffff646b6c0
        xlimit = 0x0
        __FUNCTION__ = "gt_ggc_mx_lang_tree_node"
#6  0x0000000000af4520 in ggc_mark_root_tab (rt=0x1a19c40 <gt_ggc_r_gt_ggc_tests_h>) at ../../gcc/gcc/ggc-common.c:77
        i = 0
#7  0x0000000000af45b1 in ggc_mark_roots () at ../../gcc/gcc/ggc-common.c:94
        rt = 0x1990db8 <gt_ggc_rtab+120>
        rtp = 0x0
        rti = 0x1998850 <gt_ggc_rd_gt_c_c_decl_h+80>
        i = 360777445376
#8  0x00000000008ad064 in ggc_collect () at ../../gcc/gcc/ggc-page.c:2202
        allocated_last_gc = 4194304
        min_expand = 1258291.25
#9  0x0000000000afa314 in selftest::forcibly_ggc_collect () at ../../gcc/gcc/ggc-tests.c:36
No locals.
#10 0x000000000181357d in selftest::run_tests () at ../../gcc/gcc/selftest-run-tests.c:103
        start_time = 28000
        finish_time = 0
        elapsed_time = 9164999
#11 0x0000000000ea352c in toplev::run_self_tests (this=0x7fffffffe190) at ../../gcc/gcc/toplev.c:2048
No locals.
#12 0x0000000000ea36d3 in toplev::main (this=0x7fffffffe190, argc=20, argv=0x7fffffffe298)
    at ../../gcc/gcc/toplev.c:2125
        __FUNCTION__ = "main"
#13 0x00000000018565b2 in main (argc=20, argv=0x7fffffffe298) at ../../gcc/gcc/main.c:39
        toplev = {m_use_TV_TOTAL = true, m_init_signals = true}

Just for the moment, maybe more tonight.

MfG, JBG
diff mbox

Patch

Index: gcc/tree.c
===================================================================
--- gcc/tree.c	(revision 244309)
+++ gcc/tree.c	(working copy)
@@ -508,6 +508,8 @@  initialize_tree_contains_struct (void)
 	{
 	case TS_TYPED:
 	case TS_BLOCK:
+	case TS_OPTIMIZATION:
+	case TS_TARGET_OPTION:
 	  MARK_TS_BASE (code);
 	  break;
 
@@ -532,8 +534,6 @@  initialize_tree_contains_struct (void)
 	case TS_VEC:
 	case TS_BINFO:
 	case TS_OMP_CLAUSE:
-	case TS_OPTIMIZATION:
-	case TS_TARGET_OPTION:
 	  MARK_TS_COMMON (code);
 	  break;
 
Index: gcc/tree-core.h
===================================================================
--- gcc/tree-core.h	(revision 244309)
+++ gcc/tree-core.h	(working copy)
@@ -1794,7 +1794,7 @@  struct GTY(()) tree_statement_list
 /* Optimization options used by a function.  */
 
 struct GTY(()) tree_optimization_option {
-  struct tree_common common;
+  struct tree_base base;
 
   /* The optimization options used by the user.  */
   struct cl_optimization *opts;
@@ -1815,7 +1815,7 @@  struct GTY(()) target_globals;
 /* Target options used by a function.  */
 
 struct GTY(()) tree_target_option {
-  struct tree_common common;
+  struct tree_base base;
 
   /* Target globals for the corresponding target option.  */
   struct target_globals *globals;