re PR fortran/41359 (Wrong line numbers for debugging/profiling)
authorTobias Burnus <burnus@net-b.de>
Tue, 22 Feb 2011 10:23:14 +0000 (11:23 +0100)
committerTobias Burnus <burnus@gcc.gnu.org>
Tue, 22 Feb 2011 10:23:14 +0000 (11:23 +0100)
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

gcc/fortran/ChangeLog
gcc/fortran/trans-stmt.c

index 951be24dc124d8efc9cfcff17ceda5f5d3017c7a..a19ba0b7511f48ff76e946d592e3cf3c28c4991b 100644 (file)
@@ -1,3 +1,9 @@
+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.
+
 2011-02-20  Tobias Burnus  <burnus@net-b.de>
 
        PR fortran/47797
index 6ddb2cab3ed7347c8a6fdeaffd7f224bee19a4c4..e1202858bb27d7a18a170f579602a986bceb591b 100644 (file)
@@ -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);