diff options
author | Arnaud Charlet <charlet@gcc.gnu.org> | 2012-07-23 10:41:08 +0200 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2012-07-23 10:41:08 +0200 |
commit | 678400b3589e37edc90647ce3744347301effbed (patch) | |
tree | 7d1828766db1f3cd9cdc1957c6109964833c2495 /gcc/ada/gcc-interface/trans.c | |
parent | c4250ab16bc898d9995a804afa2bcf9523f0cd83 (diff) | |
download | gcc-678400b3589e37edc90647ce3744347301effbed.zip gcc-678400b3589e37edc90647ce3744347301effbed.tar.gz gcc-678400b3589e37edc90647ce3744347301effbed.tar.bz2 |
[multiple changes]
2012-07-23 Tristan Gingold <gingold@adacore.com>
* gcc-interface/trans.c (Handled_Sequence_Of_Statements_to_gnu): Use
End_Label sloc when possible for sloc of the TRY_CATCH_EXPR node.
2012-07-23 Olivier Hainque <hainque@adacore.com>
* gcc-interface/Makefile.in: Adjust processing of Linker_Options for
VxWorks.
* gcc-interface/Make-lang.in: Update dependencies.
From-SVN: r189777
Diffstat (limited to 'gcc/ada/gcc-interface/trans.c')
-rw-r--r-- | gcc/ada/gcc-interface/trans.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/gcc/ada/gcc-interface/trans.c b/gcc/ada/gcc-interface/trans.c index 93d3af1..1b1bca8 100644 --- a/gcc/ada/gcc-interface/trans.c +++ b/gcc/ada/gcc-interface/trans.c @@ -4456,6 +4456,7 @@ Handled_Sequence_Of_Statements_to_gnu (Node_Id gnat_node) else if (gcc_zcx) { tree gnu_handlers; + location_t locus; /* First make a block containing the handlers. */ start_stmt_group (); @@ -4468,7 +4469,14 @@ Handled_Sequence_Of_Statements_to_gnu (Node_Id gnat_node) /* Now make the TRY_CATCH_EXPR for the block. */ gnu_result = build2 (TRY_CATCH_EXPR, void_type_node, gnu_inner_block, gnu_handlers); - set_expr_location_from_node (gnu_result, gnat_node); + /* Set a location. We need to find a uniq location for the dispatching + code, otherwise we can get coverage or debugging issues. Try with + the location of the end label. */ + if (Present (End_Label (gnat_node)) + && Sloc_to_locus (Sloc (End_Label (gnat_node)), &locus)) + SET_EXPR_LOCATION (gnu_result, locus); + else + set_expr_location_from_node (gnu_result, gnat_node); } else gnu_result = gnu_inner_block; |