File: 2013-01-09-DAGCombineBug.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 (132 lines) | stat: -rw-r--r-- 4,844 bytes parent folder | download | duplicates (10)
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
; RUN: llc -mtriple=x86_64-apple-macosx10.5.0 < %s

; rdar://12968664

define void @t() nounwind uwtable ssp {
  br label %4

; <label>:1                                       ; preds = %4, %2
  ret void

; <label>:2                                       ; preds = %6, %5, %3, %2
  switch i32 undef, label %2 [
    i32 1090573978, label %1
    i32 1090573938, label %3
    i32 1090573957, label %5
  ]

; <label>:3                                       ; preds = %4, %2
  br i1 undef, label %2, label %4

; <label>:4                                       ; preds = %6, %5, %3, %0
  switch i32 undef, label %11 [
    i32 1090573938, label %3
    i32 1090573957, label %5
    i32 1090573978, label %1
    i32 165205179, label %6
  ]

; <label>:5                                       ; preds = %4, %2
  br i1 undef, label %2, label %4

; <label>:6                                       ; preds = %4
  %7 = icmp eq i32 undef, 590901838
  %8 = or i1 false, %7
  %9 = or i1 true, %8
  %10 = xor i1 %8, %9
  br i1 %10, label %4, label %2

; <label>:11                                      ; preds = %11, %4
  br label %11
}

; PR15608
@global = external constant [2 x i8]

define void @PR15608() {
bb:
  br label %bb3

bb1:                                              ; No predecessors!
  %constexpr = ptrtoint ptr @global to i64
  %constexpr1 = zext i64 %constexpr to i384
  %constexpr2 = shl i384 %constexpr1, 192
  %constexpr3 = or i384 %constexpr2, 425269881901436522087161771558896140289
  %constexpr4 = lshr i384 %constexpr3, 128
  %constexpr5 = trunc i384 %constexpr4 to i128
  %constexpr6 = lshr i128 %constexpr5, 64
  %constexpr7 = trunc i128 %constexpr6 to i64
  %constexpr8 = zext i64 %constexpr7 to i192
  %constexpr9 = shl i192 %constexpr8, 64
  %constexpr10 = or i192 %constexpr9, 1
  %constexpr11 = lshr i192 %constexpr10, 128
  %constexpr12 = trunc i192 %constexpr11 to i1
  %constexpr13 = zext i1 %constexpr12 to i64
  %constexpr14 = xor i64 %constexpr13, 1
  %constexpr15 = icmp ult i64 %constexpr14, 1
  br i1 %constexpr15, label %bb2, label %bb3

bb2:                                              ; preds = %bb1
  unreachable

bb3:                                              ; preds = %bb1, %bb
  %constexpr16 = ptrtoint ptr @global to i64
  %constexpr17 = zext i64 %constexpr16 to i384
  %constexpr18 = shl i384 %constexpr17, 192
  %constexpr19 = or i384 %constexpr18, 425269881901436522087161771558896140289
  %constexpr20 = lshr i384 %constexpr19, 128
  %constexpr21 = trunc i384 %constexpr20 to i128
  %constexpr22 = lshr i128 %constexpr21, 64
  %constexpr23 = trunc i128 %constexpr22 to i64
  %constexpr24 = zext i64 %constexpr23 to i192
  %constexpr25 = shl i192 %constexpr24, 64
  %constexpr26 = or i192 %constexpr25, 1
  %constexpr27 = lshr i192 %constexpr26, 128
  %constexpr28 = trunc i192 %constexpr27 to i1
  %constexpr29 = and i192 %constexpr26, -340282366920938463463374607431768211457
  %constexpr30 = zext i1 %constexpr28 to i192
  %constexpr31 = shl i192 %constexpr30, 128
  %constexpr32 = or i192 %constexpr29, %constexpr31
  %constexpr33 = lshr i192 %constexpr32, 128
  %constexpr34 = trunc i192 %constexpr33 to i1
  %constexpr35 = xor i1 %constexpr28, %constexpr34
  br i1 %constexpr35, label %bb7, label %phi.constexpr

phi.constexpr:                                    ; preds = %bb3
  %constexpr36 = ptrtoint ptr @global to i64
  %constexpr37 = zext i64 %constexpr36 to i384
  %constexpr38 = shl i384 %constexpr37, 192
  %constexpr39 = or i384 %constexpr38, 425269881901436522087161771558896140289
  %constexpr40 = lshr i384 %constexpr39, 128
  %constexpr41 = trunc i384 %constexpr40 to i128
  %constexpr42 = lshr i128 %constexpr41, 64
  %constexpr43 = trunc i128 %constexpr42 to i64
  %constexpr44 = zext i64 %constexpr43 to i192
  %constexpr45 = shl i192 %constexpr44, 64
  %constexpr46 = or i192 %constexpr45, 1
  %constexpr47 = and i192 %constexpr46, -340282366920938463463374607431768211457
  %constexpr48 = lshr i192 %constexpr46, 128
  %constexpr49 = trunc i192 %constexpr48 to i1
  %constexpr50 = zext i1 %constexpr49 to i192
  %constexpr51 = shl i192 %constexpr50, 128
  %constexpr52 = or i192 %constexpr47, %constexpr51
  %constexpr53 = lshr i192 %constexpr52, 128
  %constexpr54 = trunc i192 %constexpr53 to i1
  br label %bb4

bb4:                                              ; preds = %phi.constexpr, %bb6
  %tmp = phi i1 [ true, %bb6 ], [ %constexpr54, %phi.constexpr ]
  br i1 false, label %bb8, label %bb5

bb5:                                              ; preds = %bb4
  br i1 %tmp, label %bb8, label %bb6

bb6:                                              ; preds = %bb5
  br i1 false, label %bb8, label %bb4

bb7:                                              ; preds = %bb3
  unreachable

bb8:                                              ; preds = %bb6, %bb5, %bb4
  unreachable
}