summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authoriverbin <iverbin@138bc75d-0d04-0410-961f-82ee72b054a4>2014-11-28 12:23:55 +0000
committeriverbin <iverbin@138bc75d-0d04-0410-961f-82ee72b054a4>2014-11-28 12:23:55 +0000
commit9f28dc4c545d6e7fb80f23ac6cf28cac82625606 (patch)
tree8ae049e61f4b3c8ed32152bf198318da139f64c4 /gcc
parent14b62468d4e322c874548fff364bcc6a533b1555 (diff)
downloadgcc-9f28dc4c545d6e7fb80f23ac6cf28cac82625606.tar.gz
gcc/
* cgraphunit.c (ipa_passes): Handle flag_generate_offload. (symbol_table::compile): Set flag_generate_offload if there is something to offload. * common.opt (flag_generate_offload): New Variable declaration. * dwarf2out.c (dwarf2out_finish): Handle flag_generate_offload. * ipa-inline-analysis.c (inline_generate_summary): Do not skip if flag_generate_offload is set. * lto-streamer.c (gate_lto_out): Handle flag_generate_offload. * passes.c (ipa_write_summaries): Do not skip if flag_generate_offload is set. * toplev.c (compile_file): Emit LTO marker if offload info has been previously emitted. Do not emit lto_slim marker if flag_generate_offload is without flag_generate_lto. * tree.c (free_lang_data): Do not skip if flag_generate_offload is set. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@218147 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog17
-rw-r--r--gcc/cgraphunit.c8
-rw-r--r--gcc/common.opt4
-rw-r--r--gcc/dwarf2out.c3
-rw-r--r--gcc/ipa-inline-analysis.c2
-rw-r--r--gcc/lto-streamer.c2
-rw-r--r--gcc/passes.c2
-rw-r--r--gcc/toplev.c28
-rw-r--r--gcc/tree.c2
9 files changed, 45 insertions, 23 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3c33c216ab5..4e6da0cd279 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,20 @@
+2014-11-28 Ilya Verbin <ilya.verbin@intel.com>
+
+ * cgraphunit.c (ipa_passes): Handle flag_generate_offload.
+ (symbol_table::compile): Set flag_generate_offload if there is something
+ to offload.
+ * common.opt (flag_generate_offload): New Variable declaration.
+ * dwarf2out.c (dwarf2out_finish): Handle flag_generate_offload.
+ * ipa-inline-analysis.c (inline_generate_summary): Do not skip if
+ flag_generate_offload is set.
+ * lto-streamer.c (gate_lto_out): Handle flag_generate_offload.
+ * passes.c (ipa_write_summaries): Do not skip if flag_generate_offload
+ is set.
+ * toplev.c (compile_file): Emit LTO marker if offload info has been
+ previously emitted. Do not emit lto_slim marker if
+ flag_generate_offload is without flag_generate_lto.
+ * tree.c (free_lang_data): Do not skip if flag_generate_offload is set.
+
2014-11-28 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* config/arm/arm-cores.def (cortex-a17.cortex-a7): New entry.
diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c
index 2fd99a7c098..fed1a3e0053 100644
--- a/gcc/cgraphunit.c
+++ b/gcc/cgraphunit.c
@@ -2075,7 +2075,7 @@ ipa_passes (void)
}
/* Some targets need to handle LTO assembler output specially. */
- if (flag_generate_lto)
+ if (flag_generate_lto || flag_generate_offload)
targetm.asm_out.lto_start ();
if (!in_lto_p)
@@ -2092,7 +2092,7 @@ ipa_passes (void)
}
}
- if (flag_generate_lto)
+ if (flag_generate_lto || flag_generate_offload)
targetm.asm_out.lto_end ();
if (!flag_ltrans && (in_lto_p || !flag_lto || flag_fat_lto_objects))
@@ -2176,10 +2176,10 @@ symbol_table::compile (void)
/* Offloading requires LTO infrastructure. */
if (!in_lto_p && g->have_offload)
- flag_generate_lto = 1;
+ flag_generate_offload = 1;
/* If LTO is enabled, initialize the streamer hooks needed by GIMPLE. */
- if (flag_generate_lto)
+ if (flag_generate_lto || flag_generate_offload)
lto_streamer_hooks_init ();
/* Don't run the IPA passes if there was any error or sorry messages. */
diff --git a/gcc/common.opt b/gcc/common.opt
index 41c8d4ed76d..752d939ed67 100644
--- a/gcc/common.opt
+++ b/gcc/common.opt
@@ -67,6 +67,10 @@ int *param_values
Variable
int flag_generate_lto
+; Nonzero if we should write GIMPLE bytecode for offload compilation.
+Variable
+int flag_generate_offload = 0
+
; True to warn about any objects definitions whose size is larger
; than N bytes. Also want about function definitions whose returned
; values are larger than N bytes, where N is 'larger_than_size'.
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index b7f93f080fc..ca1e3ef63f0 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -24423,7 +24423,8 @@ dwarf2out_finish (const char *filename)
/* When generating LTO bytecode we can not generate new assembler
names at this point and all important decls got theirs via
free-lang-data. */
- if ((!flag_generate_lto || DECL_ASSEMBLER_NAME_SET_P (decl))
+ if (((!flag_generate_lto && !flag_generate_offload)
+ || DECL_ASSEMBLER_NAME_SET_P (decl))
&& DECL_ASSEMBLER_NAME (decl) != DECL_NAME (decl))
{
add_linkage_attr (node->die, decl);
diff --git a/gcc/ipa-inline-analysis.c b/gcc/ipa-inline-analysis.c
index 2f2993ce299..9d627229809 100644
--- a/gcc/ipa-inline-analysis.c
+++ b/gcc/ipa-inline-analysis.c
@@ -4031,7 +4031,7 @@ inline_generate_summary (void)
/* When not optimizing, do not bother to analyze. Inlining is still done
because edge redirection needs to happen there. */
- if (!optimize && !flag_generate_lto && !flag_wpa)
+ if (!optimize && !flag_generate_lto && !flag_generate_offload && !flag_wpa)
return;
function_insertion_hook_holder =
diff --git a/gcc/lto-streamer.c b/gcc/lto-streamer.c
index e8347dccd65..af203302243 100644
--- a/gcc/lto-streamer.c
+++ b/gcc/lto-streamer.c
@@ -328,7 +328,7 @@ lto_streamer_init (void)
bool
gate_lto_out (void)
{
- return ((flag_generate_lto || in_lto_p)
+ return ((flag_generate_lto || flag_generate_offload || in_lto_p)
/* Don't bother doing anything if the program has errors. */
&& !seen_error ());
}
diff --git a/gcc/passes.c b/gcc/passes.c
index a3be0bbdcf9..74b40e5d80b 100644
--- a/gcc/passes.c
+++ b/gcc/passes.c
@@ -2466,7 +2466,7 @@ ipa_write_summaries (bool offload_lto_mode)
struct cgraph_node *node;
struct cgraph_node **order;
- if (!flag_generate_lto || seen_error ())
+ if ((!flag_generate_lto && !flag_generate_offload) || seen_error ())
return;
select_what_to_stream (offload_lto_mode);
diff --git a/gcc/toplev.c b/gcc/toplev.c
index 6e6adfa19f0..2f547bfd951 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -639,7 +639,7 @@ compile_file (void)
We used to emit an undefined reference here, but this produces
link errors if an object file with IL is stored into a shared
library without invoking lto1. */
- if (flag_generate_lto)
+ if (flag_generate_lto || flag_generate_offload)
{
#if defined ASM_OUTPUT_ALIGNED_DECL_COMMON
ASM_OUTPUT_ALIGNED_DECL_COMMON (asm_out_file, NULL_TREE,
@@ -653,23 +653,23 @@ compile_file (void)
(unsigned HOST_WIDE_INT) 1,
(unsigned HOST_WIDE_INT) 1);
#endif
- /* Let linker plugin know that this is a slim object and must be LTOed
- even when user did not ask for it. */
- if (!flag_fat_lto_objects)
- {
+ }
+
+ /* Let linker plugin know that this is a slim object and must be LTOed
+ even when user did not ask for it. */
+ if (flag_generate_lto && !flag_fat_lto_objects)
+ {
#if defined ASM_OUTPUT_ALIGNED_DECL_COMMON
- ASM_OUTPUT_ALIGNED_DECL_COMMON (asm_out_file, NULL_TREE,
- "__gnu_lto_slim",
- (unsigned HOST_WIDE_INT) 1, 8);
+ ASM_OUTPUT_ALIGNED_DECL_COMMON (asm_out_file, NULL_TREE, "__gnu_lto_slim",
+ (unsigned HOST_WIDE_INT) 1, 8);
#elif defined ASM_OUTPUT_ALIGNED_COMMON
- ASM_OUTPUT_ALIGNED_COMMON (asm_out_file, "__gnu_lto_slim",
- (unsigned HOST_WIDE_INT) 1, 8);
+ ASM_OUTPUT_ALIGNED_COMMON (asm_out_file, "__gnu_lto_slim",
+ (unsigned HOST_WIDE_INT) 1, 8);
#else
- ASM_OUTPUT_COMMON (asm_out_file, "__gnu_lto_slim",
- (unsigned HOST_WIDE_INT) 1,
- (unsigned HOST_WIDE_INT) 1);
+ ASM_OUTPUT_COMMON (asm_out_file, "__gnu_lto_slim",
+ (unsigned HOST_WIDE_INT) 1,
+ (unsigned HOST_WIDE_INT) 1);
#endif
- }
}
/* Attach a special .ident directive to the end of the file to identify
diff --git a/gcc/tree.c b/gcc/tree.c
index 1d5e4f6cd1e..f6a6d04a14a 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -5730,7 +5730,7 @@ free_lang_data (void)
/* If we are the LTO frontend we have freed lang-specific data already. */
if (in_lto_p
- || !flag_generate_lto)
+ || (!flag_generate_lto && !flag_generate_offload))
return 0;
/* Allocate and assign alias sets to the standard integer types