uglygep.ll 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. ; RUN: opt -indvars -S < %s | not grep uglygep
  2. ; rdar://8197217
  3. ; Indvars should be able to emit a clean GEP here, not an uglygep.
  4. target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
  5. target triple = "x86_64-apple-darwin11.0"
  6. @numf2s = external global i32 ; <i32*> [#uses=1]
  7. @numf1s = external global i32 ; <i32*> [#uses=1]
  8. @tds = external global double** ; <double***> [#uses=1]
  9. define void @init_td(i32 %tmp7) nounwind {
  10. entry:
  11. br label %bb4
  12. bb4: ; preds = %bb3, %entry
  13. %i.0 = phi i32 [ 0, %entry ], [ %tmp9, %bb3 ] ; <i32> [#uses=3]
  14. br label %bb
  15. bb: ; preds = %bb4
  16. br label %bb2
  17. bb2: ; preds = %bb1, %bb
  18. %j.0 = phi i32 [ 0, %bb ], [ %tmp6, %bb1 ] ; <i32> [#uses=3]
  19. %tmp8 = icmp slt i32 %j.0, %tmp7 ; <i1> [#uses=1]
  20. br i1 %tmp8, label %bb1, label %bb3
  21. bb1: ; preds = %bb2
  22. %tmp = load double**, double*** @tds, align 8 ; <double**> [#uses=1]
  23. %tmp1 = sext i32 %i.0 to i64 ; <i64> [#uses=1]
  24. %tmp2 = getelementptr inbounds double*, double** %tmp, i64 %tmp1 ; <double**> [#uses=1]
  25. %tmp3 = load double*, double** %tmp2, align 1 ; <double*> [#uses=1]
  26. %tmp6 = add nsw i32 %j.0, 1 ; <i32> [#uses=1]
  27. br label %bb2
  28. bb3: ; preds = %bb2
  29. %tmp9 = add nsw i32 %i.0, 1 ; <i32> [#uses=1]
  30. br label %bb4
  31. }