aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/gimple-low.c14
2 files changed, 15 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c485326..36e7a73 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2011-02-08 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
+
+ * gimple-low.c (lower_function_body): Don't remove the location of
+ the return statement here.
+ (lower_gimple_return): Do it here instead but only if the return
+ statement is actually used twice.
+
2011-02-08 Richard Guenther <rguenther@suse.de>
PR tree-optimization/47632
diff --git a/gcc/gimple-low.c b/gcc/gimple-low.c
index 4e49241..67087a0 100644
--- a/gcc/gimple-low.c
+++ b/gcc/gimple-low.c
@@ -148,11 +148,6 @@ lower_function_body (void)
x = gimple_build_label (t.label);
gsi_insert_after (&i, x, GSI_CONTINUE_LINKING);
-
- /* Remove the line number from the representative return statement.
- It now fills in for many such returns. Failure to remove this
- will result in incorrect results for coverage analysis. */
- gimple_set_location (t.stmt, UNKNOWN_LOCATION);
gsi_insert_after (&i, t.stmt, GSI_CONTINUE_LINKING);
}
@@ -746,7 +741,14 @@ lower_gimple_return (gimple_stmt_iterator *gsi, struct lower_data *data)
tmp_rs = *VEC_index (return_statements_t, data->return_statements, i);
if (gimple_return_retval (stmt) == gimple_return_retval (tmp_rs.stmt))
- goto found;
+ {
+ /* Remove the line number from the representative return statement.
+ It now fills in for many such returns. Failure to remove this
+ will result in incorrect results for coverage analysis. */
+ gimple_set_location (tmp_rs.stmt, UNKNOWN_LOCATION);
+
+ goto found;
+ }
}
/* Not found. Create a new label and record the return statement. */