]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
fix handling of mapped and their location
authorAndrew Pinski <andrew.pinski@oss.qualcomm.com>
Wed, 12 Nov 2025 09:30:30 +0000 (01:30 -0800)
committerAndrew Pinski <andrew.pinski@oss.qualcomm.com>
Thu, 13 Nov 2025 20:56:54 +0000 (12:56 -0800)
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 <andrew.pinski@oss.qualcomm.com>
gcc/tree-cfg.cc

index 5a082eee5243c2584e344e2a874f6d91fc1a46b7..1d20e6ab6ba429eb9fbfed741dba93e11cbd93f3 100644 (file)
@@ -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;
                }
            }