Readonly/readnone functions are allowed to throw

exceptions, so don't turn invokes of them into
calls.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44278 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Duncan Sands
2007-11-22 21:40:06 +00:00
parent 5d81486413
commit 5ef7be79e0
2 changed files with 13 additions and 37 deletions
+12 -10
View File
@@ -1,13 +1,15 @@
; RUN: llvm-upgrade < %s | llvm-as | opt -adce | llvm-dis | not grep null
; RUN: llvm-as < %s | opt -adce | llvm-dis | grep null
declare int %strlen(sbyte*)
declare i32 @strlen(i8*) readnone
int %test() {
;; Dead call should be deleted!
invoke int %strlen(sbyte *null) to label %Cont unwind label %Other
Cont:
ret int 0
Other:
ret int 1
define i32 @test() {
; invoke of pure function should not be deleted!
invoke i32 @strlen( i8* null ) readnone
to label %Cont unwind label %Other ; <i32>:1 [#uses=0]
Cont: ; preds = %0
ret i32 0
Other: ; preds = %0
ret i32 1
}