diff options
| author | Chad Rosier <mcrosier@codeaurora.org> | 2016-10-26 19:18:19 +0000 |
|---|---|---|
| committer | Chad Rosier <mcrosier@codeaurora.org> | 2016-10-26 19:18:19 +0000 |
| commit | 4447d7a8165fd5020f384341dd069a05b5206980 (patch) | |
| tree | f961886db3a8f5882d9bb54813fff686524ce2a1 | |
| parent | 73418dfe61df18bf724139fe0dd92036c8a5e2fa (diff) | |
| download | bcm5719-llvm-4447d7a8165fd5020f384341dd069a05b5206980.tar.gz bcm5719-llvm-4447d7a8165fd5020f384341dd069a05b5206980.zip | |
Revert "[AliasSetTracker] Make AST smarter about intrinsics that don't actually affect memory."
This reverts commit r285191.
LICM appears to rely on the Alias Set Tracker hitting lifetime markers to prevent
code from being moved outside of the original scope.
llvm-svn: 285227
| -rw-r--r-- | llvm/lib/Analysis/AliasSetTracker.cpp | 15 | ||||
| -rw-r--r-- | llvm/test/Analysis/AliasSet/intrinsics.ll | 54 |
2 files changed, 0 insertions, 69 deletions
diff --git a/llvm/lib/Analysis/AliasSetTracker.cpp b/llvm/lib/Analysis/AliasSetTracker.cpp index 0a947e175d4..954b22037ed 100644 --- a/llvm/lib/Analysis/AliasSetTracker.cpp +++ b/llvm/lib/Analysis/AliasSetTracker.cpp @@ -413,21 +413,6 @@ void AliasSetTracker::add(MemTransferInst *MTI) { void AliasSetTracker::addUnknown(Instruction *Inst) { if (isa<DbgInfoIntrinsic>(Inst)) return; // Ignore DbgInfo Intrinsics. - - if (auto *II = dyn_cast<IntrinsicInst>(Inst)) { - // These intrinsics will show up as affecting memory, but they are just - // markers. - switch (II->getIntrinsicID()) { - default: - break; - case Intrinsic::lifetime_start: - case Intrinsic::lifetime_end: - case Intrinsic::invariant_start: - case Intrinsic::invariant_end: - case Intrinsic::assume: - return; - } - } if (!Inst->mayReadOrWriteMemory()) return; // doesn't alias anything diff --git a/llvm/test/Analysis/AliasSet/intrinsics.ll b/llvm/test/Analysis/AliasSet/intrinsics.ll deleted file mode 100644 index 5562c69d249..00000000000 --- a/llvm/test/Analysis/AliasSet/intrinsics.ll +++ /dev/null @@ -1,54 +0,0 @@ -; RUN: opt -basicaa -print-alias-sets -S -o - < %s 2>&1 | FileCheck %s - -; CHECK: Alias sets for function 'test1': -; CHECK: Alias Set Tracker: 2 alias sets for 2 pointer values. -; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %a, 1) -; CHECK-NOT: 1 Unknown instruction -; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %b, 1) -define void @test1(i32 %c) { -entry: - %a = alloca i8, align 1 - %b = alloca i8, align 1 - store i8 1, i8* %a, align 1 - %cond1 = icmp ne i32 %c, 0 - call void @llvm.assume(i1 %cond1) - store i8 1, i8* %b, align 1 - ret void -} - -; CHECK: Alias sets for function 'test2': -; CHECK: Alias Set Tracker: 2 alias sets for 2 pointer values. -; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %a, 1) -; CHECK-NOT: 2 Unknown instructions -; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %b, 1) -; CHECK-NOT: 2 Unknown instructions -define void @test2(i8* %ptr) { -entry: - %a = alloca i8, align 1 - call void @llvm.lifetime.start(i64 1, i8* %a) - %b = alloca i8, align 1 - call void @llvm.lifetime.start(i64 1, i8* %b) - store i8 1, i8* %a, align 1 - call void @llvm.lifetime.end(i64 1, i8* %a) - store i8 1, i8* %b, align 1 - call void @llvm.lifetime.end(i64 1, i8* %b) - ret void -} - -; CHECK: Alias sets for function 'test3': -; CHECK: Alias Set Tracker: 1 alias sets for 1 pointer values. -; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Pointers: (i8* %ptr, 1) -; CHECK-NOT: 2 Unknown instructions -define void @test3(i8* %ptr) { - store i8 5, i8* %ptr - %i = call {}* @llvm.invariant.start.p0i8(i64 1, i8* %ptr) - call void @llvm.invariant.end.p0i8({}* %i, i64 1, i8* %ptr) - store i8 6, i8* %ptr - ret void -} - -declare void @llvm.assume(i1) -declare void @llvm.lifetime.start(i64, i8* nocapture) -declare void @llvm.lifetime.end(i64, i8* nocapture) -declare {}* @llvm.invariant.start.p0i8(i64, i8* nocapture) nounwind readonly -declare void @llvm.invariant.end.p0i8({}*, i64, i8* nocapture) nounwind |

