[ImplicitNullChecks] Support unordered atomic accesses
Update the INC pass to allow folding unordered atomics. This is the first optimization unblocked by the changes landed from D57601.
llvm-svn: 356006
diff --git a/llvm/lib/CodeGen/ImplicitNullChecks.cpp b/llvm/lib/CodeGen/ImplicitNullChecks.cpp
index 75f4eef..6811031 100644
--- a/llvm/lib/CodeGen/ImplicitNullChecks.cpp
+++ b/llvm/lib/CodeGen/ImplicitNullChecks.cpp
@@ -235,11 +235,8 @@
assert(!llvm::any_of(MI->operands(), IsRegMask) &&
"Calls were filtered out above!");
- // TODO: This should be isUnordered (see D57601) once test cases are written
- // demonstrating that.
- auto IsSimple = [](MachineMemOperand *MMO) {
- return !MMO->isVolatile() && !MMO->isAtomic(); };
- return llvm::all_of(MI->memoperands(), IsSimple);
+ auto IsUnordered = [](MachineMemOperand *MMO) { return MMO->isUnordered(); };
+ return llvm::all_of(MI->memoperands(), IsUnordered);
}
ImplicitNullChecks::DependenceResult