]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
decl.c (gnat_to_gnu_subprog_type): Build only a minimal PARM_DECL when the parameter...
authorEric Botcazou <ebotcazou@adacore.com>
Mon, 13 Jun 2016 08:17:07 +0000 (08:17 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Mon, 13 Jun 2016 08:17:07 +0000 (08:17 +0000)
* gcc-interface/decl.c (gnat_to_gnu_subprog_type): Build only a minimal
PARM_DECL when the parameter type is dummy.
* gcc-interface/trans.c (Call_to_gnu): Translate formal types before
formal objects.

From-SVN: r237362

gcc/ada/ChangeLog
gcc/ada/gcc-interface/decl.c
gcc/ada/gcc-interface/trans.c

index 4ab664865a6de855913799bce5f77053738952c3..930e86681ff4eebfefaa19909b6043f8d24a85a4 100644 (file)
@@ -1,3 +1,10 @@
+2016-06-13  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gcc-interface/decl.c (gnat_to_gnu_subprog_type): Build only a minimal
+       PARM_DECL when the parameter type is dummy.
+       * gcc-interface/trans.c (Call_to_gnu): Translate formal types before
+       formal objects.
+
 2016-06-13  Eric Botcazou  <ebotcazou@adacore.com>
 
        * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Deal with
index 985527ea5ecfbe02e21c5a1f1505dd1ecc40c573..0ce2d47f19509bd749f62d744680cc530a0fae89 100644 (file)
@@ -5959,8 +5959,11 @@ gnat_to_gnu_subprog_type (Entity_Id gnat_subprog, bool definition,
 
              else
                {
+                 /* Build a minimal PARM_DECL without DECL_ARG_TYPE so that
+                    Call_to_gnu will stop if it encounters the PARM_DECL.  */
                  gnu_param
-                   = create_param_decl (gnu_param_name, gnu_param_type);
+                   = build_decl (input_location, PARM_DECL, gnu_param_name,
+                                 gnu_param_type);
                  associate_subprog_with_dummy_type (gnat_subprog,
                                                     gnu_param_type);
                  incomplete_profile_p = true;
index 2f47e9aa63e13b457a9daa6647895161242e8859..f110e928b93f1b3a776584ec101c2db5aaf3fcbc 100644 (file)
@@ -4341,9 +4341,9 @@ Call_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p, tree gnu_target,
        gnat_actual = Next_Actual (gnat_actual))
     {
       Entity_Id gnat_formal_type = Etype (gnat_formal);
+      tree gnu_formal_type = gnat_to_gnu_type (gnat_formal_type);
       tree gnu_formal = present_gnu_tree (gnat_formal)
                        ? get_gnu_tree (gnat_formal) : NULL_TREE;
-      tree gnu_formal_type = gnat_to_gnu_type (gnat_formal_type);
       const bool is_true_formal_parm
        = gnu_formal && TREE_CODE (gnu_formal) == PARM_DECL;
       const bool is_by_ref_formal_parm