On Wed, Oct 01, 2014 at 08:13:32PM +0400, Ilya Verbin wrote: > @@ -1994,9 +1995,40 @@ output_in_order (bool no_reorder) > free (nodes); > } > > +/* Check whether there is at least one function or global variable to > offload. > + */
The */ alone on a line is weird, put the last word on the next line too. > + FOR_EACH_DEFINED_VARIABLE (vnode) > + { > + if (!lookup_attribute ("omp declare target", > + DECL_ATTRIBUTES (vnode->decl)) > + || TREE_CODE (vnode->decl) != VAR_DECL > + || DECL_SIZE (vnode->decl) == 0) While I hope the varpool code puts only decls that have DECL_ATTRIBUTES into FOR_EACH_DEFINED_VARIABLE, it would be better to put the less expensive tests first, i.e. the last two first, then lookup_attribute. Also, DECL_SIZE is a tree, so == NULL_TREE? And, once there is an option to select which offload targets to generate code for (or none), initialize_offload () should supposedly return false if the user requested no offloading on the command line. The omp-low.c changes look good, for the cgraph/LTO stuff I defer to Honza and/or Richard, if they are fine with the changes, so am I. Jakub