[PATCH] D128128: [GlobalOpt] Perform store->dominated load forwarding for stored once globals
Johannes Doerfert via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Jun 21 06:28:35 PDT 2022
jdoerfert added a comment.
This breaks in the presence of synchronization.
static int X = 42;
int foo(int Arg) {
sync();
X = Arg;
sync();
return X;
}
Two threads call `foo` with two values of `Arg` and the `sync` will ensure they proceed "one after another":
X = 42;
sync
T1: X = Arg1;
sync
T2: X = Arg2;
sync
T1, T2: return Arg2
Whereas replacing the load will result
T1, T2, return Arg{1,2}
Right?
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D128128/new/
https://reviews.llvm.org/D128128
More information about the llvm-commits
mailing list