fix PR9841 by having GVN not process dead loads. This was

causing it to get into infinite loops when it would widen a 
load (which can necessarily leave around dead loads).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131847 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2011-05-22 07:03:34 +00:00
parent 0e959394ad
commit 9e7bc05ad7
2 changed files with 17 additions and 0 deletions

View File

@ -1607,6 +1607,11 @@ bool GVN::processLoad(LoadInst *L) {
if (L->isVolatile())
return false;
if (L->use_empty()) {
markInstructionForDeletion(L);
return true;
}
// ... to a pointer that has been loaded from before...
MemDepResult Dep = MD->getDependency(L);

View File

@ -151,3 +151,15 @@ dead:
dead2:
ret i32 %A
}
; PR9841
define fastcc i8 @test5(i8* %P) nounwind {
entry:
%0 = load i8* %P, align 2
%Q = getelementptr i8* %P, i32 1
%1 = load i8* %Q, align 1
ret i8 %1
}