aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/trans-stmt.c
diff options
context:
space:
mode:
authorTobias Burnus <burnus@net-b.de>2011-02-22 11:23:14 +0100
committerTobias Burnus <burnus@gcc.gnu.org>2011-02-22 11:23:14 +0100
commite84589e12916daf9b743432a0744ead7f31f2660 (patch)
treecda8bda73e25f2c0b513472482330e3d671461fc /gcc/fortran/trans-stmt.c
parent1b4a8aae79692a9e44593bcf21803baa0fd3fd89 (diff)
downloadgcc-e84589e12916daf9b743432a0744ead7f31f2660.zip
gcc-e84589e12916daf9b743432a0744ead7f31f2660.tar.gz
gcc-e84589e12916daf9b743432a0744ead7f31f2660.tar.bz2
re PR fortran/41359 (Wrong line numbers for debugging/profiling)
2011-02-22 Tobias Burnus <burnus@net-b.de> PR fortran/41359 * trans-stmt.c (gfc_trans_if_1): Use correct line for expressions in the if condition. From-SVN: r170394
Diffstat (limited to 'gcc/fortran/trans-stmt.c')
-rw-r--r--gcc/fortran/trans-stmt.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/fortran/trans-stmt.c b/gcc/fortran/trans-stmt.c
index 6ddb2ca..e120285 100644
--- a/gcc/fortran/trans-stmt.c
+++ b/gcc/fortran/trans-stmt.c
@@ -718,6 +718,7 @@ gfc_trans_if_1 (gfc_code * code)
{
gfc_se if_se;
tree stmt, elsestmt;
+ locus saved_loc;
location_t loc;
/* Check for an unconditional ELSE clause. */
@@ -729,8 +730,17 @@ gfc_trans_if_1 (gfc_code * code)
gfc_start_block (&if_se.pre);
/* Calculate the IF condition expression. */
+ if (code->expr1->where.lb)
+ {
+ gfc_save_backend_locus (&saved_loc);
+ gfc_set_backend_locus (&code->expr1->where);
+ }
+
gfc_conv_expr_val (&if_se, code->expr1);
+ if (code->expr1->where.lb)
+ gfc_restore_backend_locus (&saved_loc);
+
/* Translate the THEN clause. */
stmt = gfc_trans_code (code->next);