Ding dong, the DoesntAccessMemoryFns and
OnlyReadsMemoryFns tables are dead! We
get more, and more accurate, information
from gcc via the readnone and readonly
function attributes.
llvm-svn: 44288
diff --git a/llvm/test/Analysis/LoadVN/call_pure_function.ll b/llvm/test/Analysis/LoadVN/call_pure_function.ll
index 302ae60..8055c52 100644
--- a/llvm/test/Analysis/LoadVN/call_pure_function.ll
+++ b/llvm/test/Analysis/LoadVN/call_pure_function.ll
@@ -1,13 +1,14 @@
-; RUN: llvm-upgrade < %s | llvm-as | opt -basicaa -load-vn -gcse -instcombine | llvm-dis | not grep sub
-declare int %strlen(sbyte*)
-declare void %use(int %X)
+; RUN: llvm-as < %s | opt -basicaa -load-vn -gcse -instcombine | llvm-dis | not grep sub
-sbyte %test(sbyte* %P, sbyte* %Q) {
- %A = load sbyte* %Q
- %X = call int %strlen(sbyte* %P)
- %B = load sbyte* %Q ;; CSE with A.
- call void %use(int %X) ;; make strlen not dead
+declare i32 @strlen(i8*) readonly
- %C = sub sbyte %A, %B
- ret sbyte %C
+declare void @use(i32)
+
+define i8 @test(i8* %P, i8* %Q) {
+ %A = load i8* %Q ; <i8> [#uses=1]
+ %X = call i32 @strlen( i8* %P ) readonly ; <i32> [#uses=1]
+ %B = load i8* %Q ; <i8> [#uses=1]
+ call void @use( i32 %X )
+ %C = sub i8 %A, %B ; <i8> [#uses=1]
+ ret i8 %C
}