~louis/ubuntu/trusty/clamav/lp799623_fix_logrotate

« back to all changes in this revision

Viewing changes to libclamav/c++/llvm/test/CodeGen/X86/2009-10-08-MachineLICMBug.ll

  • Committer: Bazaar Package Importer
  • Author(s): Scott Kitterman
  • Date: 2010-03-12 11:30:04 UTC
  • mfrom: (0.41.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20100312113004-b0fop4bkycszdd0z
Tags: 0.96~rc1+dfsg-0ubuntu1
* New upstream RC - FFE (LP: #537636):
  - Add OfficialDatabaseOnly option to clamav-base.postinst.in
  - Add LocalSocketGroup option to clamav-base.postinst.in
  - Add LocalSocketMode option to clamav-base.postinst.in
  - Add CrossFilesystems option to clamav-base.postinst.in
  - Add ClamukoScannerCount option to clamav-base.postinst.in
  - Add BytecodeSecurity opiton to clamav-base.postinst.in
  - Add DetectionStatsHostID option to clamav-freshclam.postinst.in
  - Add Bytecode option to clamav-freshclam.postinst.in
  - Add MilterSocketGroup option to clamav-milter.postinst.in
  - Add MilterSocketMode option to clamav-milter.postinst.in
  - Add ReportHostname option to clamav-milter.postinst.in
  - Bump libclamav SO version to 6.1.0 in libclamav6.install
  - Drop clamdmon from clamav.examples (no longer shipped by upstream)
  - Drop libclamav.a from libclamav-dev.install (not built by upstream)
  - Update SO version for lintian override for libclamav6
  - Add new Bytecode Testing Tool, usr/bin/clambc, to clamav.install
  - Add build-depends on python and python-setuptools for new test suite
  - Update debian/copyright for the embedded copy of llvm (using the system
    llvm is not currently feasible)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
; RUN: llc < %s -mtriple=i386-apple-darwin -relocation-model=pic -stats |& grep {machine-licm} | grep 2
 
2
; rdar://7274692
 
3
 
 
4
%0 = type { [125 x i32] }
 
5
%1 = type { i32 }
 
6
%struct..5sPragmaType = type { i8*, i32 }
 
7
%struct.AggInfo = type { i8, i8, i32, %struct.ExprList*, i32, %struct.AggInfo_col*, i32, i32, i32, %struct.AggInfo_func*, i32, i32 }
 
8
%struct.AggInfo_col = type { %struct.Table*, i32, i32, i32, i32, %struct.Expr* }
 
9
%struct.AggInfo_func = type { %struct.Expr*, %struct.FuncDef*, i32, i32 }
 
10
%struct.AuxData = type { i8*, void (i8*)* }
 
11
%struct.Bitvec = type { i32, i32, i32, %0 }
 
12
%struct.BtCursor = type { %struct.Btree*, %struct.BtShared*, %struct.BtCursor*, %struct.BtCursor*, i32 (i8*, i32, i8*, i32, i8*)*, i8*, i32, %struct.MemPage*, i32, %struct.CellInfo, i8, i8, i8*, i64, i32, i8, i32* }
 
13
%struct.BtLock = type { %struct.Btree*, i32, i8, %struct.BtLock* }
 
14
%struct.BtShared = type { %struct.Pager*, %struct.sqlite3*, %struct.BtCursor*, %struct.MemPage*, i8, i8, i8, i8, i8, i8, i8, i8, i32, i16, i16, i32, i32, i32, i32, i8, i32, i8*, void (i8*)*, %struct.sqlite3_mutex*, %struct.BusyHandler, i32, %struct.BtShared*, %struct.BtLock*, %struct.Btree* }
 
15
%struct.Btree = type { %struct.sqlite3*, %struct.BtShared*, i8, i8, i8, i32, %struct.Btree*, %struct.Btree* }
 
16
%struct.BtreeMutexArray = type { i32, [11 x %struct.Btree*] }
 
17
%struct.BusyHandler = type { i32 (i8*, i32)*, i8*, i32 }
 
18
%struct.CellInfo = type { i8*, i64, i32, i32, i16, i16, i16, i16 }
 
19
%struct.CollSeq = type { i8*, i8, i8, i8*, i32 (i8*, i32, i8*, i32, i8*)*, void (i8*)* }
 
20
%struct.Column = type { i8*, %struct.Expr*, i8*, i8*, i8, i8, i8, i8 }
 
21
%struct.Context = type { i64, i32, %struct.Fifo }
 
22
%struct.CountCtx = type { i64 }
 
23
%struct.Cursor = type { %struct.BtCursor*, i32, i64, i64, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i64, %struct.Btree*, i32, i8*, i64, i8*, %struct.KeyInfo*, i32, i64, %struct.sqlite3_vtab_cursor*, %struct.sqlite3_module*, i32, i32, i32*, i32*, i8* }
 
24
%struct.Db = type { i8*, %struct.Btree*, i8, i8, i8*, void (i8*)*, %struct.Schema* }
 
25
%struct.DbPage = type { %struct.Pager*, i32, %struct.DbPage*, %struct.DbPage*, %struct.PagerLruLink, %struct.DbPage*, i8, i8, i8, i8, i8, i16, %struct.DbPage*, %struct.DbPage*, i8* }
 
26
%struct.Expr = type { i8, i8, i16, %struct.CollSeq*, %struct.Expr*, %struct.Expr*, %struct.ExprList*, %struct..5sPragmaType, %struct..5sPragmaType, i32, i32, %struct.AggInfo*, i32, i32, %struct.Select*, %struct.Table*, i32 }
 
27
%struct.ExprList = type { i32, i32, i32, %struct.ExprList_item* }
 
28
%struct.ExprList_item = type { %struct.Expr*, i8*, i8, i8, i8 }
 
29
%struct.FILE = type { i8*, i32, i32, i16, i16, %struct..5sPragmaType, i32, i8*, i32 (i8*)*, i32 (i8*, i8*, i32)*, i64 (i8*, i64, i32)*, i32 (i8*, i8*, i32)*, %struct..5sPragmaType, %struct.__sFILEX*, i32, [3 x i8], [1 x i8], %struct..5sPragmaType, i32, i64 }
 
30
%struct.FKey = type { %struct.Table*, %struct.FKey*, i8*, %struct.FKey*, i32, %struct.sColMap*, i8, i8, i8, i8 }
 
31
%struct.Fifo = type { i32, %struct.FifoPage*, %struct.FifoPage* }
 
32
%struct.FifoPage = type { i32, i32, i32, %struct.FifoPage*, [1 x i64] }
 
33
%struct.FuncDef = type { i16, i8, i8, i8, i8*, %struct.FuncDef*, void (%struct.sqlite3_context*, i32, %struct.Mem**)*, void (%struct.sqlite3_context*, i32, %struct.Mem**)*, void (%struct.sqlite3_context*)*, [1 x i8] }
 
34
%struct.Hash = type { i8, i8, i32, i32, %struct.HashElem*, %struct._ht* }
 
35
%struct.HashElem = type { %struct.HashElem*, %struct.HashElem*, i8*, i8*, i32 }
 
36
%struct.IdList = type { %struct..5sPragmaType*, i32, i32 }
 
37
%struct.Index = type { i8*, i32, i32*, i32*, %struct.Table*, i32, i8, i8, i8*, %struct.Index*, %struct.Schema*, i8*, i8** }
 
38
%struct.KeyInfo = type { %struct.sqlite3*, i8, i8, i8, i32, i8*, [1 x %struct.CollSeq*] }
 
39
%struct.Mem = type { %struct.CountCtx, double, %struct.sqlite3*, i8*, i32, i16, i8, i8, void (i8*)* }
 
40
%struct.MemPage = type { i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i16, i16, i16, i16, i16, i16, [5 x %struct._OvflCell], %struct.BtShared*, i8*, %struct.DbPage*, i32, %struct.MemPage* }
 
41
%struct.Module = type { %struct.sqlite3_module*, i8*, i8*, void (i8*)* }
 
42
%struct.Op = type { i8, i8, i8, i8, i32, i32, i32, %1 }
 
43
%struct.Pager = type { %struct.sqlite3_vfs*, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %struct.Bitvec*, %struct.Bitvec*, i8*, i8*, i8*, i8*, %struct.sqlite3_file*, %struct.sqlite3_file*, %struct.sqlite3_file*, %struct.BusyHandler*, %struct.PagerLruList, %struct.DbPage*, %struct.DbPage*, %struct.DbPage*, i64, i64, i64, i64, i64, i32, void (%struct.DbPage*, i32)*, void (%struct.DbPage*, i32)*, i32, %struct.DbPage**, i8*, [16 x i8] }
 
44
%struct.PagerLruLink = type { %struct.DbPage*, %struct.DbPage* }
 
45
%struct.PagerLruList = type { %struct.DbPage*, %struct.DbPage*, %struct.DbPage* }
 
46
%struct.Schema = type { i32, %struct.Hash, %struct.Hash, %struct.Hash, %struct.Hash, %struct.Table*, i8, i8, i16, i32, %struct.sqlite3* }
 
47
%struct.Select = type { %struct.ExprList*, i8, i8, i8, i8, i8, i8, i8, %struct.SrcList*, %struct.Expr*, %struct.ExprList*, %struct.Expr*, %struct.ExprList*, %struct.Select*, %struct.Select*, %struct.Select*, %struct.Expr*, %struct.Expr*, i32, i32, [3 x i32] }
 
48
%struct.SrcList = type { i16, i16, [1 x %struct.SrcList_item] }
 
49
%struct.SrcList_item = type { i8*, i8*, i8*, %struct.Table*, %struct.Select*, i8, i8, i32, %struct.Expr*, %struct.IdList*, i64 }
 
50
%struct.Table = type { i8*, i32, %struct.Column*, i32, %struct.Index*, i32, %struct.Select*, i32, %struct.Trigger*, %struct.FKey*, i8*, %struct.Expr*, i32, i8, i8, i8, i8, i8, i8, i8, %struct.Module*, %struct.sqlite3_vtab*, i32, i8**, %struct.Schema* }
 
51
%struct.Trigger = type { i8*, i8*, i8, i8, %struct.Expr*, %struct.IdList*, %struct..5sPragmaType, %struct.Schema*, %struct.Schema*, %struct.TriggerStep*, %struct.Trigger* }
 
52
%struct.TriggerStep = type { i32, i32, %struct.Trigger*, %struct.Select*, %struct..5sPragmaType, %struct.Expr*, %struct.ExprList*, %struct.IdList*, %struct.TriggerStep*, %struct.TriggerStep* }
 
53
%struct.Vdbe = type { %struct.sqlite3*, %struct.Vdbe*, %struct.Vdbe*, i32, i32, %struct.Op*, i32, i32, i32*, %struct.Mem**, %struct.Mem*, i32, %struct.Cursor**, i32, %struct.Mem*, i8**, i32, i32, i32, %struct.Mem*, i32, i32, %struct.Fifo, i32, i32, %struct.Context*, i32, i32, i32, i32, i32, [25 x i32], i32, i32, i8**, i8*, %struct.Mem*, i8, i8, i8, i8, i8, i8, i32, i64, i32, %struct.BtreeMutexArray, i32, i8*, i32 }
 
54
%struct.VdbeFunc = type { %struct.FuncDef*, i32, [1 x %struct.AuxData] }
 
55
%struct._OvflCell = type { i8*, i16 }
 
56
%struct._RuneCharClass = type { [14 x i8], i32 }
 
57
%struct._RuneEntry = type { i32, i32, i32, i32* }
 
58
%struct._RuneLocale = type { [8 x i8], [32 x i8], i32 (i8*, i32, i8**)*, i32 (i32, i8*, i32, i8**)*, i32, [256 x i32], [256 x i32], [256 x i32], %struct._RuneRange, %struct._RuneRange, %struct._RuneRange, i8*, i32, i32, %struct._RuneCharClass* }
 
59
%struct._RuneRange = type { i32, %struct._RuneEntry* }
 
60
%struct.__sFILEX = type opaque
 
61
%struct._ht = type { i32, %struct.HashElem* }
 
62
%struct.callback_data = type { %struct.sqlite3*, i32, i32, %struct.FILE*, i32, i32, i32, i8*, [20 x i8], [100 x i32], [100 x i32], [20 x i8], %struct.previous_mode_data, [1024 x i8], i8* }
 
63
%struct.previous_mode_data = type { i32, i32, i32, [100 x i32] }
 
64
%struct.sColMap = type { i32, i8* }
 
65
%struct.sqlite3 = type { %struct.sqlite3_vfs*, i32, %struct.Db*, i32, i32, i32, i32, i8, i8, i8, i8, i32, %struct.CollSeq*, i64, i64, i32, i32, i32, %struct.sqlite3_mutex*, %struct.sqlite3InitInfo, i32, i8**, %struct.Vdbe*, i32, void (i8*, i8*)*, i8*, void (i8*, i8*, i64)*, i8*, i8*, i32 (i8*)*, i8*, void (i8*)*, i8*, void (i8*, i32, i8*, i8*, i64)*, void (i8*, %struct.sqlite3*, i32, i8*)*, void (i8*, %struct.sqlite3*, i32, i8*)*, i8*, %struct.Mem*, i8*, i8*, %union.anon, i32 (i8*, i32, i8*, i8*, i8*, i8*)*, i8*, i32 (i8*)*, i8*, i32, %struct.Hash, %struct.Table*, %struct.sqlite3_vtab**, i32, %struct.Hash, %struct.Hash, %struct.BusyHandler, i32, [2 x %struct.Db], i8 }
 
66
%struct.sqlite3InitInfo = type { i32, i32, i8 }
 
67
%struct.sqlite3_context = type { %struct.FuncDef*, %struct.VdbeFunc*, %struct.Mem, %struct.Mem*, i32, %struct.CollSeq* }
 
68
%struct.sqlite3_file = type { %struct.sqlite3_io_methods* }
 
69
%struct.sqlite3_index_constraint = type { i32, i8, i8, i32 }
 
70
%struct.sqlite3_index_constraint_usage = type { i32, i8 }
 
71
%struct.sqlite3_index_info = type { i32, %struct.sqlite3_index_constraint*, i32, %struct.sqlite3_index_constraint_usage*, %struct.sqlite3_index_constraint_usage*, i32, i8*, i32, i32, double }
 
72
%struct.sqlite3_io_methods = type { i32, i32 (%struct.sqlite3_file*)*, i32 (%struct.sqlite3_file*, i8*, i32, i64)*, i32 (%struct.sqlite3_file*, i8*, i32, i64)*, i32 (%struct.sqlite3_file*, i64)*, i32 (%struct.sqlite3_file*, i32)*, i32 (%struct.sqlite3_file*, i64*)*, i32 (%struct.sqlite3_file*, i32)*, i32 (%struct.sqlite3_file*, i32)*, i32 (%struct.sqlite3_file*)*, i32 (%struct.sqlite3_file*, i32, i8*)*, i32 (%struct.sqlite3_file*)*, i32 (%struct.sqlite3_file*)* }
 
73
%struct.sqlite3_module = type { i32, i32 (%struct.sqlite3*, i8*, i32, i8**, %struct.sqlite3_vtab**, i8**)*, i32 (%struct.sqlite3*, i8*, i32, i8**, %struct.sqlite3_vtab**, i8**)*, i32 (%struct.sqlite3_vtab*, %struct.sqlite3_index_info*)*, i32 (%struct.sqlite3_vtab*)*, i32 (%struct.sqlite3_vtab*)*, i32 (%struct.sqlite3_vtab*, %struct.sqlite3_vtab_cursor**)*, i32 (%struct.sqlite3_vtab_cursor*)*, i32 (%struct.sqlite3_vtab_cursor*, i32, i8*, i32, %struct.Mem**)*, i32 (%struct.sqlite3_vtab_cursor*)*, i32 (%struct.sqlite3_vtab_cursor*)*, i32 (%struct.sqlite3_vtab_cursor*, %struct.sqlite3_context*, i32)*, i32 (%struct.sqlite3_vtab_cursor*, i64*)*, i32 (%struct.sqlite3_vtab*, i32, %struct.Mem**, i64*)*, i32 (%struct.sqlite3_vtab*)*, i32 (%struct.sqlite3_vtab*)*, i32 (%struct.sqlite3_vtab*)*, i32 (%struct.sqlite3_vtab*)*, i32 (%struct.sqlite3_vtab*, i32, i8*, void (%struct.sqlite3_context*, i32, %struct.Mem**)**, i8**)*, i32 (%struct.sqlite3_vtab*, i8*)* }
 
74
%struct.sqlite3_mutex = type opaque
 
75
%struct.sqlite3_vfs = type { i32, i32, i32, %struct.sqlite3_vfs*, i8*, i8*, i32 (%struct.sqlite3_vfs*, i8*, %struct.sqlite3_file*, i32, i32*)*, i32 (%struct.sqlite3_vfs*, i8*, i32)*, i32 (%struct.sqlite3_vfs*, i8*, i32)*, i32 (%struct.sqlite3_vfs*, i32, i8*)*, i32 (%struct.sqlite3_vfs*, i8*, i32, i8*)*, i8* (%struct.sqlite3_vfs*, i8*)*, void (%struct.sqlite3_vfs*, i32, i8*)*, i8* (%struct.sqlite3_vfs*, i8*, i8*)*, void (%struct.sqlite3_vfs*, i8*)*, i32 (%struct.sqlite3_vfs*, i32, i8*)*, i32 (%struct.sqlite3_vfs*, i32)*, i32 (%struct.sqlite3_vfs*, double*)* }
 
76
%struct.sqlite3_vtab = type { %struct.sqlite3_module*, i32, i8* }
 
77
%struct.sqlite3_vtab_cursor = type { %struct.sqlite3_vtab* }
 
78
%union.anon = type { double }
 
79
 
 
80
@_DefaultRuneLocale = external global %struct._RuneLocale ; <%struct._RuneLocale*> [#uses=2]
 
81
@__stderrp = external global %struct.FILE*        ; <%struct.FILE**> [#uses=1]
 
82
@.str10 = internal constant [16 x i8] c"Out of memory!\0A\00", align 1 ; <[16 x i8]*> [#uses=1]
 
83
@llvm.used = appending global [1 x i8*] [i8* bitcast (void (%struct.callback_data*, i8*)* @set_table_name to i8*)], section "llvm.metadata" ; <[1 x i8*]*> [#uses=0]
 
84
 
 
85
define fastcc void @set_table_name(%struct.callback_data* nocapture %p, i8* %zName) nounwind ssp {
 
86
entry:
 
87
  %0 = getelementptr inbounds %struct.callback_data* %p, i32 0, i32 7 ; <i8**> [#uses=3]
 
88
  %1 = load i8** %0, align 4                      ; <i8*> [#uses=2]
 
89
  %2 = icmp eq i8* %1, null                       ; <i1> [#uses=1]
 
90
  br i1 %2, label %bb1, label %bb
 
91
 
 
92
bb:                                               ; preds = %entry
 
93
  free i8* %1
 
94
  store i8* null, i8** %0, align 4
 
95
  br label %bb1
 
96
 
 
97
bb1:                                              ; preds = %bb, %entry
 
98
  %3 = icmp eq i8* %zName, null                   ; <i1> [#uses=1]
 
99
  br i1 %3, label %return, label %bb2
 
100
 
 
101
bb2:                                              ; preds = %bb1
 
102
  %4 = load i8* %zName, align 1                   ; <i8> [#uses=2]
 
103
  %5 = zext i8 %4 to i32                          ; <i32> [#uses=2]
 
104
  %6 = icmp sgt i8 %4, -1                         ; <i1> [#uses=1]
 
105
  br i1 %6, label %bb.i.i, label %bb1.i.i
 
106
 
 
107
bb.i.i:                                           ; preds = %bb2
 
108
  %7 = getelementptr inbounds %struct._RuneLocale* @_DefaultRuneLocale, i32 0, i32 5, i32 %5 ; <i32*> [#uses=1]
 
109
  %8 = load i32* %7, align 4                      ; <i32> [#uses=1]
 
110
  %9 = and i32 %8, 256                            ; <i32> [#uses=1]
 
111
  br label %isalpha.exit
 
112
 
 
113
bb1.i.i:                                          ; preds = %bb2
 
114
  %10 = tail call i32 @__maskrune(i32 %5, i32 256) nounwind ; <i32> [#uses=1]
 
115
  br label %isalpha.exit
 
116
 
 
117
isalpha.exit:                                     ; preds = %bb1.i.i, %bb.i.i
 
118
  %storemerge.in.in.i.i = phi i32 [ %9, %bb.i.i ], [ %10, %bb1.i.i ] ; <i32> [#uses=1]
 
119
  %storemerge.in.i.i = icmp eq i32 %storemerge.in.in.i.i, 0 ; <i1> [#uses=1]
 
120
  br i1 %storemerge.in.i.i, label %bb3, label %bb5
 
121
 
 
122
bb3:                                              ; preds = %isalpha.exit
 
123
  %11 = load i8* %zName, align 1                  ; <i8> [#uses=2]
 
124
  %12 = icmp eq i8 %11, 95                        ; <i1> [#uses=1]
 
125
  br i1 %12, label %bb5, label %bb12.preheader
 
126
 
 
127
bb5:                                              ; preds = %bb3, %isalpha.exit
 
128
  %.pre = load i8* %zName, align 1                ; <i8> [#uses=1]
 
129
  br label %bb12.preheader
 
130
 
 
131
bb12.preheader:                                   ; preds = %bb5, %bb3
 
132
  %13 = phi i8 [ %.pre, %bb5 ], [ %11, %bb3 ]     ; <i8> [#uses=1]
 
133
  %needQuote.1.ph = phi i32 [ 0, %bb5 ], [ 1, %bb3 ] ; <i32> [#uses=2]
 
134
  %14 = icmp eq i8 %13, 0                         ; <i1> [#uses=1]
 
135
  br i1 %14, label %bb13, label %bb7
 
136
 
 
137
bb7:                                              ; preds = %bb11, %bb12.preheader
 
138
  %i.011 = phi i32 [ %tmp17, %bb11 ], [ 0, %bb12.preheader ] ; <i32> [#uses=2]
 
139
  %n.110 = phi i32 [ %26, %bb11 ], [ 0, %bb12.preheader ] ; <i32> [#uses=3]
 
140
  %needQuote.19 = phi i32 [ %needQuote.0, %bb11 ], [ %needQuote.1.ph, %bb12.preheader ] ; <i32> [#uses=2]
 
141
  %scevgep16 = getelementptr i8* %zName, i32 %i.011 ; <i8*> [#uses=2]
 
142
  %tmp17 = add i32 %i.011, 1                      ; <i32> [#uses=2]
 
143
  %scevgep18 = getelementptr i8* %zName, i32 %tmp17 ; <i8*> [#uses=1]
 
144
  %15 = load i8* %scevgep16, align 1              ; <i8> [#uses=2]
 
145
  %16 = zext i8 %15 to i32                        ; <i32> [#uses=2]
 
146
  %17 = icmp sgt i8 %15, -1                       ; <i1> [#uses=1]
 
147
  br i1 %17, label %bb.i.i2, label %bb1.i.i3
 
148
 
 
149
bb.i.i2:                                          ; preds = %bb7
 
150
  %18 = getelementptr inbounds %struct._RuneLocale* @_DefaultRuneLocale, i32 0, i32 5, i32 %16 ; <i32*> [#uses=1]
 
151
  %19 = load i32* %18, align 4                    ; <i32> [#uses=1]
 
152
  %20 = and i32 %19, 1280                         ; <i32> [#uses=1]
 
153
  br label %isalnum.exit
 
154
 
 
155
bb1.i.i3:                                         ; preds = %bb7
 
156
  %21 = tail call i32 @__maskrune(i32 %16, i32 1280) nounwind ; <i32> [#uses=1]
 
157
  br label %isalnum.exit
 
158
 
 
159
isalnum.exit:                                     ; preds = %bb1.i.i3, %bb.i.i2
 
160
  %storemerge.in.in.i.i4 = phi i32 [ %20, %bb.i.i2 ], [ %21, %bb1.i.i3 ] ; <i32> [#uses=1]
 
161
  %storemerge.in.i.i5 = icmp eq i32 %storemerge.in.in.i.i4, 0 ; <i1> [#uses=1]
 
162
  br i1 %storemerge.in.i.i5, label %bb8, label %bb11
 
163
 
 
164
bb8:                                              ; preds = %isalnum.exit
 
165
  %22 = load i8* %scevgep16, align 1              ; <i8> [#uses=2]
 
166
  %23 = icmp eq i8 %22, 95                        ; <i1> [#uses=1]
 
167
  br i1 %23, label %bb11, label %bb9
 
168
 
 
169
bb9:                                              ; preds = %bb8
 
170
  %24 = icmp eq i8 %22, 39                        ; <i1> [#uses=1]
 
171
  %25 = zext i1 %24 to i32                        ; <i32> [#uses=1]
 
172
  %.n.1 = add i32 %n.110, %25                     ; <i32> [#uses=1]
 
173
  br label %bb11
 
174
 
 
175
bb11:                                             ; preds = %bb9, %bb8, %isalnum.exit
 
176
  %needQuote.0 = phi i32 [ 1, %bb9 ], [ %needQuote.19, %isalnum.exit ], [ %needQuote.19, %bb8 ] ; <i32> [#uses=2]
 
177
  %n.0 = phi i32 [ %.n.1, %bb9 ], [ %n.110, %isalnum.exit ], [ %n.110, %bb8 ] ; <i32> [#uses=1]
 
178
  %26 = add nsw i32 %n.0, 1                       ; <i32> [#uses=2]
 
179
  %27 = load i8* %scevgep18, align 1              ; <i8> [#uses=1]
 
180
  %28 = icmp eq i8 %27, 0                         ; <i1> [#uses=1]
 
181
  br i1 %28, label %bb13, label %bb7
 
182
 
 
183
bb13:                                             ; preds = %bb11, %bb12.preheader
 
184
  %n.1.lcssa = phi i32 [ 0, %bb12.preheader ], [ %26, %bb11 ] ; <i32> [#uses=2]
 
185
  %needQuote.1.lcssa = phi i32 [ %needQuote.1.ph, %bb12.preheader ], [ %needQuote.0, %bb11 ] ; <i32> [#uses=1]
 
186
  %29 = add nsw i32 %n.1.lcssa, 2                 ; <i32> [#uses=1]
 
187
  %30 = icmp eq i32 %needQuote.1.lcssa, 0         ; <i1> [#uses=3]
 
188
  %n.1. = select i1 %30, i32 %n.1.lcssa, i32 %29  ; <i32> [#uses=1]
 
189
  %31 = add nsw i32 %n.1., 1                      ; <i32> [#uses=1]
 
190
  %32 = malloc i8, i32 %31                        ; <i8*> [#uses=7]
 
191
  store i8* %32, i8** %0, align 4
 
192
  %33 = icmp eq i8* %32, null                     ; <i1> [#uses=1]
 
193
  br i1 %33, label %bb16, label %bb17
 
194
 
 
195
bb16:                                             ; preds = %bb13
 
196
  %34 = load %struct.FILE** @__stderrp, align 4   ; <%struct.FILE*> [#uses=1]
 
197
  %35 = bitcast %struct.FILE* %34 to i8*          ; <i8*> [#uses=1]
 
198
  %36 = tail call i32 @"\01_fwrite$UNIX2003"(i8* getelementptr inbounds ([16 x i8]* @.str10, i32 0, i32 0), i32 1, i32 15, i8* %35) nounwind ; <i32> [#uses=0]
 
199
  tail call void @exit(i32 1) noreturn nounwind
 
200
  unreachable
 
201
 
 
202
bb17:                                             ; preds = %bb13
 
203
  br i1 %30, label %bb23.preheader, label %bb18
 
204
 
 
205
bb18:                                             ; preds = %bb17
 
206
  store i8 39, i8* %32, align 4
 
207
  br label %bb23.preheader
 
208
 
 
209
bb23.preheader:                                   ; preds = %bb18, %bb17
 
210
  %n.3.ph = phi i32 [ 1, %bb18 ], [ 0, %bb17 ]    ; <i32> [#uses=2]
 
211
  %37 = load i8* %zName, align 1                  ; <i8> [#uses=1]
 
212
  %38 = icmp eq i8 %37, 0                         ; <i1> [#uses=1]
 
213
  br i1 %38, label %bb24, label %bb20
 
214
 
 
215
bb20:                                             ; preds = %bb22, %bb23.preheader
 
216
  %storemerge18 = phi i32 [ %tmp, %bb22 ], [ 0, %bb23.preheader ] ; <i32> [#uses=2]
 
217
  %n.37 = phi i32 [ %n.4, %bb22 ], [ %n.3.ph, %bb23.preheader ] ; <i32> [#uses=3]
 
218
  %scevgep = getelementptr i8* %zName, i32 %storemerge18 ; <i8*> [#uses=1]
 
219
  %tmp = add i32 %storemerge18, 1                 ; <i32> [#uses=2]
 
220
  %scevgep15 = getelementptr i8* %zName, i32 %tmp ; <i8*> [#uses=1]
 
221
  %39 = load i8* %scevgep, align 1                ; <i8> [#uses=2]
 
222
  %40 = getelementptr inbounds i8* %32, i32 %n.37 ; <i8*> [#uses=1]
 
223
  store i8 %39, i8* %40, align 1
 
224
  %41 = add nsw i32 %n.37, 1                      ; <i32> [#uses=2]
 
225
  %42 = icmp eq i8 %39, 39                        ; <i1> [#uses=1]
 
226
  br i1 %42, label %bb21, label %bb22
 
227
 
 
228
bb21:                                             ; preds = %bb20
 
229
  %43 = getelementptr inbounds i8* %32, i32 %41   ; <i8*> [#uses=1]
 
230
  store i8 39, i8* %43, align 1
 
231
  %44 = add nsw i32 %n.37, 2                      ; <i32> [#uses=1]
 
232
  br label %bb22
 
233
 
 
234
bb22:                                             ; preds = %bb21, %bb20
 
235
  %n.4 = phi i32 [ %44, %bb21 ], [ %41, %bb20 ]   ; <i32> [#uses=2]
 
236
  %45 = load i8* %scevgep15, align 1              ; <i8> [#uses=1]
 
237
  %46 = icmp eq i8 %45, 0                         ; <i1> [#uses=1]
 
238
  br i1 %46, label %bb24, label %bb20
 
239
 
 
240
bb24:                                             ; preds = %bb22, %bb23.preheader
 
241
  %n.3.lcssa = phi i32 [ %n.3.ph, %bb23.preheader ], [ %n.4, %bb22 ] ; <i32> [#uses=3]
 
242
  br i1 %30, label %bb26, label %bb25
 
243
 
 
244
bb25:                                             ; preds = %bb24
 
245
  %47 = getelementptr inbounds i8* %32, i32 %n.3.lcssa ; <i8*> [#uses=1]
 
246
  store i8 39, i8* %47, align 1
 
247
  %48 = add nsw i32 %n.3.lcssa, 1                 ; <i32> [#uses=1]
 
248
  br label %bb26
 
249
 
 
250
bb26:                                             ; preds = %bb25, %bb24
 
251
  %n.5 = phi i32 [ %48, %bb25 ], [ %n.3.lcssa, %bb24 ] ; <i32> [#uses=1]
 
252
  %49 = getelementptr inbounds i8* %32, i32 %n.5  ; <i8*> [#uses=1]
 
253
  store i8 0, i8* %49, align 1
 
254
  ret void
 
255
 
 
256
return:                                           ; preds = %bb1
 
257
  ret void
 
258
}
 
259
 
 
260
declare i32 @"\01_fwrite$UNIX2003"(i8*, i32, i32, i8*)
 
261
 
 
262
declare void @exit(i32) noreturn nounwind
 
263
 
 
264
declare i32 @__maskrune(i32, i32)