Ping.
On 17 December 2013 15:35, Michael V. Zolotukhin <michael.v.zolotuk...@gmail.com> wrote: > Hi everybody, > > Here is a set of patches implementing one more piece of offloading support in > GCC. These three patches allow to build a host binary with target image and > all > tables embedded. Along with patches for libgomp and libgomp plugin, which > hopefully will be sent soon, that gives a functional and runnable executable > (or > DSO) with actual offloading to MIC. > > There is still a lot to do in this area, but this is the necessary basics - > with > this we could actually run offloaded code, produced fully by compiler. > > We would like to hear any feedback on these patches: what issues we should > address first before commit (if any), how the patches fit OpenACC work, etc. > > Here is a patch 1/3: Add '-fopenmp_target' option This option tells lto1 to > look > for "*.target_lto*" sections instead of usual "*.lto*". That option is passed > to target compiler when we invoke it to build target image. > > Thanks, > Michael > > > --- > gcc/lto/lang.opt | 4 ++++ > gcc/lto/lto-object.c | 5 +++-- > gcc/lto/lto.c | 7 ++++++- > 3 files changed, 13 insertions(+), 3 deletions(-) > > diff --git a/gcc/lto/lang.opt b/gcc/lto/lang.opt > index 7a9aede..cd0098c 100644 > --- a/gcc/lto/lang.opt > +++ b/gcc/lto/lang.opt > @@ -40,4 +40,8 @@ fresolution= > LTO Joined > The resolution file > > +fopenmp_target > +LTO Var(flag_openmp_target) > +Run LTO infrastructure to read target-side bytecode and to build it. > + > ; This comment is to ensure we retain the blank line above. > diff --git a/gcc/lto/lto-object.c b/gcc/lto/lto-object.c > index 19f10cc..64274f3 100644 > --- a/gcc/lto/lto-object.c > +++ b/gcc/lto/lto-object.c > @@ -59,6 +59,8 @@ struct lto_simple_object > > static simple_object_attributes *saved_attributes; > > +extern const char *section_name_prefix; > + > /* Initialize FILE, an LTO file object for FILENAME. */ > > static void > @@ -229,8 +231,7 @@ lto_obj_add_section (void *data, const char *name, off_t > offset, > void **slot; > struct lto_section_list *list = loasd->list; > > - if (strncmp (name, LTO_SECTION_NAME_PREFIX, > - strlen (LTO_SECTION_NAME_PREFIX)) != 0) > + if (strncmp (name, section_name_prefix, strlen (section_name_prefix))) > return 1; > > new_name = xstrdup (name); > diff --git a/gcc/lto/lto.c b/gcc/lto/lto.c > index 0211437..dedf8a8 100644 > --- a/gcc/lto/lto.c > +++ b/gcc/lto/lto.c > @@ -49,6 +49,8 @@ along with GCC; see the file COPYING3. If not see > #include "context.h" > #include "pass_manager.h" > > +extern const char *section_name_prefix; > + > /* Vector to keep track of external variables we've seen so far. */ > vec<tree, va_gc> *lto_global_var_decls; > > @@ -2081,7 +2083,7 @@ lto_section_with_id (const char *name, unsigned > HOST_WIDE_INT *id) > { > const char *s; > > - if (strncmp (name, LTO_SECTION_NAME_PREFIX, strlen > (LTO_SECTION_NAME_PREFIX))) > + if (strncmp (name, section_name_prefix, strlen (section_name_prefix))) > return 0; > s = strrchr (name, '.'); > return s && sscanf (s, "." HOST_WIDE_INT_PRINT_HEX_PURE, id) == 1; > @@ -2757,6 +2759,9 @@ read_cgraph_and_symbols (unsigned nfiles, const char > **fnames) > > timevar_push (TV_IPA_LTO_DECL_IN); > > + if (flag_openmp_target) > + section_name_prefix = OMP_SECTION_NAME_PREFIX; > + > real_file_decl_data > = decl_data = ggc_alloc_cleared_vec_lto_file_decl_data_ptr (nfiles + 1); > real_file_count = nfiles; > -- > 1.7.1 > > >