> In r207132, I have now committed a merge of trunk r206958 (2014-01-23).
> Compared to a pristine trunk r206958 build, there is one regression:
> 
>     FAIL: g++.dg/gomp/declare-simd-1.C -std=c++98 (internal compiler error)
>     FAIL: g++.dg/gomp/declare-simd-1.C -std=c++11 (internal compiler error)
> 
>     [...]/build/gcc/testsuite/g++/../../xg++ 
> -B[...]/build/gcc/testsuite/g++/../../ 
> [...]/source/gcc/testsuite/g++.dg/gomp/declare-simd-1.C 
> -fno-diagnostics-show-caret -fdiagnostics-color=never -nostdinc++ 
> -I[...]/build/x86_64-unknown-linux-gnu/libstdc++-v3/include/x86_64-unknown-linux-gnu
>  -I[...]/build/x86_64-unknown-linux-gnu/libstdc++-v3/include 
> -I[...]/source/libstdc++-v3/libsupc++ 
> -I[...]/source/libstdc++-v3/include/backward 
> -I[...]/source/libstdc++-v3/testsuite/util -fmessage-length=0 -std=c++98 
> -fopenmp -S -o declare-simd-1.s
>     [...]/source/gcc/testsuite/g++.dg/gomp/declare-simd-1.C:243:1: internal 
> compiler error: in estimate_function_body_sizes, at ipa-inline-analysis.c:2403
>     0xa19664 estimate_function_body_sizes
>             ../../source/gcc/ipa-inline-analysis.c:2403
>     0xa19ef1 compute_inline_parameters(cgraph_node*, bool)
>             ../../source/gcc/ipa-inline-analysis.c:2797
>     0xa1a200 inline_analyze_function
>             ../../source/gcc/ipa-inline-analysis.c:3790
>     0x865a10 cgraph_call_function_insertion_hooks(cgraph_node*)
>             ../../source/gcc/cgraph.c:405
>     0xacc652 simd_clone_create
>             ../../source/gcc/omp-low.c:11600
>     0xacc652 expand_simd_clones
>             ../../source/gcc/omp-low.c:12370
>     0xacc652 ipa_omp_simd_clone
>             ../../source/gcc/omp-low.c:12410
>     0xacc652 execute
>             ../../source/gcc/omp-low.c:12443
> 
> In my understanding, the only gomp-4_0-branch-specific change that is a
> candidate to cause this is r205214 (Ilya Tocar, commited by Kirill
> Yukhin) for "LTO" streaming.  As I couldn't easily tell what's wrong (all
> changes from r205214 are still present; there were no obvious conflicts),
> could you guys please have a look at that one?
> 

Hi,
Sorry for the delay, i was busy with AVX512.
I finally had time to look into this bug.
The problem in r205214 was in adding add_new_function hook in
inline_generate_summary with -O0 -fopenmp and not removing it,
before running expand_simd_clones.
I've changed inline_free_summary to always remove hooks.
Patch bellow. It bootstraps, passes make check, fixes declare-simd-1.C.
Ok for gomp4 branch?

---
 gcc/ipa-inline-analysis.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/gcc/ipa-inline-analysis.c b/gcc/ipa-inline-analysis.c
index d4abd90..440ae79 100644
--- a/gcc/ipa-inline-analysis.c
+++ b/gcc/ipa-inline-analysis.c
@@ -4143,11 +4143,6 @@ void
 inline_free_summary (void)
 {
   struct cgraph_node *node;
-  if (!inline_edge_summary_vec.exists ())
-    return;
-  FOR_EACH_DEFINED_FUNCTION (node)
-    if (!node->alias)
-      reset_inline_summary (node);
   if (function_insertion_hook_holder)
     cgraph_remove_function_insertion_hook (function_insertion_hook_holder);
   function_insertion_hook_holder = NULL;
@@ -4162,6 +4157,11 @@ inline_free_summary (void)
   node_duplication_hook_holder = NULL;
   if (edge_duplication_hook_holder)
     cgraph_remove_edge_duplication_hook (edge_duplication_hook_holder);
+  if (!inline_edge_summary_vec.exists ())
+    return;
+  FOR_EACH_DEFINED_FUNCTION (node)
+    if (!node->alias)
+      reset_inline_summary (node);
   edge_duplication_hook_holder = NULL;
   vec_free (inline_summary_vec);
   inline_edge_summary_vec.release ();
-- 
1.8.3.1

Reply via email to