aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/decl.c
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@gcc.gnu.org>2003-10-29 11:26:16 +0100
committerArnaud Charlet <charlet@gcc.gnu.org>2003-10-29 11:26:16 +0100
commit657a9dd94da7d0ea2a6488a1a1f404f86a82132c (patch)
treebfeb47fbaa83d3e8b0332c1ec93ed78b01e52cf8 /gcc/ada/decl.c
parente9da8a5af764758dab39da8afb53009bbd01e795 (diff)
downloadgcc-657a9dd94da7d0ea2a6488a1a1f404f86a82132c.zip
gcc-657a9dd94da7d0ea2a6488a1a1f404f86a82132c.tar.gz
gcc-657a9dd94da7d0ea2a6488a1a1f404f86a82132c.tar.bz2
3vtrasym.adb, [...]: Minor reformatting
* 3vtrasym.adb, 5vtraent.ads, sprint.adb, sem_ch10.adb: Minor reformatting * exp_ch5.adb (Expand_Assign_Array): Test for bit unaligned operands (Expand_Assign_Record): Test right hand side for bit unaligned as well * 3vtrasym.adb: * 5vtraent.adb: * 5vtraent.ads: * tb-alvms.c: Support for TBK$SYMBOLIZE-based symbolic traceback. * exp_disp.adb: Revert previous change, that did not work well when pragma No_Run_Time was used in conjunction with a run-time other than ZFP. * make.adb: (Gnatmake): When there are no Ada mains in attribute Main, disable the bind and link steps only is switch -z is not used. * Makefile.generic: Remove duplicated setting of CC. * Makefile.prolog: Set CC to gcc by default, to override make's default (cc). * einfo.h: Regenerated. * sem_ch10.adb (Analyze_Subunit): Restore state of suppress flags for current body, after compiling subunit. * itypes.adb (Create_Itype): In ASIS_Mode, do not freeze the itype when in deleted code, because gigi needs properly ordered freeze actions to annotate types. * freeze.adb (Is_Fully_Defined): Predicate must be recursive, to prevent the premature freezing of record type that contains subcomponents with a private type that does not yet have a completion. * sem_ch12.adb: (Analyze_Package_Instantiation): Check that instances can not be used in limited with_clauses. * sem_ch8.adb: (Analyze_Package_Renaming): Check that limited withed packages cannot be renamed. Improve text on error messages related to limited with_clauses. * einfo.adb, einfo.ads: Remove Non_Limited_Views attribute. * sprint.adb: (Sprint_Node_Actual): Print limited with_clauses. Update copyright notice. * sem_ch10.adb: (Build_Limited_Views): Complete its documentation. (Install_Limited_Context_Clauses): New subprogram that isolates all the checks required for limited context_clauses and installs the limited view. (Install_Limited_Withed_Unit): Complete its documentation. (Analyze_Context): Check that limited with_clauses are only allowed in package specs. (Install_Context): Call Install_Limited_Context_Clauses after the parents have been installed. (Install_Limited_Withed_Unit): Add documentation. Mark the installed package as 'From_With_Type'; this mark indicates that the limited view is installed. Used to check bad usages of limited with_clauses. (Build_Limited_Views): Do not add shadow entities to the scope's list of entities. Do not add real entities to the Non_Limited_Views chain. Improve error notification. (Remove_Context_Clauses): Remove context clauses in two phases: limited views first and regular views later (to maintain the stack model). (Remove_Limited_With_Clause): If the package is analyzed then reinstall its visible entities. * sem_type.adb (Specific_Type): Type Universal_Fixed is compatible with any type that Is_Fixed_Point_Type. * sinfo.ads: Fix documentation for Associated_Node attribute. * switch-c.adb (Scan_Front_End_Switches): ASIS_Mode is set now when both '-gnatc' and '-gnatt' are specified. * atree.adb (Initialize): Add initialization for Node_Count (set to zero). * decl.c (gnat_to_gnu_entity, case E_Subprogram): If no return value, do not consider as Pure. Part of implementation of function-at-a-time: * trans.c (gnat_to_gnu_code): If IS_STMT, call expand_expr_stmt. (tree_transform): Add new argument to build_component_ref. (tree_transform, case N_Assignment_Statement): Make and return an EXPR_STMT. (tree_transform): If result IS_STMT, set flags and return it. (gnat_expand_stmt, set_lineno_from_sloc): New functions. * utils2.c (build_simple_component_ref, build_component_ref): Add new arg, NO_FOLD_P. (build_binary_op, case EQ_EXPR): Pass additional arg to it. (build_allocator): Likewise. * utils.c (convert_to_fat_pointer, convert_to_thin_pointer, convert): Add new arg to build_component_ref. (maybe_unconstrained_array, unchecked_convert): Likewise. * ada-tree.def (EXPR_STMT): New code. * ada-tree.h (IS_STMT, TREE_SLOC, EXPR_STMT_EXPR): New macros. * decl.c (gnat_to_gnu_entity, case object): Add extra arg to build_component_ref calls. * misc.c (gnat_expand_expr): If IS_STMT, call gnat_expand_stmt. * gigi.h (gnat_expand_stmt, set_lineno_from_sloc): New functions. (build_component_ref): Add new argument, NO_FOLD_P. From-SVN: r73032
Diffstat (limited to 'gcc/ada/decl.c')
-rw-r--r--gcc/ada/decl.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/gcc/ada/decl.c b/gcc/ada/decl.c
index bbad5b5..d01074e 100644
--- a/gcc/ada/decl.c
+++ b/gcc/ada/decl.c
@@ -946,7 +946,7 @@ gnat_to_gnu_entity (gnat_entity, gnu_expr, definition)
gnu_expr
= build_component_ref
(gnu_expr, NULL_TREE,
- TREE_CHAIN (TYPE_FIELDS (TREE_TYPE (gnu_expr))));
+ TREE_CHAIN (TYPE_FIELDS (TREE_TYPE (gnu_expr))), 0);
}
if (TREE_CODE (TYPE_SIZE_UNIT (gnu_alloc_type)) == INTEGER_CST
@@ -990,7 +990,7 @@ gnat_to_gnu_entity (gnat_entity, gnu_expr, definition)
(build_binary_op
(MODIFY_EXPR, NULL_TREE,
build_component_ref (gnu_new_var, NULL_TREE,
- TYPE_FIELDS (gnu_new_type)),
+ TYPE_FIELDS (gnu_new_type), 0),
gnu_expr));
gnu_type = build_reference_type (gnu_type);
@@ -998,7 +998,7 @@ gnat_to_gnu_entity (gnat_entity, gnu_expr, definition)
= build_unary_op
(ADDR_EXPR, gnu_type,
build_component_ref (gnu_new_var, NULL_TREE,
- TYPE_FIELDS (gnu_new_type)));
+ TYPE_FIELDS (gnu_new_type), 0));
gnu_size = 0;
used_by_ref = 1;
@@ -3536,6 +3536,13 @@ gnat_to_gnu_entity (gnat_entity, gnu_expr, definition)
if (! global_bindings_p ())
pure_flag = 0;
+ /* A subprogram (something that doesn't return anything) shouldn't
+ be considered Pure since there would be no reason for such a
+ subprogram. Note that procedures with Out (or In Out) parameters
+ have already been converted into a function with a return type. */
+ if (TREE_CODE (gnu_return_type) == VOID_TYPE)
+ pure_flag = 0;
+
gnu_type
= build_qualified_type (gnu_type,
(TYPE_QUALS (gnu_type)