repo.or.cz
/
smatch.git
/
search
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
log
|
graphiclog1
|
graphiclog2
|
commit
|
commitdiff
|
tree
|
refs
|
edit
|
fork
first
·
prev
·
next
smatch: rename get_variable_from_expr_complex() to expr_to_str_sym_complex()
2013-01-11
Dan Carpente
r
sma
t
ch:
rename get_variab
l
e
_
f
rom_expr_complex() to
.
.
.
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2013-01-11
D
an Car
p
enter
e
x
tra: shuffle smatc
h
_ext
r
a
.
h around
som
e
more
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2013-01-11
Dan
C
a
r
penter
esta
t
e: rename filte
r
_range
(
) to estat
e
_filter_ra
n
g
e()
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2013-01-11
Dan C
a
rpenter
estate
:
ren
a
me esta
t
e_ranges(
)
to estat
e
_rl()
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2013-01-11
Da
n
Carpenter
estate: rena
m
e is_
w
ho
l
e
_
range()
t
o estate_is_
w
hole()
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2013-01-11
Dan Carpen
t
e
r
estate: rename extra
_
u
n
define
d
() to alloc_estate_whole()
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2013-01-11
Dan Carpenter
e
s
tate: rename all
o
c
_
e
state_range_list
(
) to
a
lloc_estate_r
l
(
)
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2013-01-11
Dan Carpenter
estat
e
: rename al
l
o
c_es
t
at
e
()
to
alloc_estate_sval()
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2013-01-11
Dan Carpe
n
t
e
r
estate: shuffle stuff around in the he
a
der
f
ile
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2013-01-11
D
a
n C
a
rpenter
r
anges: rename free_range_lis
t
() t
o
f
r
ee_rl()
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2013-01-11
D
an Carpenter
r
an
g
e
s
: rename get_impli
e
d_rang
e
_list()
t
o get_implied
_
rl()
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2013-01-11
Da
n
Carpenter
ran
g
es:
rename
pus
h
_range_list() and
f
r
iends
to push_rl()
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2013-01-11
Da
n
Ca
r
penter
ranges: rename range_lists_equ
i
v
() to rl_
e
q
u
iv(
)
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2013-01-11
Dan Carp
e
nter
ranges
:
r
e
n
a
me possib
l
y_t
r
ue_range_lists() to possi
b
ly_true_
r
l()
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2013-01-11
Dan Carpenter
r
a
nges:
s
h
uffle sm
a
tch_extra
.
h around
s
ome more
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2013-01-11
D
a
n Carp
e
nter
ranges: rena
m
e t
r
ue_comparis
o
n_range
_
lr() to true_comparison
.
.
.
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2013-01-11
D
an
C
arpenter
ranges:
r
ename par
s
e_value_ranges_t
y
p
e() to str_to_rl()
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2013-01-11
Da
n
Carpen
t
er
r
anges: rename alloc_rang
e
_
lis
t
() and fri
e
nds t
o
alloc
_
r
l
()
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2013-01-11
Dan Carp
e
nter
ran
g
es
:
shuffle st
u
f
f around in the hea
d
er file and
.
.
.
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2013-01-11
Dan Carp
e
nter
ranges: rename range
_
list_union() to
r
l_union(
)
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2013-01-11
Dan Ca
r
penter
missi
n
g
_
break: fix a seg
f
ault
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2013-01-11
Dan Carpe
n
ter
sizeof: si
z
eof(ptr
*
nr_ptrs)
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2013-01-11
Dan
Ca
r
penter
sizeo
f
: check
f
or sizeo
f
(sizeof())
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2013-01-11
Da
n
Carpenter
sizeof: finish re
n
a
ming process
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2013-01-11
Dan Carp
e
nter
s
izeof: mv check_
s
i
zeof_p
o
inter
.
c check_s
i
zeof
.
c
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2013-01-11
Da
n
Carpen
t
er
token_store
:
sp
l
it ou
t
first_token_f
r
om_l
i
ne() into
.
.
.
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2013-01-11
Dan Carpenter
*
new* check_mi
s
sing_
b
reak
.
c
: check
for fall t
h
rough
.
.
.
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2013-01-10
Dan Carpen
t
e
r
type: get
_
member_type
_
fr
o
m_key() should take a
n
express
i
on
.
.
.
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2013-01-09
Dan Carpenter
par
a
m
_l
i
mit:
d
o
n't print e
m
pty states
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2013-01-08
Dan
Carpenter
parse
:
add "__restrict__" keyword
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2013-01-08
D
an Carpenter
ranges: sma
l
l speed up in range_lists_
e
q
uiv()
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2013-01-08
Dan
C
a
rpenter
db: make type_schem
a
a
bit smaller
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2013-01-08
D
a
n Carpenter
gen_paholes
.
sh: Don't do anythin
g
i
f
the necessary
.
.
.
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2013-01-08
Dan
C
a
r
penter
ext
r
a: don't o
v
er write cros
s
func
t
ion values
from
.
.
.
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2013-01-08
Dan Carpenter
db: extra: param_lim
i
t
/filter/set: redo value tracing
.
.
.
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2013-01-08
Dan
C
arpenter
e
xtra: create a callback for when s
m
atch_ex
t
r
a changes
.
.
.
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2013-01-08
Dan
C
a
rpen
t
er
extra:
c
r
eate set_extra_nomod()
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2013-01-07
D
an Carpenter
db: fixup pri
n
ting return info f
o
r dif
f
icult to split
.
.
.
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2013-01-07
Dan Carpenter
math: hand
l
e ORs bet
t
er i
n
handle_logical
(
)
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-12-19
Dan
Ca
r
penter
extra:
c
all set_extra_mo
d
() from s
e
t_extr_expr_m
o
d()
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-12-18
Dan Carpenter
db: h
a
ndle unchang
e
d
return_states better
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-12-18
Dan Carpent
e
r
param_limit
:
fix read beyond end
o
f ar
r
ay (segfault)
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-12-18
Dan Car
p
e
nter
signed: han
d
le
it when the ty
p
e is unknown
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-12-16
Dan Carpenter
db: make some va
r
c
ha
r
decalar
a
tion
s
smaller
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-12-16
D
a
n
Carpenter
signed: remove some
d
e
bug code
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-12-15
Dan Carpenter
db: make t
h
e size limit for t
h
e database
l
arger
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-12-15
Dan Carpenter
param_limit: don't
p
r
int unneed
e
d informat
i
on
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-12-14
Dan Carpe
n
ter
db: remove return_
i
mplies
table and re
l
ated code
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-12-14
Da
n
Carp
e
n
ter
smatch
_
para
m
_limit
:
ex
t
r
a
: store paramet
e
r implications
.
.
.
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-12-14
Dan Carpe
n
ter
db
:
print retur
n
_
stat
e
s informa
t
ion in a mor
e
d
e
tail
e
d way
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-12-14
Dan Carpen
t
er
implied: int
r
oduc
e
overwrite_states_usin
g
_
pool()
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-12-14
Dan Carpenter
states:
fix __set_sm()
w
hen a fake_cur_slist is
being
.
.
.
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-12-14
Dan Carpent
e
r
function_ho
o
k
s
: a
d
d some calls to __unnu
l
lify_pat
h
()
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-12-14
Dan Carpenter
ranges: intro
d
uc
e
rl_
i
nvert(), rl
_
filter() and
rl_
i
ntersection()
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-12-14
Dan Carpenter
extra: fi
x
a bug in how poin
t
ers
a
re s
e
t inside ca
l
led
.
.
.
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-12-14
Dan Carpenter
estate: introd
u
ce get_implied_estate()
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-12-14
Dan Carp
e
nter
extr
a
:
estate: move merge_
e
s
tate() from
extra to estate
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-12-14
Da
n
Carpenter
e
xtra: pars
e
as
m
and unops af
t
er e
v
eryon
e
el
s
e
is fi
n
ished
.
.
.
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-12-14
Dan Carpenter
pointer_math: che
c
k for (int *)p += s
i
z
e
of(int);
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-12-10
D
a
n
C
arpen
t
er
tre
e
wide: fix some memory leaks
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-12-10
Dan Carpenter
Revert
"
c
onstraint
s
: fix bu
g
in remove_
f
rom_equiv()"
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-12-08
Da
n
Carpenter
s
l
i
st: fix
some d
e
bug
code
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-12-08
Da
n
Car
p
enter
s
l
ist
:
com
p
ile error in debug code
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-12-08
Dan Carpenter
constraint
s
: fix a memory leak
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-12-08
Dan
Carpe
n
t
e
r
constraints: fix bug in remove_from_eq
u
i
v
()
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-12-08
Dan Carpenter
c
o
nstra
i
nt
s
: use
c
mp_rel
a
ti
o
n
(
)
instead of custom
code
.
.
.
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-12-07
Da
n
Carpenter
conditio
n
s: rework
_
_is_condition
_
assign() => is_condition()
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-12-06
Dan C
a
rpenter
db: remove get_ret
u
rn_id()
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-12-05
Dan C
a
r
p
e
nter
pars
e
_call_math:
u
pdate to new return_stat
e
s
API
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-12-05
Dan Carpenter
user_da
t
a: move to the return_sta
t
es API
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-12-05
Dan Carpen
t
er
ext
r
a: m
o
v
e
retur
n
_value
_
param to
t
h
e new re
t
urn_state
s
API
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-12-05
Dan
C
arpenter
s
tates: i
n
troduce get_all_state_slist()
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-12-05
Da
n
Carpenter
db: c
a
l
l
re
t
ur
n
_st
a
tes at the
e
nd of the
f
unction if
.
.
.
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-12-05
Dan Carpenter
d
b
: fix ret
u
rn ranges for t
h
e return_states
c
a
llbacks
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-12-05
D
an Carpenter
db
:
change print_returned_struct_members()
to new API
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-12-05
Dan Carp
e
n
t
er
db
:
intro
d
u
c
e
add
_
returned_state_ca
l
lback()
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-12-05
D
an Carpenter
db: p
a
ss th
e
retur
n
_id to the struct me
m
ber callbacks
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-12-05
D
a
n Carpenter
modification_ho
o
ks:
h
and
l
e inline assembly
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-12-05
Dan
Carpenter
i
n
fo: dereferences_par
a
m
:
print the dereferences even
.
.
.
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-12-03
Dan Carpenter
db: ha
n
d
l
e
global
funct
i
o
n
assignments
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-11-30
D
a
n
Carpen
t
er
extr
a
: info: don't print empty states
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-11-29
Da
n
C
a
rpe
n
te
r
absolu
t
e
:
use get_implied_min() i
n
stead of get_implied_value()
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-11-29
Da
n
Carpenter
extra: s
a
ve
m
o
r
e modified p
o
inters
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-11-28
Dan Carpen
t
er
db
:
change sm
d
b_return_info
.
sh to smdb_
r
etu
r
n
_values
.
sh
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-11-28
Dan Carpenter
extra:
d
b
:
r
ecord
w
he
n
people modif
y
point
e
rs passed
.
.
.
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-11-28
D
a
n Carpen
t
er
extra: move --info hooks l
a
ter
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-11-28
Dan Carpenter
db: move free_slis
t
() inside the loop and fix a m
e
mo
r
y
.
.
.
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-11-28
Dan Ca
r
penter
h
e
lper:
i
ntroduce
get_pa
r
am_num_from_sym()
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-11-27
Dan Carpenter
d
b
:
save struct mem
b
er values a
c
ross returns
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-11-27
Dan Ca
r
penter
type: rename get_param_type_from_key() => get
_
member_type_fr
.
.
.
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-11-26
Dan C
a
rpenter
flow: implied: fix
how switch statem
e
nts
a
re handled
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-11-26
D
an Ca
r
pent
e
r
g
enerisi
z
e
.
pl: remove
u16max and friends
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-11-26
Dan Carpe
n
ter
ex
t
ra
:
tweak
h
andling of absol
u
te min/max i
n
c
o
mparisons
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-11-26
Dan Carpenter
math: ignor
e
fuzzy maxes that a
r
e
type_min
(
)
+
1
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-11-26
D
an C
a
rpenter
m
a
th: overflow i
m
p
l
ie
s
that there is no fu
z
zy max
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-11-23
Dan Carpenter
m
a
th: overflows in hard max are u
n
define
d
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-11-23
Dan
C
arpenter
ex
t
ra
:
han
d
le loops whe
r
e
w
ith
o
ut a ha
r
d
m
ax
that don
.
.
.
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-11-23
Dan Carpenter
extra:
clear hard max if we a
r
e f
a
lling
b
a
c
k
t
o the
.
.
.
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-11-23
Dan
C
a
rpenter
e
x
tra:
g
et max corre
c
tl
y
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
2012-11-23
D
an Carp
e
nter
ex
t
r
a
: set h
a
rd max correctly in lo
o
ps
Signed-off-by:
Dan Carpenter
<dan.carpenter@oracle.com>
commit
|
commitdiff
|
tree
next