On Sat, 26 Nov 2016, Prathamesh Kulkarni wrote: > On 25 November 2016 at 14:48, Richard Biener <rguent...@suse.de> wrote: > > On Fri, 25 Nov 2016, Prathamesh Kulkarni wrote: > > > >> On 25 November 2016 at 13:43, Richard Biener <rguent...@suse.de> wrote: > >> > On Fri, 25 Nov 2016, Jakub Jelinek wrote: > >> > > >> >> On Fri, Nov 25, 2016 at 01:28:06PM +0530, Prathamesh Kulkarni wrote: > >> >> > --- a/gcc/lto/lto-lang.c > >> >> > +++ b/gcc/lto/lto-lang.c > >> >> > @@ -1271,8 +1271,30 @@ lto_init (void) > >> >> > gcc_assert (TYPE_MAIN_VARIANT (const_tm_ptr_type_node) > >> >> > == const_ptr_type_node); > >> >> > > >> >> > - ptrdiff_type_node = integer_type_node; > >> >> > + if (strcmp (PTRDIFF_TYPE, "int") == 0) > >> >> > + ptrdiff_type_node = integer_type_node; > >> >> > + else if (strcmp (PTRDIFF_TYPE, "long int") == 0) > >> >> > + ptrdiff_type_node = long_integer_type_node; > >> >> > + else if (strcmp (PTRDIFF_TYPE, "long long int") == 0) > >> >> > + ptrdiff_type_node = long_long_integer_type_node; > >> >> > + else if (strcmp (PTRDIFF_TYPE, "short int") == 0) > >> >> > + ptrdiff_type_node = short_integer_type_node; > >> >> > + else > >> >> > + { > >> >> > + ptrdiff_type_node = NULL_TREE; > >> >> > + for (int i = 0; i < NUM_INT_N_ENTS; i++) > >> >> > + if (int_n_enabled_p[i]) > >> >> > + { > >> >> > + char name[50]; > >> >> > + sprintf (name, "__int%d", int_n_data[i].bitsize); > >> >> > + if (strcmp (name, PTRDIFF_TYPE) == 0) > >> >> > + ptrdiff_type_node = int_n_trees[i].signed_type; > >> >> > + } > >> >> > + if (ptrdiff_type_node == NULL_TREE) > >> >> > + gcc_unreachable (); > >> >> > + } > >> >> > >> >> This looks ok to me. > >> > > >> > But I'd like to see this in build_common_tree_nodes alongside > >> > the initialization of size_type_node (and thus removed from > >> > c_common_nodes_and_builtins). This way you can simply remove > >> > the lto-lang.c code as well. > >> > > >> > Please then also remove the ptrdiff_type_node re-set from > >> > free_lang_data (). > >> Hi Richard, > >> Does this version look OK ? > >> Validation in progress. > > > > Yes, patch is ok if testing succeeds. > Thanks, the patch passes bootstrap+test on x86_64-unknown-linux-gnu > with --enable-languages=all,ada > and cross-tested on arm*-*-*, aarch64*-*-* with > --enable-languages=c,c++,fortran. > > However LTO bootstrap fails with miscompares (attached) > configured with: --disable-werror --enable-stage1-checking=release > --with-build-config=bootstrap-lto > I verified that the same miscompares happen without the patch too, and > have committed it as r242888.
LTO bootstrap works fine for me (with checking enabled). Richard.