xref: /llvm-project/llvm/test/Transforms/ConstantHoisting/X86/ehphi.ll (revision 055fb7795aa219a3d274d280ec9129784f169f56)
133b939c3SRoman Lebedev; RUN: opt -S -passes=consthoist < %s | FileCheck %s
28bfef787SMichael Holman
38bfef787SMichael Holmantarget datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
48bfef787SMichael Holmantarget triple = "x86_64-pc-windows-msvc"
58bfef787SMichael Holman
6*055fb779SNikita Popovdefine internal fastcc void @baz(ptr %arg) unnamed_addr personality ptr @wobble {
78bfef787SMichael Holman; CHECK-LABEL:  @baz
88bfef787SMichael Holmanbb:
9*055fb779SNikita Popov  %tmp = invoke noalias dereferenceable(40) ptr @wibble.2(i64 40)
108bfef787SMichael Holman          to label %bb6 unwind label %bb1
118bfef787SMichael Holman
128bfef787SMichael Holmanbb1:                                              ; preds = %bb
138bfef787SMichael Holman; CHECK: bb1:
148bfef787SMichael Holman; CHECK-NEXT:  %tmp2 = catchswitch within none [label %bb3] unwind label %bb16
158bfef787SMichael Holman  %tmp2 = catchswitch within none [label %bb3] unwind label %bb16
168bfef787SMichael Holman
178bfef787SMichael Holmanbb3:                                              ; preds = %bb1
18*055fb779SNikita Popov  %tmp4 = catchpad within %tmp2 [ptr null, i32 64, ptr null]
19*055fb779SNikita Popov  invoke void @spam(ptr null) [ "funclet"(token %tmp4) ]
208bfef787SMichael Holman          to label %bb5 unwind label %bb16
218bfef787SMichael Holman
228bfef787SMichael Holmanbb5:                                              ; preds = %bb3
238bfef787SMichael Holman  unreachable
248bfef787SMichael Holman
258bfef787SMichael Holmanbb6:                                              ; preds = %bb
26*055fb779SNikita Popov  %tmp7 = icmp eq ptr %arg, null
278bfef787SMichael Holman  br label %bb9
288bfef787SMichael Holman
298bfef787SMichael Holman
308bfef787SMichael Holmanbb9:                                              ; preds = %bb8, %bb6
31*055fb779SNikita Popov  %tmp10 = inttoptr i64 -6148914691236517376 to ptr
32*055fb779SNikita Popov  %tmp11 = invoke noalias dereferenceable(40) ptr @wibble.2(i64 40)
338bfef787SMichael Holman          to label %bb15 unwind label %bb12
348bfef787SMichael Holman
358bfef787SMichael Holmanbb12:                                             ; preds = %bb9
368bfef787SMichael Holman  %tmp13 = cleanuppad within none []
378bfef787SMichael Holman  br label %bb14
388bfef787SMichael Holman
398bfef787SMichael Holmanbb14:                                             ; preds = %bb12
408bfef787SMichael Holman  cleanupret from %tmp13 unwind label %bb16
418bfef787SMichael Holman
428bfef787SMichael Holmanbb15:                                             ; preds = %bb9
438bfef787SMichael Holman  ret void
448bfef787SMichael Holman
458bfef787SMichael Holmanbb16:                                             ; preds = %bb14, %bb3, %bb1
46*055fb779SNikita Popov  %tmp17 = phi ptr [ inttoptr (i64 -6148914691236517376 to ptr), %bb1 ], [ inttoptr (i64 -6148914691236517376 to ptr), %bb3 ], [ %tmp10, %bb14 ]
478bfef787SMichael Holman  %tmp18 = cleanuppad within none []
488bfef787SMichael Holman  br label %bb19
498bfef787SMichael Holman
508bfef787SMichael Holmanbb19:                                             ; preds = %bb16
518bfef787SMichael Holman  cleanupret from %tmp18 unwind to caller
528bfef787SMichael Holman}
538bfef787SMichael Holman
54*055fb779SNikita Popovdeclare ptr @wibble.2(i64)
558bfef787SMichael Holman
56*055fb779SNikita Popovdeclare dso_local void @spam(ptr) local_unnamed_addr
578bfef787SMichael Holman
588bfef787SMichael Holmandeclare i32 @wobble(...)
59