Do not move "auto-init" instruction if they're volatile
authorserge-sans-paille <sguelton@mozilla.com>
Tue, 4 Apr 2023 18:38:25 +0000 (20:38 +0200)
committerserge-sans-paille <sguelton@mozilla.com>
Tue, 4 Apr 2023 18:42:05 +0000 (20:42 +0200)
This is overly conservative, but at least it's safe.

This is a follow-up to https://reviews.llvm.org/D137707

llvm/lib/Transforms/Utils/MoveAutoInit.cpp

index ca8a587..2c38adb 100644 (file)
@@ -109,7 +109,8 @@ static bool runMoveAutoInit(Function &F, DominatorTree &DT, MemorySSA &MSSA) {
     if (!hasAutoInitMetadata(I))
       continue;
 
-    assert(!I.isVolatile() && "auto init instructions cannot be volatile.");
+    if (I.isVolatile())
+      continue;
 
     BasicBlock *UsersDominator = usersDominator(&I, DT, MSSA);
     if (!UsersDominator)