So when we using the newly mapped location, we should check if
it is not unknown location and if so just use the original location.
Note this is a latent bug in remove_forwarder_block_with_phi code too.
This fixes gcc.dg/uninit-pr40635.c when doing more mergephi.
gcc/ChangeLog:
* tree-cfg.cc (copy_phi_arg_into_existing_phi): Use the original
location
if the mapped location is unknown.
Signed-off-by: Andrew Pinski <[email protected]>
---
gcc/tree-cfg.cc | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/gcc/tree-cfg.cc b/gcc/tree-cfg.cc
index 5a082eee524..1d20e6ab6ba 100644
--- a/gcc/tree-cfg.cc
+++ b/gcc/tree-cfg.cc
@@ -6828,7 +6828,10 @@ copy_phi_arg_into_existing_phi (edge src_e, edge tgt_e,
bool use_map)
if (val == old_arg)
{
val = new_arg;
- locus = redirect_edge_var_map_location (vm);
+ location_t locus1 = redirect_edge_var_map_location (vm);
+ /* Don't remove the location if we remap one does not have
one. */
+ if (locus1 != UNKNOWN_LOCATION)
+ locus = locus1;
break;
}
}
--
2.43.0