aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@gcc.gnu.org>2013-10-14 16:38:00 +0200
committerArnaud Charlet <charlet@gcc.gnu.org>2013-10-14 16:38:00 +0200
commit811189d91a29fbced411a62f9fcea66e2b7882cb (patch)
tree7c1c6d007fb7edb2bf1bc6d24d8a2e8d2c8f71fa /gcc/ada
parent1394237ec94d0d377f7c2cf7359f3c899c2ff482 (diff)
downloadgcc-811189d91a29fbced411a62f9fcea66e2b7882cb.zip
gcc-811189d91a29fbced411a62f9fcea66e2b7882cb.tar.gz
gcc-811189d91a29fbced411a62f9fcea66e2b7882cb.tar.bz2
Complete previous change.
From-SVN: r203567
Diffstat (limited to 'gcc/ada')
-rw-r--r--gcc/ada/gcc-interface/trans.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/gcc/ada/gcc-interface/trans.c b/gcc/ada/gcc-interface/trans.c
index 1d7808b..9ed804e 100644
--- a/gcc/ada/gcc-interface/trans.c
+++ b/gcc/ada/gcc-interface/trans.c
@@ -4894,6 +4894,19 @@ Exception_Handler_to_gnu_zcx (Node_Id gnat_node)
add_stmt_with_node (build_call_n_expr (begin_handler_decl, 1,
gnu_incoming_exc_ptr),
gnat_node);
+
+ /* Declare and initialize the choice parameter, if present. */
+ if (Present (Choice_Parameter (gnat_node)))
+ {
+ tree gnu_param = gnat_to_gnu_entity
+ (Choice_Parameter (gnat_node), NULL_TREE, 1);
+
+ add_stmt (build_call_n_expr
+ (set_exception_parameter_decl, 2,
+ build_unary_op (ADDR_EXPR, NULL_TREE, gnu_param),
+ gnu_incoming_exc_ptr));
+ }
+
/* We don't have an End_Label at hand to set the location of the cleanup
actions, so we use that of the exception handler itself instead. */
add_cleanup (build_call_n_expr (end_handler_decl, 1, gnu_incoming_exc_ptr),