improve optimization of invoke instructions:

- simplifycfg:  invoke undef/null -> unreachable
 - instcombine:  invoke new  -> invoke expect(0, 0)  (an arbitrary NOOP intrinsic;  only done if the allocated memory is unused, of course)
 - verifier:  allow invoke of intrinsics  (to make the previous step work)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159146 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Nuno Lopes
2012-06-25 17:11:47 +00:00
parent e8742d084c
commit 3769fe149b
5 changed files with 63 additions and 5 deletions
+1 -1
View File
@@ -19,7 +19,7 @@ define i64 @f1() {
; CHECK: @f2
define i64 @f2() nounwind uwtable ssp {
entry:
; CHECK: br label
; CHECK: invoke i8 @llvm.expect.i8(i8 0, i8 0)
%call = invoke noalias i8* @_Znwm(i64 13)
to label %invoke.cont unwind label %lpad