trans.c (Call_to_gnu): Robustify test for function case if the CICO mechanism is used.
* gcc-interface/trans.c (Call_to_gnu): Robustify test for function case if the CICO mechanism is used. From-SVN: r189204
This commit is contained in:
parent
4a147e4e04
commit
b83053bf42
4 changed files with 21 additions and 3 deletions
|
@ -1,3 +1,8 @@
|
|||
2012-07-03 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* gcc-interface/trans.c (Call_to_gnu): Robustify test for function case
|
||||
if the CICO mechanism is used.
|
||||
|
||||
2012-07-03 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* gcc-interface/utils2.c (build_simple_component_ref): Do not look
|
||||
|
|
|
@ -4084,7 +4084,7 @@ Call_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p, tree gnu_target,
|
|||
|
||||
/* The first entry is for the actual return value if this is a
|
||||
function, so skip it. */
|
||||
if (TREE_VALUE (gnu_cico_list) == void_type_node)
|
||||
if (function_call)
|
||||
gnu_cico_list = TREE_CHAIN (gnu_cico_list);
|
||||
|
||||
if (Nkind (Name (gnat_node)) == N_Explicit_Dereference)
|
||||
|
@ -4188,8 +4188,7 @@ Call_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p, tree gnu_target,
|
|||
return value from it and update the return type. */
|
||||
if (TYPE_CI_CO_LIST (gnu_subprog_type))
|
||||
{
|
||||
tree gnu_elmt = value_member (void_type_node,
|
||||
TYPE_CI_CO_LIST (gnu_subprog_type));
|
||||
tree gnu_elmt = TYPE_CI_CO_LIST (gnu_subprog_type);
|
||||
gnu_call = build_component_ref (gnu_call, NULL_TREE,
|
||||
TREE_PURPOSE (gnu_elmt), false);
|
||||
gnu_result_type = TREE_TYPE (gnu_call);
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2012-07-03 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* gnat.dg/recursive_call.adb: New test.
|
||||
|
||||
2012-07-03 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* gnat.dg/discr37.ad[sb]: New test.
|
||||
|
|
10
gcc/testsuite/gnat.dg/recursive_call.adb
Normal file
10
gcc/testsuite/gnat.dg/recursive_call.adb
Normal file
|
@ -0,0 +1,10 @@
|
|||
-- { dg-do compile }
|
||||
-- { dg-options "-gnat2012" }
|
||||
|
||||
function Recursive_Call (File : String; Status : out Boolean) return Boolean is
|
||||
begin
|
||||
if File /= "/dev/null" then
|
||||
return Recursive_Call ("/dev/null", Status);
|
||||
end if;
|
||||
return False;
|
||||
end;
|
Loading…
Add table
Reference in a new issue