| ; 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) | |
| 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 | |
| %C = sub sbyte %A, %B | |
| ret sbyte %C | |
| } |