[MIPS GlobalISel] Select MSA vector generic and builtin add
[llvm-complete.git] / test / CodeGen / X86 / noreturn-call-win64.ll
blob6289eef6bb48f4999dd47e8bea37beed91dfa3a0
1 ; RUN: llc < %s -mtriple=x86_64-windows-msvc | FileCheck %s
3 ; Function Attrs: noinline nounwind optnone uwtable
4 define dso_local i32 @foo() {
5 entry:
6   %call = call i32 @cond()
7   %tobool = icmp ne i32 %call, 0
8   br i1 %tobool, label %if.then, label %if.end
10 if.then:                                          ; preds = %entry
11   call void @abort1()
12   unreachable
14 if.end:                                           ; preds = %entry
15   %call1 = call i32 @cond()
16   %tobool2 = icmp ne i32 %call1, 0
17   br i1 %tobool2, label %if.then3, label %if.end4
19 if.then3:                                         ; preds = %if.end
20   call void @abort2()
21   unreachable
23 if.end4:                                          ; preds = %if.end
24   %call5 = call i32 @cond()
25   %tobool6 = icmp ne i32 %call5, 0
26   br i1 %tobool6, label %if.then7, label %if.end8
28 if.then7:                                         ; preds = %if.end4
29   call void @abort3()
30   unreachable
32 if.end8:                                          ; preds = %if.end4
33   ret i32 0
36 ; CHECK-LABEL: foo:
37 ; CHECK: callq cond
38 ; CHECK: callq cond
39 ; CHECK: callq cond
40 ;   We don't need int3's between these calls to abort, since they won't confuse
41 ;   the unwinder.
42 ; CHECK: callq abort1
43 ; CHECK-NEXT:   # %if.then3
44 ; CHECK: callq abort2
45 ; CHECK-NEXT:   # %if.then7
46 ; CHECK: callq abort3
47 ; CHECK-NEXT: int3
49 declare dso_local i32 @cond()
51 declare dso_local void @abort1() noreturn
52 declare dso_local void @abort2() noreturn
53 declare dso_local void @abort3() noreturn