File: 2006-12-08-Ptr-ICmp-Branch.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 (131 lines) | stat: -rw-r--r-- 5,611 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
; RUN: opt < %s -passes=simplifycfg -simplifycfg-require-and-preserve-domtree=1 | llvm-dis
; END.

; ModuleID = '2006-12-08-Ptr-ICmp-Branch.ll'
target datalayout = "e-p:32:32"
target triple = "i686-pc-linux-gnu"
	%struct.FILE = type { i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i16, i8, [1 x i8], ptr, i64, ptr, ptr, ptr, ptr, i32, i32, [40 x i8] }
	%struct._IO_FILE = type { i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i16, i8, [1 x i8], ptr, i64, ptr, ptr, ptr, ptr, i32, i32, [40 x i8] }
	%struct._IO_marker = type { ptr, ptr, i32 }
	%struct.charsequence = type { ptr, i32, i32 }
	%struct.trie_s = type { [26 x ptr], i32 }
@str = external global [14 x i8]		; <ptr> [#uses=0]
@str.upgrd.1 = external global [32 x i8]		; <ptr> [#uses=0]
@str.upgrd.2 = external global [12 x i8]		; <ptr> [#uses=0]
@C.0.2294 = external global %struct.charsequence		; <ptr> [#uses=3]
@t = external global ptr		; <ptr> [#uses=0]
@str.upgrd.3 = external global [3 x i8]		; <ptr> [#uses=0]
@str.upgrd.4 = external global [26 x i8]		; <ptr> [#uses=0]

declare void @charsequence_reset(ptr)

declare void @free(ptr)

declare void @charsequence_push(ptr, i8)

declare ptr @charsequence_val(ptr)

declare i32 @_IO_getc(ptr)

declare i32 @tolower(i32)

declare ptr @trie_insert(ptr, ptr)

declare i32 @feof(ptr)

define void @addfile(ptr %t, ptr %f) {
entry:
	%t_addr = alloca ptr		; <ptr> [#uses=2]
	%f_addr = alloca ptr		; <ptr> [#uses=3]
	%c = alloca i8, align 1		; <ptr> [#uses=7]
	%wstate = alloca i32, align 4		; <ptr> [#uses=4]
	%cs = alloca %struct.charsequence, align 16		; <ptr> [#uses=7]
	%str = alloca ptr, align 4		; <ptr> [#uses=3]
	%"alloca point" = bitcast i32 0 to i32		; <i32> [#uses=0]
	store ptr %t, ptr %t_addr
	store ptr %f, ptr %f_addr
	store i32 0, ptr %wstate
	%tmp = getelementptr %struct.charsequence, ptr %cs, i64 0, i32 0		; <ptr> [#uses=1]
	%tmp1 = getelementptr %struct.charsequence, ptr @C.0.2294, i64 0, i32 0		; <ptr> [#uses=1]
	%tmp.upgrd.5 = load ptr, ptr %tmp1		; <ptr> [#uses=1]
	store ptr %tmp.upgrd.5, ptr %tmp
	%tmp.upgrd.6 = getelementptr %struct.charsequence, ptr %cs, i64 0, i32 1		; <ptr> [#uses=1]
	%tmp2 = getelementptr %struct.charsequence, ptr @C.0.2294, i64 0, i32 1		; <ptr> [#uses=1]
	%tmp.upgrd.7 = load i32, ptr %tmp2		; <i32> [#uses=1]
	store i32 %tmp.upgrd.7, ptr %tmp.upgrd.6
	%tmp3 = getelementptr %struct.charsequence, ptr %cs, i64 0, i32 2		; <ptr> [#uses=1]
	%tmp4 = getelementptr %struct.charsequence, ptr @C.0.2294, i64 0, i32 2		; <ptr> [#uses=1]
	%tmp5 = load i32, ptr %tmp4		; <i32> [#uses=1]
	store i32 %tmp5, ptr %tmp3
	br label %bb33
bb:		; preds = %bb33
	%tmp.upgrd.8 = load ptr, ptr %f_addr		; <ptr> [#uses=1]
	%tmp.upgrd.9 = call i32 @_IO_getc( ptr %tmp.upgrd.8 )		; <i32> [#uses=1]
	%tmp6 = call i32 @tolower( i32 %tmp.upgrd.9 )		; <i32> [#uses=1]
	%tmp6.upgrd.10 = trunc i32 %tmp6 to i8		; <i8> [#uses=1]
	store i8 %tmp6.upgrd.10, ptr %c
	%tmp7 = load i32, ptr %wstate		; <i32> [#uses=1]
	%tmp.upgrd.11 = icmp ne i32 %tmp7, 0		; <i1> [#uses=1]
	br i1 %tmp.upgrd.11, label %cond_true, label %cond_false
cond_true:		; preds = %bb
	%tmp.upgrd.12 = load i8, ptr %c		; <i8> [#uses=1]
	%tmp8 = icmp sle i8 %tmp.upgrd.12, 96		; <i1> [#uses=1]
	br i1 %tmp8, label %cond_true9, label %cond_next
cond_true9:		; preds = %cond_true
	br label %bb16
cond_next:		; preds = %cond_true
	%tmp10 = load i8, ptr %c		; <i8> [#uses=1]
	%tmp11 = icmp sgt i8 %tmp10, 122		; <i1> [#uses=1]
	br i1 %tmp11, label %cond_true12, label %cond_next13
cond_true12:		; preds = %cond_next
	br label %bb16
cond_next13:		; preds = %cond_next
	%tmp14 = load i8, ptr %c		; <i8> [#uses=1]
	%tmp14.upgrd.13 = sext i8 %tmp14 to i32		; <i32> [#uses=1]
	%tmp1415 = trunc i32 %tmp14.upgrd.13 to i8		; <i8> [#uses=1]
	call void @charsequence_push( ptr %cs, i8 %tmp1415 )
	br label %bb21
bb16:		; preds = %cond_true12, %cond_true9
	%tmp17 = call ptr @charsequence_val( ptr %cs )		; <ptr> [#uses=1]
	store ptr %tmp17, ptr %str
	%tmp.upgrd.14 = load ptr, ptr %t_addr		; <ptr> [#uses=1]
	%tmp18 = load ptr, ptr %str		; <ptr> [#uses=1]
	%tmp19 = call ptr @trie_insert( ptr %tmp.upgrd.14, ptr %tmp18 )		; <ptr> [#uses=0]
	%tmp20 = load ptr, ptr %str		; <ptr> [#uses=1]
	call void @free( ptr %tmp20 )
	store i32 0, ptr %wstate
	br label %bb21
bb21:		; preds = %bb16, %cond_next13
	br label %cond_next32
cond_false:		; preds = %bb
	%tmp22 = load i8, ptr %c		; <i8> [#uses=1]
	%tmp23 = icmp sgt i8 %tmp22, 96		; <i1> [#uses=1]
	br i1 %tmp23, label %cond_true24, label %cond_next31
cond_true24:		; preds = %cond_false
	%tmp25 = load i8, ptr %c		; <i8> [#uses=1]
	%tmp26 = icmp sle i8 %tmp25, 122		; <i1> [#uses=1]
	br i1 %tmp26, label %cond_true27, label %cond_next30
cond_true27:		; preds = %cond_true24
	call void @charsequence_reset( ptr %cs )
	%tmp28 = load i8, ptr %c		; <i8> [#uses=1]
	%tmp28.upgrd.15 = sext i8 %tmp28 to i32		; <i32> [#uses=1]
	%tmp2829 = trunc i32 %tmp28.upgrd.15 to i8		; <i8> [#uses=1]
	call void @charsequence_push( ptr %cs, i8 %tmp2829 )
	store i32 1, ptr %wstate
	br label %cond_next30
cond_next30:		; preds = %cond_true27, %cond_true24
	br label %cond_next31
cond_next31:		; preds = %cond_next30, %cond_false
	br label %cond_next32
cond_next32:		; preds = %cond_next31, %bb21
	br label %bb33
bb33:		; preds = %cond_next32, %entry
	%tmp34 = load ptr, ptr %f_addr		; <ptr> [#uses=1]
	%tmp35 = call i32 @feof( ptr %tmp34 )		; <i32> [#uses=1]
	%tmp36 = icmp eq i32 %tmp35, 0		; <i1> [#uses=1]
	br i1 %tmp36, label %bb, label %bb37
bb37:		; preds = %bb33
	br label %return
return:		; preds = %bb37
	ret void
}