diff options
-rw-r--r-- | test/Analysis/GlobalsModRef/chaining-analysis.ll | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/test/Analysis/GlobalsModRef/chaining-analysis.ll b/test/Analysis/GlobalsModRef/chaining-analysis.ll new file mode 100644 index 0000000000..5caa0a8eb9 --- /dev/null +++ b/test/Analysis/GlobalsModRef/chaining-analysis.ll @@ -0,0 +1,20 @@ +; RUN: llvm-as < %s | 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 +} |