Replace EquivalenceClasses with a custom-built data structure. Many common

operations (like findProperties) should be faster, at the expense of
unionSets being slower in cases that are rare in practise.

Don't erase a dead Instruction. This fixes a memory corruption issue.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30235 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Nick Lewycky
2006-09-10 02:27:07 +00:00
parent 2a86f3b744
commit dc08cd56c4
2 changed files with 287 additions and 133 deletions

View File

@@ -0,0 +1,28 @@
; RUN: llvm-as < %s | opt -predsimplify -disable-output
void %safe_strcpy(uint %size1) {
entry:
%tmp = seteq uint %size1, 0 ; <bool> [#uses=1]
br bool %tmp, label %return, label %strlen.exit
strlen.exit: ; preds = %entry
%tmp = cast ulong 0 to uint ; <uint> [#uses=2]
%tmp6 = setlt uint %tmp, %size1 ; <bool> [#uses=1]
br bool %tmp6, label %cond_true7, label %cond_false19
cond_true7: ; preds = %strlen.exit
%tmp9 = seteq uint %tmp, 0 ; <bool> [#uses=1]
br bool %tmp9, label %cond_next15, label %cond_true10
cond_true10: ; preds = %cond_true7
ret void
cond_next15: ; preds = %cond_true7
ret void
cond_false19: ; preds = %strlen.exit
ret void
return: ; preds = %entry
ret void
}