File: getmatchingvalue-crash.ll

package info (click to toggle)
llvm-toolchain-17 1%3A17.0.6-22
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,799,624 kB
  • sloc: cpp: 6,428,607; ansic: 1,383,196; asm: 793,408; python: 223,504; objc: 75,364; f90: 60,502; lisp: 33,869; pascal: 15,282; sh: 9,684; perl: 7,453; ml: 4,937; awk: 3,523; makefile: 2,889; javascript: 2,149; xml: 888; fortran: 619; cs: 573
file content (142 lines) | stat: -rw-r--r-- 4,292 bytes parent folder | download | duplicates (12)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
; RUN: opt -passes='early-cse<memssa>' -S < %s | FileCheck %s

; Check that this doesn't crash. The crash only happens with expensive checks,
; but there doesn't seem to be a REQUIRES for that.

; CHECK: invoke void @f1

target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%s.0 = type { %s.1 }
%s.1 = type { ptr }
%s.2 = type { %s.3, %s.6, %s.16 }
%s.3 = type { %s.4, %s.5 }
%s.4 = type { ptr, i64 }
%s.5 = type { ptr }
%s.6 = type <{ %s.7, %s.10, ptr, i32, [4 x i8] }>
%s.7 = type { ptr, %s.8, ptr, ptr, ptr, ptr, ptr, ptr }
%s.8 = type { ptr }
%s.9 = type opaque
%s.10 = type { %s.11 }
%s.11 = type { %s.12 }
%s.12 = type { %s.13 }
%s.13 = type { %s.14 }
%s.14 = type { %s.15 }
%s.15 = type { i64, i64, ptr }
%s.16 = type <{ %s.17, ptr, i32 }>
%s.17 = type { ptr, i32, i64, i64, i32, i32, ptr, ptr, ptr, ptr, i64, i64, ptr, i64, i64, ptr, i64, i64 }
%s.18 = type { ptr, %s.16 }
%s.19 = type { i8, %s.20 }
%s.20 = type { %s.21 }
%s.21 = type { ptr, %s.24, %s.26 }
%s.22 = type { ptr }
%s.23 = type <{ %s.22, ptr, ptr, i8, [7 x i8] }>
%s.24 = type { %s.25 }
%s.25 = type { %s.22 }
%s.26 = type { %s.27 }
%s.27 = type { i64 }

@g0 = external constant [1 x i8], align 1

declare i32 @f0(...)

; Function Attrs: uwtable
declare void @f1(ptr nocapture) align 2

declare void @f2(ptr, ptr)

declare void @f3(ptr, ptr, i32)

define ptr @f4(ptr %a0, ptr %a1, i32 %a2, ptr %a3) align 2 personality ptr @f0 {
b0:
  %v0 = alloca %s.0, align 8
  br label %b1

b1:                                               ; preds = %b0
  invoke void @f5(ptr nonnull sret(%s.10) align 8 undef, ptr nonnull undef)
          to label %b6 unwind label %b3

b2:                                               ; preds = %b2
  %v1 = invoke nonnull align 8 dereferenceable(24) ptr @f6(ptr undef, i64 undef, i64 1)
          to label %b2 unwind label %b4

b3:                                               ; preds = %b1
  %v2 = landingpad { ptr, i32 }
          cleanup
  br label %b5

b4:                                               ; preds = %b2
  %v3 = landingpad { ptr, i32 }
          cleanup
  br label %b5

b5:                                               ; preds = %b4, %b3
  resume { ptr, i32 } undef

b6:                                               ; preds = %b1
  invoke void @f1(ptr nonnull %v0)
          to label %b8 unwind label %b7

b7:                                               ; preds = %b6
  %v4 = landingpad { ptr, i32 }
          cleanup
  br label %b20

b8:                                               ; preds = %b6
  invoke void @f2(ptr sret(%s.10) align 8 undef, ptr undef)
          to label %b10 unwind label %b14

b9:                                               ; No predecessors!
  br label %b16

b10:                                              ; preds = %b8
  %v6 = invoke i32 @f7(ptr nonnull undef, i64 0, i64 -1, ptr @g0, i64 undef)
          to label %b12 unwind label %b11

b11:                                              ; preds = %b10
  %v7 = landingpad { ptr, i32 }
          catch ptr null
  unreachable

b12:                                              ; preds = %b10
  invoke void @f3(ptr nonnull sret(%s.10) align 8 undef, ptr %a1, i32 %a2)
          to label %b13 unwind label %b15

b13:                                              ; preds = %b12
  unreachable

b14:                                              ; preds = %b8
  %v8 = landingpad { ptr, i32 }
          cleanup
  br label %b16

b15:                                              ; preds = %b12
  %v9 = landingpad { ptr, i32 }
          cleanup
  br label %b16

b16:                                              ; preds = %b15, %b14, %b9
  br label %b17

b17:                                              ; preds = %b16
  %v12 = load ptr, ptr %v0, align 8
  br label %b18

b18:                                              ; preds = %b17
  call void undef(ptr nonnull %v12)
  br label %b19

b19:                                              ; preds = %b18
  store ptr null, ptr %v0, align 8
  br label %b20

b20:                                              ; preds = %b19, %b7
  resume { ptr, i32 } undef
}

declare hidden void @f5(ptr, ptr)

declare ptr @f6(ptr, i64, i64)

declare i32 @f7(ptr, i64, i64, ptr, i64)