xref: /llvm-project/llvm/test/Transforms/Reg2Mem/catchswitch-crash.ll (revision 64539b178f9243b590ea9c377c85940058f50973)
1200f3410SHanSheng Zhang; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2200f3410SHanSheng Zhang; RUN: opt -passes=reg2mem -S < %s | FileCheck %s
3200f3410SHanSheng Zhang
4200f3410SHanSheng Zhangdeclare void @"read_mem"()
5200f3410SHanSheng Zhang
6*64539b17SMatt Arsenaultdefine void @"memcpy_seh"() personality ptr @__C_specific_handler {
7200f3410SHanSheng Zhang; CHECK-LABEL: @memcpy_seh(
8200f3410SHanSheng Zhang; CHECK-NEXT:  entry:
9200f3410SHanSheng Zhang; CHECK-NEXT:    %"reg2mem alloca point" = bitcast i32 0 to i32
10200f3410SHanSheng Zhang; CHECK-NEXT:    invoke void @read_mem()
11200f3410SHanSheng Zhang; CHECK-NEXT:    to label [[CLEANUP:%.*]] unwind label [[CATCH_DISPATCH:%.*]]
12200f3410SHanSheng Zhang; CHECK:       catch.dispatch:
13200f3410SHanSheng Zhang; CHECK-NEXT:    [[TMP0:%.*]] = catchswitch within none [label %__except] unwind to caller
14200f3410SHanSheng Zhang; CHECK:       __except:
15*64539b17SMatt Arsenault; CHECK-NEXT:    [[TMP1:%.*]] = catchpad within [[TMP0]] [ptr null]
16200f3410SHanSheng Zhang; CHECK-NEXT:    unreachable
17200f3410SHanSheng Zhang; CHECK:       cleanup:
18200f3410SHanSheng Zhang; CHECK-NEXT:    ret void
19200f3410SHanSheng Zhang;
20200f3410SHanSheng Zhangentry:
21200f3410SHanSheng Zhang  invoke void @"read_mem"()
22200f3410SHanSheng Zhang  to label %cleanup unwind label %catch.dispatch
23200f3410SHanSheng Zhang
24200f3410SHanSheng Zhangcatch.dispatch:                                   ; preds = %entry
25200f3410SHanSheng Zhang  %0 = catchswitch within none [label %__except] unwind to caller
26200f3410SHanSheng Zhang
27200f3410SHanSheng Zhang__except:                                         ; preds = %catch.dispatch
28*64539b17SMatt Arsenault  %1 = catchpad within %0 [ptr null]
29200f3410SHanSheng Zhang  unreachable
30200f3410SHanSheng Zhang
31200f3410SHanSheng Zhangcleanup:                                          ; preds = %entry
32200f3410SHanSheng Zhang  ret void
33200f3410SHanSheng Zhang}
34200f3410SHanSheng Zhang
35200f3410SHanSheng Zhangdeclare i32 @__C_specific_handler(...)
36