aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2019-07-12 09:35:21 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2019-07-12 09:35:21 +0000
commite067f9924bad423bf6265b75414d3160e6cf660a (patch)
tree21cabb5d871a9a5f717cadd8ad2d6835a9376bdc /gcc
parente7ba492a04d0bfef9752cbb16fcce3ffc31bf99f (diff)
downloadgcc-e067f9924bad423bf6265b75414d3160e6cf660a.zip
gcc-e067f9924bad423bf6265b75414d3160e6cf660a.tar.gz
gcc-e067f9924bad423bf6265b75414d3160e6cf660a.tar.bz2
cfgexpand.c (expand_gimple_stmt_1): If the statement doesn't have location...
* cfgexpand.c (expand_gimple_stmt_1) <GIMPLE_RETURN>: If the statement doesn't have location, set the current location to the function's end From-SVN: r273434
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/cfgexpand.c6
2 files changed, 11 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 66e715f..e75e1ec 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2019-07-12 Eric Botcazou <ebotcazou@adacore.com>
+
+ * cfgexpand.c (expand_gimple_stmt_1) <GIMPLE_RETURN>: If the statement
+ doesn't have location, set the current location to the function's end.
+
2019-07-12 Richard Sandiford <richard.sandiford@arm.com>
* config/aarch64/aarch64.md (*compare_condjump<mode>)
diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c
index d0c1d31..33af991 100644
--- a/gcc/cfgexpand.c
+++ b/gcc/cfgexpand.c
@@ -3714,6 +3714,12 @@ expand_gimple_stmt_1 (gimple *stmt)
{
op0 = gimple_return_retval (as_a <greturn *> (stmt));
+ /* If a return doesn't have a location, it very likely represents
+ multiple user returns so we cannot let it inherit the location
+ of the last statement of the previous basic block in RTL. */
+ if (!gimple_has_location (stmt))
+ set_curr_insn_location (cfun->function_end_locus);
+
if (op0 && op0 != error_mark_node)
{
tree result = DECL_RESULT (current_function_decl);