/* Default language-specific hooks.
- Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+ Copyright (C) 2001-2014 Free Software Foundation, Inc.
Contributed by Alexandre Oliva <aoliva@redhat.com>
This file is part of GCC.
#include "tm.h"
#include "toplev.h"
#include "tree.h"
+#include "stringpool.h"
+#include "attribs.h"
#include "tree-inline.h"
-#include "gimple.h"
+#include "gimplify.h"
#include "rtl.h"
#include "insn-config.h"
-#include "integrate.h"
#include "flags.h"
#include "langhooks.h"
#include "target.h"
#include "langhooks-def.h"
-#include "ggc.h"
#include "diagnostic.h"
#include "tree-diagnostic.h"
#include "cgraph.h"
+#include "timevar.h"
#include "output.h"
/* Do nothing; in many cases the default hook. */
return t;
}
-/* Do nothing (int). */
-
-void
-lhd_do_nothing_i (int ARG_UNUSED (i))
-{
-}
-
/* Do nothing (int, int, int). Return NULL_TREE. */
tree
tree globals, decl, *vec;
int len, i;
- /* This lang hook is dual-purposed, and also finalizes the
- compilation unit. */
- cgraph_finalize_compilation_unit ();
-
+ timevar_start (TV_PHASE_DEFERRED);
/* Really define vars that have had only a tentative definition.
Really output inline functions that must actually be callable
and have not been output so far. */
wrapup_global_declarations (vec, len);
check_global_declarations (vec, len);
+ timevar_stop (TV_PHASE_DEFERRED);
+
+ timevar_start (TV_PHASE_OPT_GEN);
+ /* This lang hook is dual-purposed, and also finalizes the
+ compilation unit. */
+ finalize_compilation_unit ();
+ timevar_stop (TV_PHASE_OPT_GEN);
+
+ timevar_start (TV_PHASE_DBGINFO);
emit_debug_global_declarations (vec, len);
+ timevar_stop (TV_PHASE_DBGINFO);
/* Clean up. */
free (vec);
{
}
-/* Called to perform language-specific options initialization of OPTS. */
-void
-lhd_init_options_struct (struct gcc_options *opts ATTRIBUTE_UNUSED)
-{
-}
-
/* Called to perform language-specific options initialization. */
void
lhd_init_options (unsigned int decoded_options_count ATTRIBUTE_UNUSED,
lhd_handle_option (size_t code ATTRIBUTE_UNUSED,
const char *arg ATTRIBUTE_UNUSED,
int value ATTRIBUTE_UNUSED, int kind ATTRIBUTE_UNUSED,
+ location_t loc ATTRIBUTE_UNUSED,
const struct cl_option_handlers *handlers ATTRIBUTE_UNUSED)
{
return false;
const char *old_prefix = context->printer->prefix;
tree abstract_origin = diagnostic_abstract_origin (diagnostic);
char *new_prefix = (file && abstract_origin == NULL)
- ? file_name_as_prefix (file) : NULL;
+ ? file_name_as_prefix (context, file) : NULL;
pp_set_prefix (context->printer, new_prefix);
if (fndecl)
{
expanded_location s = expand_location (*locus);
- pp_character (context->printer, ',');
+ pp_comma (context->printer);
pp_newline (context->printer);
if (s.file != NULL)
{
if (context->show_column)
pp_printf (context->printer,
- _(" inlined from %qs at %s:%d:%d"),
+ _(" inlined from %qs at %r%s:%d:%d%R"),
identifier_to_locale (lang_hooks.decl_printable_name (fndecl, 2)),
- s.file, s.line, s.column);
+ "locus", s.file, s.line, s.column);
else
pp_printf (context->printer,
- _(" inlined from %qs at %s:%d"),
+ _(" inlined from %qs at %r%s:%d%R"),
identifier_to_locale (lang_hooks.decl_printable_name (fndecl, 2)),
- s.file, s.line);
+ "locus", s.file, s.line);
}
else
identifier_to_locale (lang_hooks.decl_printable_name (fndecl, 2)));
}
}
- pp_character (context->printer, ':');
+ pp_colon (context->printer);
}
diagnostic_set_last_function (context, diagnostic);
- pp_flush (context->printer);
+ pp_newline_and_flush (context->printer);
context->printer->prefix = old_prefix;
free ((char*) new_prefix);
}
}
-tree
-lhd_callgraph_analyze_expr (tree *tp ATTRIBUTE_UNUSED,
- int *walk_subtrees ATTRIBUTE_UNUSED)
-{
- return NULL;
-}
-
tree
lhd_make_node (enum tree_code code)
{
{
}
+/* Return true if TYPE is an OpenMP mappable type. */
+
+bool
+lhd_omp_mappable_type (tree type)
+{
+ /* Mappable type has to be complete. */
+ if (type == error_mark_node || !COMPLETE_TYPE_P (type))
+ return false;
+ return true;
+}
+
/* Common function for add_builtin_function and
add_builtin_function_ext_scope. */
static tree
return decl;
}
+/* Create a builtin type. */
+
+tree
+add_builtin_type (const char *name, tree type)
+{
+ tree id = get_identifier (name);
+ tree decl = build_decl (BUILTINS_LOCATION, TYPE_DECL, id, type);
+ return lang_hooks.decls.pushdecl (decl);
+}
+
/* LTO hooks. */
/* Used to save and restore any previously active section. */