]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Mark symbols in offload tables with force_output in read_offload_tables
authorvries <vries@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 14 Jan 2016 20:01:39 +0000 (20:01 +0000)
committervries <vries@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 14 Jan 2016 20:01:39 +0000 (20:01 +0000)
2016-01-14  Tom de Vries  <tom@codesourcery.com>

PR tree-optimization/68773
* c-parser.c (c_parser_oacc_declare, c_parser_omp_declare_target): Don't
set force_output.

* parser.c (cp_parser_oacc_declare, cp_parser_omp_declare_target): Don't
set force_output.

* omp-low.c (expand_omp_target): Don't set force_output.
* varpool.c (varpool_node::get_create): Same.
* lto-cgraph.c (input_offload_tables): Mark entries in offload_vars and
offload_funcs with force_output.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@232384 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/c/ChangeLog
gcc/c/c-parser.c
gcc/cp/ChangeLog
gcc/cp/parser.c
gcc/lto-cgraph.c
gcc/omp-low.c
gcc/varpool.c

index 35e39b57501a08b796e4c677d327563445c8e1ec..d7eabaf652fbd3c978d735623a480fa2e5a53684 100644 (file)
@@ -1,3 +1,11 @@
+2016-01-14  Tom de Vries  <tom@codesourcery.com>
+
+       PR tree-optimization/68773
+       * omp-low.c (expand_omp_target): Don't set force_output.
+       * varpool.c (varpool_node::get_create): Same.
+       * lto-cgraph.c (input_offload_tables): Mark entries in offload_vars and
+       offload_funcs with force_output.
+
 2016-01-14  Jakub Jelinek  <jakub@redhat.com>
 
        PR debug/69244
index 3f40b03bc2f71cbb32f1dca7a85cd351f122a8d6..d11a822b217d7761d4a5b9500451fff46bff87ae 100644 (file)
@@ -1,3 +1,9 @@
+2016-01-14  Tom de Vries  <tom@codesourcery.com>
+
+       PR tree-optimization/68773
+       * c-parser.c (c_parser_oacc_declare, c_parser_omp_declare_target): Don't
+       set force_output.
+
 2016-01-14  Marek Polacek  <polacek@redhat.com>
 
        PR c/69262
index a0e0052156c6bc930750e14103ba2ddc61253488..919680aab47ca17d5411a7f19e17837875245302 100644 (file)
@@ -13599,10 +13599,7 @@ c_parser_oacc_declare (c_parser *parser)
                    {
                      g->have_offload = true;
                      if (is_a <varpool_node *> (node))
-                       {
-                         vec_safe_push (offload_vars, decl);
-                         node->force_output = 1;
-                       }
+                       vec_safe_push (offload_vars, decl);
                    }
                }
            }
@@ -16484,10 +16481,7 @@ c_parser_omp_declare_target (c_parser *parser)
                {
                  g->have_offload = true;
                  if (is_a <varpool_node *> (node))
-                   {
-                     vec_safe_push (offload_vars, t);
-                     node->force_output = 1;
-                   }
+                   vec_safe_push (offload_vars, t);
                }
            }
        }
index 54db540da57ce81981ea89986e25d11fab17f70d..92925a3ecb02b21b0b0d712e96cdc83da5df1a13 100644 (file)
@@ -1,3 +1,9 @@
+2016-01-14  Tom de Vries  <tom@codesourcery.com>
+
+       PR tree-optimization/68773
+       * parser.c (cp_parser_oacc_declare, cp_parser_omp_declare_target): Don't
+       set force_output.
+
 2016-01-14  Jason Merrill  <jason@redhat.com>
 
        PR c++/69261
index 13ed1ef0c53c2c0f6060e9569ef37dd1b495c188..f2d49a1bbde9a278b9f45af9f1c0887baead4a3b 100644 (file)
@@ -35164,10 +35164,7 @@ cp_parser_oacc_declare (cp_parser *parser, cp_token *pragma_tok)
                    {
                      g->have_offload = true;
                      if (is_a <varpool_node *> (node))
-                       {
-                         vec_safe_push (offload_vars, decl);
-                         node->force_output = 1;
-                       }
+                       vec_safe_push (offload_vars, decl);
                    }
                }
            }
@@ -35704,10 +35701,7 @@ cp_parser_omp_declare_target (cp_parser *parser, cp_token *pragma_tok)
                {
                  g->have_offload = true;
                  if (is_a <varpool_node *> (node))
-                   {
-                     vec_safe_push (offload_vars, t);
-                     node->force_output = 1;
-                   }
+                   vec_safe_push (offload_vars, t);
                }
            }
        }
index 82eda7e19e936adbff34b1fe0cc1895519d77269..063477920a085f93e7099c8d00e8bbec49edb6c5 100644 (file)
@@ -1911,6 +1911,11 @@ input_offload_tables (void)
              tree fn_decl
                = lto_file_decl_data_get_fn_decl (file_data, decl_index);
              vec_safe_push (offload_funcs, fn_decl);
+
+             /* Prevent IPA from removing fn_decl as unreachable, since there
+                may be no refs from the parent function to child_fn in offload
+                LTO mode.  */
+             cgraph_node::get (fn_decl)->mark_force_output ();
            }
          else if (tag == LTO_symtab_variable)
            {
@@ -1918,6 +1923,10 @@ input_offload_tables (void)
              tree var_decl
                = lto_file_decl_data_get_var_decl (file_data, decl_index);
              vec_safe_push (offload_vars, var_decl);
+
+             /* Prevent IPA from removing var_decl as unused, since there
+                may be no refs to var_decl in offload LTO mode.  */
+             varpool_node::get (var_decl)->force_output = 1;
            }
          else
            fatal_error (input_location,
index 9dda946f99f0bfb94736fde60acdb71acf08216f..6df01a476e1ecec35a7609bc86f885d329943f6b 100644 (file)
@@ -12771,11 +12771,6 @@ expand_omp_target (struct omp_region *region)
        assign_assembler_name_if_neeeded (child_fn);
       cgraph_edge::rebuild_edges ();
 
-      /* Prevent IPA from removing child_fn as unreachable, since there are no
-        refs from the parent function to child_fn in offload LTO mode.  */
-      if (ENABLE_OFFLOADING)
-       cgraph_node::get (child_fn)->mark_force_output ();
-
       /* Some EH regions might become dead, see PR34608.  If
         pass_cleanup_cfg isn't the first pass to happen with the
         new child, these dead EH edges might cause problems.
index 4654459cf8e8adebf8683eb2d71c382b8d5c0d1d..d88343cdc091f7a328cb3ee3e8b5817af50af856 100644 (file)
@@ -158,7 +158,6 @@ varpool_node::get_create (tree decl)
          g->have_offload = true;
          if (!in_lto_p)
            vec_safe_push (offload_vars, decl);
-         node->force_output = 1;
        }
     }