2
0

chaining-analysis.ll 728 B

123456789101112131415161718192021222324
  1. ; RUN: opt < %s -basicaa -globalsmodref-aa -gvn -S | FileCheck %s
  2. ; This test requires the use of previous analyses to determine that
  3. ; doesnotmodX does not modify X (because 'sin' doesn't).
  4. @X = internal global i32 4 ; <i32*> [#uses=2]
  5. declare double @sin(double) readnone
  6. define i32 @test(i32* %P) {
  7. ; CHECK: @test
  8. ; CHECK-NEXT: store i32 12, i32* @X
  9. ; CHECK-NEXT: call double @doesnotmodX(double 1.000000e+00)
  10. ; CHECK-NEXT: ret i32 12
  11. store i32 12, i32* @X
  12. call double @doesnotmodX( double 1.000000e+00 ) ; <double>:1 [#uses=0]
  13. %V = load i32, i32* @X ; <i32> [#uses=1]
  14. ret i32 %V
  15. }
  16. define double @doesnotmodX(double %V) {
  17. %V2 = call double @sin( double %V ) readnone ; <double> [#uses=1]
  18. ret double %V2
  19. }