aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/gigi.h
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/ada/gigi.h')
-rw-r--r--gcc/ada/gigi.h23
1 files changed, 20 insertions, 3 deletions
diff --git a/gcc/ada/gigi.h b/gcc/ada/gigi.h
index 9dba805530d..6dd10ff8210 100644
--- a/gcc/ada/gigi.h
+++ b/gcc/ada/gigi.h
@@ -248,9 +248,21 @@ extern void init_code_table (void);
called. */
extern Node_Id error_gnat_node;
-/* This is equivalent to stabilize_reference in GCC's tree.c, but we know
- how to handle our new nodes and we take an extra argument that says
- whether to force evaluation of everything. */
+/* This is equivalent to stabilize_reference in GCC's tree.c, but we know how
+ to handle our new nodes and we take extra arguments.
+
+ FORCE says whether to force evaluation of everything,
+
+ SUCCESS we set to true unless we walk through something we don't
+ know how to stabilize, or through something which is not an lvalue
+ and LVALUES_ONLY is true, in which cases we set to false. */
+extern tree maybe_stabilize_reference (tree ref, bool force, bool lvalues_only,
+ bool *success);
+
+/* Wrapper around maybe_stabilize_reference, for common uses without
+ lvalue restrictions and without need to examine the success
+ indication. */
+
extern tree gnat_stabilize_reference (tree ref, bool force);
/* Highest number in the front-end node table. */
@@ -612,6 +624,11 @@ extern tree build_vms_descriptor (tree type, Mechanism_Type mech,
extern tree build_unc_object_type (tree template_type, tree object_type,
tree name);
+/* Same as build_unc_object_type, but taking a thin or fat pointer type
+ instead of the template type. */
+extern tree build_unc_object_type_from_ptr (tree thin_fat_ptr_type,
+ tree object_type, tree name);
+
/* Update anything previously pointing to OLD_TYPE to point to NEW_TYPE. In
the normal case this is just two adjustments, but we have more to do
if NEW is an UNCONSTRAINED_ARRAY_TYPE. */