aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/gcc-interface/ada-tree.h
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2010-10-10 11:26:16 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2010-10-10 11:26:16 +0000
commit0c70025900f1242f8aa7822e1f681bb76ec12893 (patch)
tree9c1accfcc79570d6e07d2005ef040f4da7a9db32 /gcc/ada/gcc-interface/ada-tree.h
parent2461ab4bb799e914f519d800592e49624b01f822 (diff)
downloadgcc-0c70025900f1242f8aa7822e1f681bb76ec12893.zip
gcc-0c70025900f1242f8aa7822e1f681bb76ec12893.tar.gz
gcc-0c70025900f1242f8aa7822e1f681bb76ec12893.tar.bz2
ada-tree.h (DECL_BY_DOUBLE_REF_P): New macro.
* gcc-interface/ada-tree.h (DECL_BY_DOUBLE_REF_P): New macro. * gcc-interface/gigi.h (annotate_object): Add BY_DOUBLE_REF parameter. * gcc-interface/decl.c (annotate_object): Likewise and handle it. (gnat_to_gnu_entity): Adjust calls to annotate_object. (gnat_to_gnu_param): If fat pointer types are passed by reference on the target, pass them by explicit reference. * gcc-interface/misc.c (default_pass_by_ref): Fix type of constant. * gcc-interface/trans.c (Identifier_to_gnu): Do DECL_BY_DOUBLE_REF_P. (Subprogram_Body_to_gnu): Adjust call to annotate_object. (call_to_gnu): Handle DECL_BY_DOUBLE_REF_P. * gcc-interface/utils.c (convert_vms_descriptor): Add BY_REF parameter and handle it. (build_function_stub): Iterate on the parameters of the subprogram in lieu of on the argument types. Adjust call to convert_vms_descriptor. From-SVN: r165250
Diffstat (limited to 'gcc/ada/gcc-interface/ada-tree.h')
-rw-r--r--gcc/ada/gcc-interface/ada-tree.h10
1 files changed, 7 insertions, 3 deletions
diff --git a/gcc/ada/gcc-interface/ada-tree.h b/gcc/ada/gcc-interface/ada-tree.h
index 5092ff3..9002fa1 100644
--- a/gcc/ada/gcc-interface/ada-tree.h
+++ b/gcc/ada/gcc-interface/ada-tree.h
@@ -332,14 +332,18 @@ do { \
constant CONSTRUCTOR. */
#define DECL_CONST_ADDRESS_P(NODE) DECL_LANG_FLAG_0 (CONST_DECL_CHECK (NODE))
-/* Nonzero if this decl is always used by reference; i.e., an INDIRECT_REF
+/* Nonzero in a PARM_DECL if it is always used by double reference, i.e. a
+ pair of INDIRECT_REFs is needed to access the object. */
+#define DECL_BY_DOUBLE_REF_P(NODE) DECL_LANG_FLAG_0 (PARM_DECL_CHECK (NODE))
+
+/* Nonzero in a DECL if it is always used by reference, i.e. an INDIRECT_REF
is needed to access the object. */
#define DECL_BY_REF_P(NODE) DECL_LANG_FLAG_1 (NODE)
/* Nonzero in a FIELD_DECL that is a dummy built for some internal reason. */
#define DECL_INTERNAL_P(NODE) DECL_LANG_FLAG_3 (FIELD_DECL_CHECK (NODE))
-/* Nonzero if this decl is a PARM_DECL for an Ada array being passed to a
+/* Nonzero in a PARM_DECL if it is made for an Ada array being passed to a
foreign convention subprogram. */
#define DECL_BY_COMPONENT_PTR_P(NODE) DECL_LANG_FLAG_3 (PARM_DECL_CHECK (NODE))
@@ -347,7 +351,7 @@ do { \
#define DECL_ELABORATION_PROC_P(NODE) \
DECL_LANG_FLAG_3 (FUNCTION_DECL_CHECK (NODE))
-/* Nonzero if this is a decl for a pointer that points to something which
+/* Nonzero in a DECL if it is made for a pointer that points to something which
is readonly. Used mostly for fat pointers. */
#define DECL_POINTS_TO_READONLY_P(NODE) DECL_LANG_FLAG_4 (NODE)