public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* Fix streaming of target optimization/option nodes
@ 2014-12-15  6:34 Jan Hubicka
  2014-12-15  8:29 ` Jan Hubicka
  0 siblings, 1 reply; 9+ messages in thread
From: Jan Hubicka @ 2014-12-15  6:34 UTC (permalink / raw)
  To: gcc-patches, rguenther

Hi,
the testcase in PR ipa/61324 fails because it is compiled with -O0 and linked with -O2.
This should not matter anymore if there wasn't the following problem in streamer that
makes us to merge all default nodes across units.

Bootstrapped/regtested x86_64-linux, plan to commit it after more testing finishes (Firefox)

Honza

	PR ipa/61324
	* tree-streamer.c (preload_common_nodes): Do not ocnsider optimizatoin
	nad target_option nodes as common nodes; they depend on flags.

Index: tree-streamer.c
===================================================================
--- tree-streamer.c	(revision 218726)
+++ tree-streamer.c	(working copy)
@@ -324,7 +324,14 @@ preload_common_nodes (struct streamer_tr
     /* Skip boolean type and constants, they are frontend dependent.  */
     if (i != TI_BOOLEAN_TYPE
 	&& i != TI_BOOLEAN_FALSE
-	&& i != TI_BOOLEAN_TRUE)
+	&& i != TI_BOOLEAN_TRUE
+	/* Skip optimization and target option nodes; they depend on flags.  */
+	&& i != TI_OPTIMIZATION_DEFAULT
+	&& i != TI_OPTIMIZATION_CURRENT
+	&& i != TI_TARGET_OPTION_DEFAULT
+	&& i != TI_TARGET_OPTION_CURRENT
+	&& i != TI_CURRENT_TARGET_PRAGMA
+	&& i != TI_CURRENT_OPTIMIZE_PRAGMA)
       record_common_node (cache, global_trees[i]);
 }
 

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Fix streaming of target optimization/option nodes
  2014-12-15  6:34 Fix streaming of target optimization/option nodes Jan Hubicka
@ 2014-12-15  8:29 ` Jan Hubicka
  2014-12-15  8:41   ` Richard Biener
  0 siblings, 1 reply; 9+ messages in thread
From: Jan Hubicka @ 2014-12-15  8:29 UTC (permalink / raw)
  To: Jan Hubicka; +Cc: gcc-patches, rguenther

Hi,
actually this patch break fortran, I get streaming error in:
lto1: internal compiler error: in streamer_get_pickled_tree
apparently picking error_mark_node for variable constructor results in reading integer_type...

Honza
> Hi,
> the testcase in PR ipa/61324 fails because it is compiled with -O0 and linked with -O2.
> This should not matter anymore if there wasn't the following problem in streamer that
> makes us to merge all default nodes across units.
> 
> Bootstrapped/regtested x86_64-linux, plan to commit it after more testing finishes (Firefox)
> 
> Honza
> 
> 	PR ipa/61324
> 	* tree-streamer.c (preload_common_nodes): Do not ocnsider optimizatoin
> 	nad target_option nodes as common nodes; they depend on flags.
> 
> Index: tree-streamer.c
> ===================================================================
> --- tree-streamer.c	(revision 218726)
> +++ tree-streamer.c	(working copy)
> @@ -324,7 +324,14 @@ preload_common_nodes (struct streamer_tr
>      /* Skip boolean type and constants, they are frontend dependent.  */
>      if (i != TI_BOOLEAN_TYPE
>  	&& i != TI_BOOLEAN_FALSE
> -	&& i != TI_BOOLEAN_TRUE)
> +	&& i != TI_BOOLEAN_TRUE
> +	/* Skip optimization and target option nodes; they depend on flags.  */
> +	&& i != TI_OPTIMIZATION_DEFAULT
> +	&& i != TI_OPTIMIZATION_CURRENT
> +	&& i != TI_TARGET_OPTION_DEFAULT
> +	&& i != TI_TARGET_OPTION_CURRENT
> +	&& i != TI_CURRENT_TARGET_PRAGMA
> +	&& i != TI_CURRENT_OPTIMIZE_PRAGMA)
>        record_common_node (cache, global_trees[i]);
>  }
>  

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Fix streaming of target optimization/option nodes
  2014-12-15  8:29 ` Jan Hubicka
@ 2014-12-15  8:41   ` Richard Biener
  2014-12-15 17:12     ` Jan Hubicka
  2014-12-15 21:57     ` Jan Hubicka
  0 siblings, 2 replies; 9+ messages in thread
From: Richard Biener @ 2014-12-15  8:41 UTC (permalink / raw)
  To: Jan Hubicka; +Cc: gcc-patches

On Mon, 15 Dec 2014, Jan Hubicka wrote:

> Hi, actually this patch break fortran, I get streaming error in: lto1: 
> internal compiler error: in streamer_get_pickled_tree apparently picking 
> error_mark_node for variable constructor results in reading 
> integer_type...

?

Probably the default nodes are referenced by another builtin tree instead
and you get inconsistent streaming between f951 and lto1.  See the
assert placed into record_common_node which you should extend to cover
the optimization node trees.

Richard.

> Honza
> > Hi,
> > the testcase in PR ipa/61324 fails because it is compiled with -O0 and linked with -O2.
> > This should not matter anymore if there wasn't the following problem in streamer that
> > makes us to merge all default nodes across units.
> > 
> > Bootstrapped/regtested x86_64-linux, plan to commit it after more testing finishes (Firefox)
> > 
> > Honza
> > 
> > 	PR ipa/61324
> > 	* tree-streamer.c (preload_common_nodes): Do not ocnsider optimizatoin
> > 	nad target_option nodes as common nodes; they depend on flags.
> > 
> > Index: tree-streamer.c
> > ===================================================================
> > --- tree-streamer.c	(revision 218726)
> > +++ tree-streamer.c	(working copy)
> > @@ -324,7 +324,14 @@ preload_common_nodes (struct streamer_tr
> >      /* Skip boolean type and constants, they are frontend dependent.  */
> >      if (i != TI_BOOLEAN_TYPE
> >  	&& i != TI_BOOLEAN_FALSE
> > -	&& i != TI_BOOLEAN_TRUE)
> > +	&& i != TI_BOOLEAN_TRUE
> > +	/* Skip optimization and target option nodes; they depend on flags.  */
> > +	&& i != TI_OPTIMIZATION_DEFAULT
> > +	&& i != TI_OPTIMIZATION_CURRENT
> > +	&& i != TI_TARGET_OPTION_DEFAULT
> > +	&& i != TI_TARGET_OPTION_CURRENT
> > +	&& i != TI_CURRENT_TARGET_PRAGMA
> > +	&& i != TI_CURRENT_OPTIMIZE_PRAGMA)
> >        record_common_node (cache, global_trees[i]);
> >  }
> >  
> 
> 

-- 
Richard Biener <rguenther@suse.de>
SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Jennifer Guild,
Dilip Upmanyu, Graham Norton HRB 21284 (AG Nuernberg)

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Fix streaming of target optimization/option nodes
  2014-12-15  8:41   ` Richard Biener
@ 2014-12-15 17:12     ` Jan Hubicka
  2014-12-15 21:57     ` Jan Hubicka
  1 sibling, 0 replies; 9+ messages in thread
From: Jan Hubicka @ 2014-12-15 17:12 UTC (permalink / raw)
  To: Richard Biener; +Cc: Jan Hubicka, gcc-patches

> On Mon, 15 Dec 2014, Jan Hubicka wrote:
> 
> > Hi, actually this patch break fortran, I get streaming error in: lto1: 
> > internal compiler error: in streamer_get_pickled_tree apparently picking 
> > error_mark_node for variable constructor results in reading 
> > integer_type...
> 
> ?
> 
> Probably the default nodes are referenced by another builtin tree instead
> and you get inconsistent streaming between f951 and lto1.  See the
> assert placed into record_common_node which you should extend to cover
> the optimization node trees.

Yep, I looked into that other assert and added check for optimization nodes,
it does not seem to trigger + error mark node is 0.  Will try to look into this
more today.

Honza
> 
> Richard.
> 
> > Honza
> > > Hi,
> > > the testcase in PR ipa/61324 fails because it is compiled with -O0 and linked with -O2.
> > > This should not matter anymore if there wasn't the following problem in streamer that
> > > makes us to merge all default nodes across units.
> > > 
> > > Bootstrapped/regtested x86_64-linux, plan to commit it after more testing finishes (Firefox)
> > > 
> > > Honza
> > > 
> > > 	PR ipa/61324
> > > 	* tree-streamer.c (preload_common_nodes): Do not ocnsider optimizatoin
> > > 	nad target_option nodes as common nodes; they depend on flags.
> > > 
> > > Index: tree-streamer.c
> > > ===================================================================
> > > --- tree-streamer.c	(revision 218726)
> > > +++ tree-streamer.c	(working copy)
> > > @@ -324,7 +324,14 @@ preload_common_nodes (struct streamer_tr
> > >      /* Skip boolean type and constants, they are frontend dependent.  */
> > >      if (i != TI_BOOLEAN_TYPE
> > >  	&& i != TI_BOOLEAN_FALSE
> > > -	&& i != TI_BOOLEAN_TRUE)
> > > +	&& i != TI_BOOLEAN_TRUE
> > > +	/* Skip optimization and target option nodes; they depend on flags.  */
> > > +	&& i != TI_OPTIMIZATION_DEFAULT
> > > +	&& i != TI_OPTIMIZATION_CURRENT
> > > +	&& i != TI_TARGET_OPTION_DEFAULT
> > > +	&& i != TI_TARGET_OPTION_CURRENT
> > > +	&& i != TI_CURRENT_TARGET_PRAGMA
> > > +	&& i != TI_CURRENT_OPTIMIZE_PRAGMA)
> > >        record_common_node (cache, global_trees[i]);
> > >  }
> > >  
> > 
> > 
> 
> -- 
> Richard Biener <rguenther@suse.de>
> SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Jennifer Guild,
> Dilip Upmanyu, Graham Norton HRB 21284 (AG Nuernberg)

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Fix streaming of target optimization/option nodes
  2014-12-15  8:41   ` Richard Biener
  2014-12-15 17:12     ` Jan Hubicka
@ 2014-12-15 21:57     ` Jan Hubicka
  2014-12-15 22:37       ` Jan Hubicka
  2014-12-16  9:36       ` Richard Biener
  1 sibling, 2 replies; 9+ messages in thread
From: Jan Hubicka @ 2014-12-15 21:57 UTC (permalink / raw)
  To: Richard Biener; +Cc: Jan Hubicka, gcc-patches

> On Mon, 15 Dec 2014, Jan Hubicka wrote:
> 
> > Hi, actually this patch break fortran, I get streaming error in: lto1: 
> > internal compiler error: in streamer_get_pickled_tree apparently picking 
> > error_mark_node for variable constructor results in reading 
> > integer_type...
> 
> ?
> 
> Probably the default nodes are referenced by another builtin tree instead
> and you get inconsistent streaming between f951 and lto1.  See the
> assert placed into record_common_node which you should extend to cover
> the optimization node trees.

It seems that whole common node preloading is a major can of worms ;(. Anyway
the problem here is that record_common_node replaces every NULL by error_mark_node.
It thus matters what is the last NULL pointer recorded.  It used to be TI_CURRENT_OPTIMIZE_PRAGMA
but now it is TI_PID_TYPE in some cases, TI_MAIN_IDENTIFIER in others and
real error_mark_node in rest of cases.

I am testing the following.
Honza

Index: tree-streamer.c
===================================================================
--- tree-streamer.c	(revision 218726)
+++ tree-streamer.c	(working copy)
@@ -324,7 +324,18 @@ preload_common_nodes (struct streamer_tr
     /* Skip boolean type and constants, they are frontend dependent.  */
     if (i != TI_BOOLEAN_TYPE
 	&& i != TI_BOOLEAN_FALSE
-	&& i != TI_BOOLEAN_TRUE)
+	&& i != TI_BOOLEAN_TRUE
+	/* MAIN_IDENTIFIER is not always initialized by Fortran FE.  */
+	&& i != TI_MAIN_IDENTIFIER
+	/* PID_TYPE is initialized only by C family front-ends.  */
+	&& i != TI_PID_TYPE
+	/* Skip optimization and target option nodes; they depend on flags.  */
+	&& i != TI_OPTIMIZATION_DEFAULT
+	&& i != TI_OPTIMIZATION_CURRENT
+	&& i != TI_TARGET_OPTION_DEFAULT
+	&& i != TI_TARGET_OPTION_CURRENT
+	&& i != TI_CURRENT_TARGET_PRAGMA
+	&& i != TI_CURRENT_OPTIMIZE_PRAGMA)
       record_common_node (cache, global_trees[i]);
 }
 

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Fix streaming of target optimization/option nodes
  2014-12-15 21:57     ` Jan Hubicka
@ 2014-12-15 22:37       ` Jan Hubicka
  2014-12-22 11:05         ` Thomas Schwinge
  2014-12-16  9:36       ` Richard Biener
  1 sibling, 1 reply; 9+ messages in thread
From: Jan Hubicka @ 2014-12-15 22:37 UTC (permalink / raw)
  To: Jan Hubicka; +Cc: Richard Biener, gcc-patches

Hi,
this is final version I comitted.  20110201-1_0.c actually tests that we
optimize cabs on function copmiled with -O0 that is no longer supposed to
happen.

Honza

	PR lto/64043
	* gcc.dg/lto/20110201-1_0.c: New testcase.

	* tree-streamer.c (preload_common_nodes): Skip preloading
	of main_identifier_node, pid_type and optimization/option nodes.
Index: testsuite/gcc.dg/lto/20110201-1_0.c
===================================================================
--- testsuite/gcc.dg/lto/20110201-1_0.c	(revision 218726)
+++ testsuite/gcc.dg/lto/20110201-1_0.c	(working copy)
@@ -1,6 +1,5 @@
 /* { dg-lto-do run } */
 /* { dg-lto-options { { -O0 -flto } } } */
-/* { dg-extra-ld-options "-O2 -ffast-math -fuse-linker-plugin" } */
 /* { dg-require-linker-plugin "" } */
 
 /* We require a linker plugin because otherwise we'd need to link
@@ -9,7 +8,7 @@
    which does not have folded cabs.  */
 
 double cabs(_Complex double);
-double __attribute__((used))
+double __attribute__((used)) __attribute__ ((optimize ("O2,fast-math")))
 foo (_Complex double x, int b)
 {
   if (b)
Index: tree-streamer.c
===================================================================
--- tree-streamer.c	(revision 218726)
+++ tree-streamer.c	(working copy)
@@ -324,7 +324,18 @@ preload_common_nodes (struct streamer_tr
     /* Skip boolean type and constants, they are frontend dependent.  */
     if (i != TI_BOOLEAN_TYPE
 	&& i != TI_BOOLEAN_FALSE
-	&& i != TI_BOOLEAN_TRUE)
+	&& i != TI_BOOLEAN_TRUE
+	/* MAIN_IDENTIFIER is not always initialized by Fortran FE.  */
+	&& i != TI_MAIN_IDENTIFIER
+	/* PID_TYPE is initialized only by C family front-ends.  */
+	&& i != TI_PID_TYPE
+	/* Skip optimization and target option nodes; they depend on flags.  */
+	&& i != TI_OPTIMIZATION_DEFAULT
+	&& i != TI_OPTIMIZATION_CURRENT
+	&& i != TI_TARGET_OPTION_DEFAULT
+	&& i != TI_TARGET_OPTION_CURRENT
+	&& i != TI_CURRENT_TARGET_PRAGMA
+	&& i != TI_CURRENT_OPTIMIZE_PRAGMA)
       record_common_node (cache, global_trees[i]);
 }
 

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Fix streaming of target optimization/option nodes
  2014-12-15 21:57     ` Jan Hubicka
  2014-12-15 22:37       ` Jan Hubicka
@ 2014-12-16  9:36       ` Richard Biener
  1 sibling, 0 replies; 9+ messages in thread
From: Richard Biener @ 2014-12-16  9:36 UTC (permalink / raw)
  To: Jan Hubicka; +Cc: gcc-patches

On Mon, 15 Dec 2014, Jan Hubicka wrote:

> > On Mon, 15 Dec 2014, Jan Hubicka wrote:
> > 
> > > Hi, actually this patch break fortran, I get streaming error in: lto1: 
> > > internal compiler error: in streamer_get_pickled_tree apparently picking 
> > > error_mark_node for variable constructor results in reading 
> > > integer_type...
> > 
> > ?
> > 
> > Probably the default nodes are referenced by another builtin tree instead
> > and you get inconsistent streaming between f951 and lto1.  See the
> > assert placed into record_common_node which you should extend to cover
> > the optimization node trees.
> 
> It seems that whole common node preloading is a major can of worms ;(

It is.  I've tried to get rid of most of it but unfortunately those
pointer-compares to builtin trees remain (at least va_list node).
It was also before SCC tree merging so maybe the situation isn't as bad
as it was (and we reliably at least merge cross-TU builtins where
necessary).

Ideally we'd be down to an explicitely list of pre-loaded nodes,
abstracted into a predicate function so we can update the assert
from a single place as well.  But I'm quite sure it's nothing for
stage3 ;)

Btw - please update the assert (or even better do that predicate 
function).

Thanks,
Richard.

>. Anyway
> the problem here is that record_common_node replaces every NULL by error_mark_node.
> It thus matters what is the last NULL pointer recorded.  It used to be TI_CURRENT_OPTIMIZE_PRAGMA
> but now it is TI_PID_TYPE in some cases, TI_MAIN_IDENTIFIER in others and
> real error_mark_node in rest of cases.
> 
> I am testing the following.
> Honza
> 
> Index: tree-streamer.c
> ===================================================================
> --- tree-streamer.c	(revision 218726)
> +++ tree-streamer.c	(working copy)
> @@ -324,7 +324,18 @@ preload_common_nodes (struct streamer_tr
>      /* Skip boolean type and constants, they are frontend dependent.  */
>      if (i != TI_BOOLEAN_TYPE
>  	&& i != TI_BOOLEAN_FALSE
> -	&& i != TI_BOOLEAN_TRUE)
> +	&& i != TI_BOOLEAN_TRUE
> +	/* MAIN_IDENTIFIER is not always initialized by Fortran FE.  */
> +	&& i != TI_MAIN_IDENTIFIER
> +	/* PID_TYPE is initialized only by C family front-ends.  */
> +	&& i != TI_PID_TYPE
> +	/* Skip optimization and target option nodes; they depend on flags.  */
> +	&& i != TI_OPTIMIZATION_DEFAULT
> +	&& i != TI_OPTIMIZATION_CURRENT
> +	&& i != TI_TARGET_OPTION_DEFAULT
> +	&& i != TI_TARGET_OPTION_CURRENT
> +	&& i != TI_CURRENT_TARGET_PRAGMA
> +	&& i != TI_CURRENT_OPTIMIZE_PRAGMA)
>        record_common_node (cache, global_trees[i]);
>  }
>  
> 
> 

-- 
Richard Biener <rguenther@suse.de>
SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Jennifer Guild,
Dilip Upmanyu, Graham Norton HRB 21284 (AG Nuernberg)

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Fix streaming of target optimization/option nodes
  2014-12-15 22:37       ` Jan Hubicka
@ 2014-12-22 11:05         ` Thomas Schwinge
  2015-01-05 16:59           ` H.J. Lu
  0 siblings, 1 reply; 9+ messages in thread
From: Thomas Schwinge @ 2014-12-22 11:05 UTC (permalink / raw)
  To: Jan Hubicka
  Cc: Richard Biener, gcc-patches, Bernd Schmidt, Ilya Verbin,
	Jakub Jelinek, Kirill Yukhin, Andrey Turetskiy

[-- Attachment #1: Type: text/plain, Size: 5815 bytes --]

Hi!

On Mon, 15 Dec 2014 23:36:11 +0100, Jan Hubicka <hubicka@ucw.cz> wrote:
> this is final version I comitted.

> 	PR lto/64043

> 	* tree-streamer.c (preload_common_nodes): Skip preloading
> 	of main_identifier_node, pid_type and optimization/option nodes.

> --- tree-streamer.c	(revision 218726)
> +++ tree-streamer.c	(working copy)
> @@ -324,7 +324,18 @@ preload_common_nodes (struct streamer_tr
>      /* Skip boolean type and constants, they are frontend dependent.  */
>      if (i != TI_BOOLEAN_TYPE
>  	&& i != TI_BOOLEAN_FALSE
> -	&& i != TI_BOOLEAN_TRUE)
> +	&& i != TI_BOOLEAN_TRUE
> +	/* MAIN_IDENTIFIER is not always initialized by Fortran FE.  */
> +	&& i != TI_MAIN_IDENTIFIER
> +	/* PID_TYPE is initialized only by C family front-ends.  */
> +	&& i != TI_PID_TYPE
> +	/* Skip optimization and target option nodes; they depend on flags.  */
> +	&& i != TI_OPTIMIZATION_DEFAULT
> +	&& i != TI_OPTIMIZATION_CURRENT
> +	&& i != TI_TARGET_OPTION_DEFAULT
> +	&& i != TI_TARGET_OPTION_CURRENT
> +	&& i != TI_CURRENT_TARGET_PRAGMA
> +	&& i != TI_CURRENT_OPTIMIZE_PRAGMA)
>        record_common_node (cache, global_trees[i]);
>  }

This regresses offloading (tested Intel MIC emulation):

    FAIL: libgomp.c/examples-4/e.53.5.c (internal compiler error)
    FAIL: libgomp.c/for-3.c (internal compiler error)
    FAIL: libgomp.c++/for-11.C (internal compiler error)
    FAIL: libgomp.fortran/examples-4/e.53.3.f90   -O2  (internal compiler error)
    FAIL: libgomp.fortran/examples-4/e.53.3.f90   -O3 -fomit-frame-pointer  (internal compiler error)
    FAIL: libgomp.fortran/examples-4/e.53.3.f90   -O3 -fomit-frame-pointer -funroll-loops  (internal compiler error)
    FAIL: libgomp.fortran/examples-4/e.53.3.f90   -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions  (internal compiler error)
    FAIL: libgomp.fortran/examples-4/e.53.3.f90   -O3 -g  (internal compiler error)
    FAIL: libgomp.fortran/examples-4/e.53.3.f90   -Os  (internal compiler error)
    FAIL: libgomp.fortran/examples-4/e.53.4.f90   -O2  (test for excess errors)
    FAIL: libgomp.fortran/examples-4/e.53.5.f90   -O0  (internal compiler error)
    FAIL: libgomp.fortran/examples-4/e.53.5.f90   -O1  (internal compiler error)
    FAIL: libgomp.fortran/examples-4/e.53.5.f90   -O2  (internal compiler error)
    FAIL: libgomp.fortran/examples-4/e.53.5.f90   -O3 -fomit-frame-pointer  (internal compiler error)
    FAIL: libgomp.fortran/examples-4/e.53.5.f90   -O3 -fomit-frame-pointer -funroll-loops  (internal compiler error)
    FAIL: libgomp.fortran/examples-4/e.53.5.f90   -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions  (internal compiler error)
    FAIL: libgomp.fortran/examples-4/e.53.5.f90   -O3 -g  (internal compiler error)
    FAIL: libgomp.fortran/examples-4/e.53.5.f90   -Os  (internal compiler error)

    FAIL: libgomp.c/examples-4/e.53.5.c (internal compiler error)

    [...]/source-gcc/libgomp/testsuite/libgomp.c/examples-4/e.53.5.c: In function 'accum._omp_fn.1':
    [...]/source-gcc/libgomp/testsuite/libgomp.c/examples-4/e.53.5.c:53:13: error: unrecognizable insn:
         #pragma omp parallel for reduction(+:tmp)
                 ^
    (insn 176 66 177 4 (set (reg:DI 0 ax)
            (symbol_ref:DI ("Q") <var_decl 0x2ad2db659900 Q>)) -1
         (nil))
    [...]/source-gcc/libgomp/testsuite/libgomp.c/examples-4/e.53.5.c:53:13: internal compiler error: in extract_insn, at recog.c:2327
    0x9c124a _fatal_insn(char const*, rtx_def const*, char const*, int, char const*)
            [...]/source-gcc/gcc/rtl-error.c:110
    0x9c1279 _fatal_insn_not_found(rtx_def const*, char const*, int, char const*)
            [...]/source-gcc/gcc/rtl-error.c:118
    0x98f346 extract_insn(rtx_insn*)
            [...]/source-gcc/gcc/recog.c:2327
    0x9902c8 extract_constrain_insn(rtx_insn*)
            [...]/source-gcc/gcc/recog.c:2228
    0x998a16 copyprop_hardreg_forward_1
            [...]/source-gcc/gcc/regcprop.c:773
    0x99978a execute
            [...]/source-gcc/gcc/regcprop.c:1279

    FAIL: libgomp.c/for-3.c (internal compiler error)

    [...]/source-gcc/libgomp/testsuite/libgomp.c/for-2.h: In function 'f13_d_normal':
    [...]/source-gcc/libgomp/testsuite/libgomp.c/for-2.h:171:1: error: unrecognizable insn:
     }
     ^
    (insn 73 72 55 5 (set (reg/f:DI 1 dx [orig:106 D.6870 ] [106])
            (plus:DI (reg:DI 0 ax [orig:105 D.6869 ] [105])
                (symbol_ref:DI ("a") <var_decl 0x2b249985d900 a>))) -1
         (nil))
    [...]/source-gcc/libgomp/testsuite/libgomp.c/for-2.h:171:1: internal compiler error: in extract_insn, at recog.c:2327
    0x9c124a _fatal_insn(char const*, rtx_def const*, char const*, int, char const*)
            [...]/source-gcc/gcc/rtl-error.c:110
    0x9c1279 _fatal_insn_not_found(rtx_def const*, char const*, int, char const*)
            [...]/source-gcc/gcc/rtl-error.c:118
    0x98f346 extract_insn(rtx_insn*)
            [...]/source-gcc/gcc/recog.c:2327
    0x98f3c4 extract_insn_cached(rtx_insn*)
            [...]/source-gcc/gcc/recog.c:2218
    0x749cdd cleanup_subreg_operands(rtx_insn*)
            [...]/source-gcc/gcc/final.c:3124
    0x98caf7 split_insn
            [...]/source-gcc/gcc/recog.c:2937
    0x991657 split_all_insns()
            [...]/source-gcc/gcc/recog.c:2991
    0x9916d8 rest_of_handle_split_after_reload
            [...]/source-gcc/gcc/recog.c:3938
    0x9916d8 execute
            [...]/source-gcc/gcc/recog.c:3967

Etc.


There also are related issues still open:
<http://news.gmane.org/find-root.php?message_id=%3C546DDE1C.6060203%40t-online.de%3E>,
<http://news.gmane.org/find-root.php?message_id=%3C543D0DAE.1050500%40codesourcery.com%3E>.


Grüße,
 Thomas

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 472 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Fix streaming of target optimization/option nodes
  2014-12-22 11:05         ` Thomas Schwinge
@ 2015-01-05 16:59           ` H.J. Lu
  0 siblings, 0 replies; 9+ messages in thread
From: H.J. Lu @ 2015-01-05 16:59 UTC (permalink / raw)
  To: Thomas Schwinge
  Cc: Jan Hubicka, Richard Biener, GCC Patches, Bernd Schmidt,
	Ilya Verbin, Jakub Jelinek, Kirill Yukhin, Andrey Turetskiy

On Mon, Dec 22, 2014 at 3:02 AM, Thomas Schwinge
<thomas@codesourcery.com> wrote:
> Hi!
>
> On Mon, 15 Dec 2014 23:36:11 +0100, Jan Hubicka <hubicka@ucw.cz> wrote:
>> this is final version I comitted.
>
>>       PR lto/64043
>
>>       * tree-streamer.c (preload_common_nodes): Skip preloading
>>       of main_identifier_node, pid_type and optimization/option nodes.
>

>
> This regresses offloading (tested Intel MIC emulation):
>
>     FAIL: libgomp.c/examples-4/e.53.5.c (internal compiler error)
>     FAIL: libgomp.c/for-3.c (internal compiler error)
>     FAIL: libgomp.c++/for-11.C (internal compiler error)
>     FAIL: libgomp.fortran/examples-4/e.53.3.f90   -O2  (internal compiler error)
>     FAIL: libgomp.fortran/examples-4/e.53.3.f90   -O3 -fomit-frame-pointer  (internal compiler error)
>     FAIL: libgomp.fortran/examples-4/e.53.3.f90   -O3 -fomit-frame-pointer -funroll-loops  (internal compiler error)
>     FAIL: libgomp.fortran/examples-4/e.53.3.f90   -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions  (internal compiler error)
>     FAIL: libgomp.fortran/examples-4/e.53.3.f90   -O3 -g  (internal compiler error)
>     FAIL: libgomp.fortran/examples-4/e.53.3.f90   -Os  (internal compiler error)
>     FAIL: libgomp.fortran/examples-4/e.53.4.f90   -O2  (test for excess errors)
>     FAIL: libgomp.fortran/examples-4/e.53.5.f90   -O0  (internal compiler error)
>     FAIL: libgomp.fortran/examples-4/e.53.5.f90   -O1  (internal compiler error)
>     FAIL: libgomp.fortran/examples-4/e.53.5.f90   -O2  (internal compiler error)
>     FAIL: libgomp.fortran/examples-4/e.53.5.f90   -O3 -fomit-frame-pointer  (internal compiler error)
>     FAIL: libgomp.fortran/examples-4/e.53.5.f90   -O3 -fomit-frame-pointer -funroll-loops  (internal compiler error)
>     FAIL: libgomp.fortran/examples-4/e.53.5.f90   -O3 -fomit-frame-pointer -funroll-all-loops -finline-functions  (internal compiler error)
>     FAIL: libgomp.fortran/examples-4/e.53.5.f90   -O3 -g  (internal compiler error)
>     FAIL: libgomp.fortran/examples-4/e.53.5.f90   -Os  (internal compiler error)
>
>     FAIL: libgomp.c/examples-4/e.53.5.c (internal compiler error)
>
>     [...]/source-gcc/libgomp/testsuite/libgomp.c/examples-4/e.53.5.c: In function 'accum._omp_fn.1':
>     [...]/source-gcc/libgomp/testsuite/libgomp.c/examples-4/e.53.5.c:53:13: error: unrecognizable insn:
>          #pragma omp parallel for reduction(+:tmp)
>                  ^
>     (insn 176 66 177 4 (set (reg:DI 0 ax)
>             (symbol_ref:DI ("Q") <var_decl 0x2ad2db659900 Q>)) -1
>          (nil))
>     [...]/source-gcc/libgomp/testsuite/libgomp.c/examples-4/e.53.5.c:53:13: internal compiler error: in extract_insn, at recog.c:2327
>     0x9c124a _fatal_insn(char const*, rtx_def const*, char const*, int, char const*)
>             [...]/source-gcc/gcc/rtl-error.c:110
>     0x9c1279 _fatal_insn_not_found(rtx_def const*, char const*, int, char const*)
>             [...]/source-gcc/gcc/rtl-error.c:118
>     0x98f346 extract_insn(rtx_insn*)
>             [...]/source-gcc/gcc/recog.c:2327
>     0x9902c8 extract_constrain_insn(rtx_insn*)
>             [...]/source-gcc/gcc/recog.c:2228
>     0x998a16 copyprop_hardreg_forward_1
>             [...]/source-gcc/gcc/regcprop.c:773
>     0x99978a execute
>             [...]/source-gcc/gcc/regcprop.c:1279
>
>     FAIL: libgomp.c/for-3.c (internal compiler error)
>
>     [...]/source-gcc/libgomp/testsuite/libgomp.c/for-2.h: In function 'f13_d_normal':
>     [...]/source-gcc/libgomp/testsuite/libgomp.c/for-2.h:171:1: error: unrecognizable insn:
>      }
>      ^
>     (insn 73 72 55 5 (set (reg/f:DI 1 dx [orig:106 D.6870 ] [106])
>             (plus:DI (reg:DI 0 ax [orig:105 D.6869 ] [105])
>                 (symbol_ref:DI ("a") <var_decl 0x2b249985d900 a>))) -1
>          (nil))
>     [...]/source-gcc/libgomp/testsuite/libgomp.c/for-2.h:171:1: internal compiler error: in extract_insn, at recog.c:2327
>     0x9c124a _fatal_insn(char const*, rtx_def const*, char const*, int, char const*)
>             [...]/source-gcc/gcc/rtl-error.c:110
>     0x9c1279 _fatal_insn_not_found(rtx_def const*, char const*, int, char const*)
>             [...]/source-gcc/gcc/rtl-error.c:118
>     0x98f346 extract_insn(rtx_insn*)
>             [...]/source-gcc/gcc/recog.c:2327
>     0x98f3c4 extract_insn_cached(rtx_insn*)
>             [...]/source-gcc/gcc/recog.c:2218
>     0x749cdd cleanup_subreg_operands(rtx_insn*)
>             [...]/source-gcc/gcc/final.c:3124
>     0x98caf7 split_insn
>             [...]/source-gcc/gcc/recog.c:2937
>     0x991657 split_all_insns()
>             [...]/source-gcc/gcc/recog.c:2991
>     0x9916d8 rest_of_handle_split_after_reload
>             [...]/source-gcc/gcc/recog.c:3938
>     0x9916d8 execute
>             [...]/source-gcc/gcc/recog.c:3967
>
> Etc.
>
>
> There also are related issues still open:
> <http://news.gmane.org/find-root.php?message_id=%3C546DDE1C.6060203%40t-online.de%3E>,
> <http://news.gmane.org/find-root.php?message_id=%3C543D0DAE.1050500%40codesourcery.com%3E>.
>

It also caused:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64415

-- 
H.J.

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2015-01-05 16:59 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-12-15  6:34 Fix streaming of target optimization/option nodes Jan Hubicka
2014-12-15  8:29 ` Jan Hubicka
2014-12-15  8:41   ` Richard Biener
2014-12-15 17:12     ` Jan Hubicka
2014-12-15 21:57     ` Jan Hubicka
2014-12-15 22:37       ` Jan Hubicka
2014-12-22 11:05         ` Thomas Schwinge
2015-01-05 16:59           ` H.J. Lu
2014-12-16  9:36       ` Richard Biener

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).