Treat free operations as volatile, since they cannot be moved. This fixes
authorChris Lattner <sabre@nondot.org>
Fri, 25 Mar 2005 05:49:37 +0000 (05:49 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 25 Mar 2005 05:49:37 +0000 (05:49 +0000)
Transforms/LICM/2005-03-24-LICM-Aggregate-Crash.ll

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20830 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Analysis/AliasSetTracker.cpp

index 4b36f4089c21cf2c343175af0d4a190d166c592c..73baf4a1b1e6ebcb74f16eaef1463d66f387b3a3 100644 (file)
@@ -288,6 +288,9 @@ bool AliasSetTracker::add(FreeInst *FI) {
   bool NewPtr;
   AliasSet &AS = addPointer(FI->getOperand(0), ~0,
                             AliasSet::Mods, NewPtr);
+
+  // Free operations are volatile ops (cannot be moved).
+  AS.setVolatile();
   return NewPtr;
 }