2012-04-30-LoopUnswitch-LPad-Crash.ll 4.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. ; RUN: opt < %s -basicaa -instcombine -inline -functionattrs -licm -loop-unswitch -gvn -verify
  2. ; PR12573
  3. 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-S128"
  4. target triple = "x86_64-apple-macosx10.7.0"
  5. %class.D.22.42.66.102.138.158.178.198.238.242.246.250.262.294.302.338.346.379 = type { %class.C.23.43.67.103.139.159.179.199.239.243.247.251.263.295.303.339.347.376*, %class.B.21.41.65.101.137.157.177.197.237.241.245.249.261.293.301.337.345.378 }
  6. %class.C.23.43.67.103.139.159.179.199.239.243.247.251.263.295.303.339.347.376 = type { %class.D.22.42.66.102.138.158.178.198.238.242.246.250.262.294.302.338.346.379* }
  7. %class.B.21.41.65.101.137.157.177.197.237.241.245.249.261.293.301.337.345.378 = type { %class.A.20.40.64.100.136.156.176.196.236.240.244.248.260.292.300.336.344.377* }
  8. %class.A.20.40.64.100.136.156.176.196.236.240.244.248.260.292.300.336.344.377 = type { i8 }
  9. define void @_Z23get_reconstruction_pathv() uwtable ssp personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
  10. entry:
  11. %c = alloca %class.D.22.42.66.102.138.158.178.198.238.242.246.250.262.294.302.338.346.379, align 8
  12. br label %for.cond
  13. for.cond: ; preds = %for.end, %entry
  14. invoke void @_ZN1DptEv(%class.D.22.42.66.102.138.158.178.198.238.242.246.250.262.294.302.338.346.379* %c)
  15. to label %invoke.cont unwind label %lpad
  16. invoke.cont: ; preds = %for.cond
  17. invoke void @_ZN1C3endEv()
  18. to label %for.cond3 unwind label %lpad
  19. for.cond3: ; preds = %invoke.cont6, %invoke.cont
  20. invoke void @_ZN1DptEv(%class.D.22.42.66.102.138.158.178.198.238.242.246.250.262.294.302.338.346.379* %c)
  21. to label %invoke.cont4 unwind label %lpad
  22. invoke.cont4: ; preds = %for.cond3
  23. invoke void @_ZN1C3endEv()
  24. to label %invoke.cont6 unwind label %lpad
  25. invoke.cont6: ; preds = %invoke.cont4
  26. br i1 undef, label %for.cond3, label %for.end
  27. lpad: ; preds = %for.end, %invoke.cont4, %for.cond3, %invoke.cont, %for.cond
  28. %0 = landingpad { i8*, i32 }
  29. cleanup
  30. resume { i8*, i32 } undef
  31. for.end: ; preds = %invoke.cont6
  32. invoke void @_ZN1C13_M_insert_auxER1D()
  33. to label %for.cond unwind label %lpad
  34. }
  35. define void @_ZN1DptEv(%class.D.22.42.66.102.138.158.178.198.238.242.246.250.262.294.302.338.346.379* %this) uwtable ssp align 2 {
  36. entry:
  37. %this.addr = alloca %class.D.22.42.66.102.138.158.178.198.238.242.246.250.262.294.302.338.346.379*, align 8
  38. store %class.D.22.42.66.102.138.158.178.198.238.242.246.250.262.294.302.338.346.379* %this, %class.D.22.42.66.102.138.158.178.198.238.242.246.250.262.294.302.338.346.379** %this.addr, align 8
  39. %this1 = load %class.D.22.42.66.102.138.158.178.198.238.242.246.250.262.294.302.338.346.379*, %class.D.22.42.66.102.138.158.178.198.238.242.246.250.262.294.302.338.346.379** %this.addr
  40. %px = getelementptr inbounds %class.D.22.42.66.102.138.158.178.198.238.242.246.250.262.294.302.338.346.379, %class.D.22.42.66.102.138.158.178.198.238.242.246.250.262.294.302.338.346.379* %this1, i32 0, i32 0
  41. %0 = load %class.C.23.43.67.103.139.159.179.199.239.243.247.251.263.295.303.339.347.376*, %class.C.23.43.67.103.139.159.179.199.239.243.247.251.263.295.303.339.347.376** %px, align 8
  42. %tobool = icmp ne %class.C.23.43.67.103.139.159.179.199.239.243.247.251.263.295.303.339.347.376* %0, null
  43. br i1 %tobool, label %cond.end, label %cond.false
  44. cond.false: ; preds = %entry
  45. call void @_Z10__assert13v() noreturn
  46. unreachable
  47. cond.end: ; preds = %entry
  48. ret void
  49. }
  50. declare i32 @__gxx_personality_v0(...)
  51. declare void @_ZN1C3endEv()
  52. define void @_ZN1C13_M_insert_auxER1D() uwtable ssp align 2 {
  53. entry:
  54. ret void
  55. }
  56. define void @_ZN1DD1Ev() unnamed_addr uwtable inlinehint ssp align 2 {
  57. entry:
  58. ret void
  59. }
  60. define void @_ZN1DD2Ev() unnamed_addr uwtable inlinehint ssp align 2 {
  61. entry:
  62. ret void
  63. }
  64. define void @_ZN1BD1Ev() unnamed_addr uwtable ssp align 2 {
  65. entry:
  66. ret void
  67. }
  68. define void @_ZN1BD2Ev() unnamed_addr uwtable ssp align 2 {
  69. entry:
  70. ret void
  71. }
  72. define void @_ZN1BaSERS_() uwtable ssp align 2 {
  73. entry:
  74. unreachable
  75. }
  76. declare void @_Z10__assert13v() noreturn