aboutsummaryrefslogtreecommitdiff
path: root/gcc/ipa-param-manipulation.c
diff options
context:
space:
mode:
authorMartin Jambor <mjambor@suse.cz>2018-02-13 13:25:36 +0100
committerMartin Jambor <jamborm@gcc.gnu.org>2018-02-13 13:25:36 +0100
commitb607e474206ceecadd044f592f74d1709b1b7cf6 (patch)
treeaed32c950e058ce27fda57443bdbddc67cb6b960 /gcc/ipa-param-manipulation.c
parente4c1b7e32283b3886847f9e14b33bda5e5d5d448 (diff)
downloadgcc-b607e474206ceecadd044f592f74d1709b1b7cf6.zip
gcc-b607e474206ceecadd044f592f74d1709b1b7cf6.tar.gz
gcc-b607e474206ceecadd044f592f74d1709b1b7cf6.tar.bz2
[PR 83990] Fix location handling in ipa_modify_call_arguments
2018-02-13 Martin Jambor <mjambor@suse.cz> PR c++/83990 * ipa-param-manipulation.c (ipa_modify_call_arguments): Use location of call statements, also set location of a load to a temporary. From-SVN: r257623
Diffstat (limited to 'gcc/ipa-param-manipulation.c')
-rw-r--r--gcc/ipa-param-manipulation.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/gcc/ipa-param-manipulation.c b/gcc/ipa-param-manipulation.c
index 3629070..1ab1fcc 100644
--- a/gcc/ipa-param-manipulation.c
+++ b/gcc/ipa-param-manipulation.c
@@ -295,8 +295,7 @@ ipa_modify_call_arguments (struct cgraph_edge *cs, gcall *stmt,
poly_int64 byte_offset = exact_div (adj->offset, BITS_PER_UNIT);
base = gimple_call_arg (stmt, adj->base_index);
- loc = DECL_P (base) ? DECL_SOURCE_LOCATION (base)
- : EXPR_LOCATION (base);
+ loc = gimple_location (stmt);
if (TREE_CODE (base) != ADDR_EXPR
&& POINTER_TYPE_P (TREE_TYPE (base)))
@@ -385,6 +384,7 @@ ipa_modify_call_arguments (struct cgraph_edge *cs, gcall *stmt,
else
expr = create_tmp_reg (TREE_TYPE (expr));
gimple_assign_set_lhs (tem, expr);
+ gimple_set_location (tem, loc);
gsi_insert_before (&gsi, tem, GSI_SAME_STMT);
}
}