aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2023-12-13 08:54:49 +0100
committerRichard Biener <rguenther@suse.de>2023-12-13 08:59:01 +0100
commit97094d2ffd7d00261e6d7cc5d4a62dc7c2c89b64 (patch)
treef31a79bc61326149ad06a29fbf07a418571b339a
parent8e0568d8ac9dbfc8199f970c5c7f26b9735e0e7b (diff)
downloadgcc-97094d2ffd7d00261e6d7cc5d4a62dc7c2c89b64.zip
gcc-97094d2ffd7d00261e6d7cc5d4a62dc7c2c89b64.tar.gz
gcc-97094d2ffd7d00261e6d7cc5d4a62dc7c2c89b64.tar.bz2
middle-end/111591 - explain why TBAA doesn't need adjustment
While tidying the prototype patch I've done for the reduced testcase in PR111591 and in that process trying to produce a testcase that is miscompiled by stack slot coalescing and the TBAA info that remains un-altered I've realized we do not need to adjust TBAA info. The following documents this in the place we adjust points-to info which we do need to adjust. PR middle-end/111591 * cfgexpand.cc (update_alias_info_with_stack_vars): Document why not adjusting TBAA info on accesses is OK.
-rw-r--r--gcc/cfgexpand.cc8
1 files changed, 7 insertions, 1 deletions
diff --git a/gcc/cfgexpand.cc b/gcc/cfgexpand.cc
index b860be8..ec887ef 100644
--- a/gcc/cfgexpand.cc
+++ b/gcc/cfgexpand.cc
@@ -786,7 +786,13 @@ add_partitioned_vars_to_ptset (struct pt_solution *pt,
/* Update points-to sets based on partition info, so we can use them on RTL.
The bitmaps representing stack partitions will be saved until expand,
where partitioned decls used as bases in memory expressions will be
- rewritten. */
+ rewritten.
+
+ It is not necessary to update TBAA info on accesses to the coalesced
+ storage since our memory model doesn't allow TBAA to be used for
+ WAW or WAR dependences. For RAW when the write is to an old object
+ the new object would not have been initialized at the point of the
+ read, invoking undefined behavior. */
static void
update_alias_info_with_stack_vars (void)