| ; RUN: llvm-upgrade < %s | llvm-as | opt -globalsmodref-aa -load-vn -gcse | llvm-dis | not grep load | |
| ; This test requires the use of previous analyses to determine that | |
| ; doesnotmodX does not modify X (because 'sin' doesn't). | |
| %X = internal global int 4 | |
| declare double %sin(double) | |
| int %test(int *%P) { | |
| store int 12, int* %X | |
| call double %doesnotmodX(double 1.0) | |
| %V = load int* %X | |
| ret int %V | |
| } | |
| double %doesnotmodX(double %V) { | |
| %V2 = call double %sin(double %V) | |
| ret double %V2 | |
| } |