aboutsummaryrefslogtreecommitdiffstats
path: root/test/Analysis/GlobalsModRef/chaining-analysis.ll
blob: 5caa0a8eb930011e0f0fc7fef0f0cc83fd763ac2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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
}