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
states: fix __set_sm() when a fake_cur_slist is being used
2012-12-14
Dan Carpenter
states: fi
x
__set_sm() whe
n
a fake_cur_s
l
i
st is being
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-12-14
Dan C
a
rpenter
function
_
hoo
k
s: add some cal
l
s
to _
_
unnullify_p
a
th()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-12-14
D
an Ca
r
penter
ranges: int
r
oduce rl_invert
(
), rl_filter() and r
l
_intersection()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-12-14
Dan Ca
r
pe
n
te
r
e
xtra: fix a
b
ug in ho
w
pointers are s
e
t in
s
id
e
cal
l
e
d
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-12-14
Dan Carpenter
estate: i
n
troduc
e
get_implied
_
estate()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-12-14
Dan Car
p
en
t
er
extra
:
estate: m
o
ve merge_estate()
f
rom e
x
tra to es
t
ate
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-12-14
Dan Car
p
enter
extra: parse asm and unops after
e
veryone e
l
s
e
is fini
s
hed
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-12-14
Dan C
a
r
p
en
t
er
po
i
n
t
er_math: check
for
(int
*)p += sizeof(
i
nt);
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-12-10
Dan Ca
r
penter
treewide:
fix so
m
e
m
em
o
ry leaks
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-12-10
Dan Carpenter
Rev
e
rt "cons
t
raints: fix
bu
g
i
n
remo
v
e_from_equiv()
"
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-12-08
Dan
Carpenter
slist: fix some debug code
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-12-08
D
a
n Carpenter
slist: compi
l
e error i
n
de
b
ug code
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-12-08
Dan C
a
rpenter
constraints: fi
x
a memory
l
eak
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-12-08
Dan
C
arpenter
con
s
traints
:
fix bug in remove_from
_
equiv()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-12-08
Dan
C
ar
p
enter
constraints:
u
s
e cmp_re
l
ation() inst
e
ad of
custom code
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-12-07
Dan Carpen
t
er
condit
i
o
ns: r
e
work __is_co
n
dition_a
s
s
ign
(
) => is_condition()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-12-06
Dan Carpe
n
ter
db: remov
e
get
_
return_id()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-12-05
Dan Carp
e
nter
parse_c
a
l
l
_math: update
t
o
new retur
n
_states API
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-12-05
D
an Carpenter
user_data: move to the
return_states API
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-12-05
Dan Carpente
r
extra:
m
ove
r
eturn_
v
alue_para
m
to th
e
n
ew return_states API
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-12-05
Dan Car
p
enter
st
a
tes: in
t
r
odu
c
e
g
et_all
_
s
t
ate_slist()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-12-05
D
a
n Carpenter
db
:
call return
_
states
at th
e
e
n
d
of the
function
i
f
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-12-05
Da
n
Carpenter
d
b
:
f
i
x return ra
n
ges for the
r
e
turn_states
callba
c
k
s
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-12-05
Dan
C
arpent
e
r
db: cha
n
ge print_retur
n
ed
_
struct_members() to new
A
PI
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-12-05
Dan Carpente
r
d
b
: introduc
e
a
dd_retur
n
ed_state_callb
a
ck()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-12-05
Da
n
Carpenter
d
b: pass t
h
e
return_id to the struc
t
member ca
l
lbacks
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-12-05
D
a
n Carpenter
modification_h
o
o
k
s: handle inlin
e
assembly
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-12-05
D
a
n Carpe
n
ter
info: dereferences_para
m
:
p
rint the d
e
refe
r
ences even
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-12-03
Dan Ca
r
penter
d
b
: han
d
le global functi
o
n
assignme
n
ts
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-30
Dan Carpenter
extra:
i
nfo: don'
t
print
empty
states
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-29
Dan Carpenter
absolute: use
g
et_
i
mp
l
ied_min() instead of get_impli
e
d_value()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-29
Dan Carpenter
extra:
s
ave
more modified poin
t
ers
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-28
D
a
n Carpen
t
e
r
db:
change smd
b
_ret
u
r
n_info
.
s
h
to sm
d
b_return_value
s
.
sh
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-28
D
a
n Carpe
n
ter
extra: db: record
w
he
n
people modify poi
n
te
r
s
passed
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-28
D
an Ca
r
penter
ex
t
ra: m
o
v
e
--inf
o
hooks late
r
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-28
Dan C
a
rpenter
db: mov
e
f
r
ee_slist() inside the loop and fi
x
a memory
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-28
Dan Carpenter
helper: intr
o
duce get_para
m
_
n
um_from_sy
m
(
)
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-27
Dan Ca
r
penter
db: save s
t
r
uct membe
r
values across ret
u
rns
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-27
Dan Ca
r
penter
type: rename g
e
t_param_type_from_key() =>
get_member_t
y
pe
_
fr
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-26
Dan Carpenter
f
low: i
m
plied:
f
i
x h
o
w switch statements are handled
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-26
D
an Carpenter
g
eneri
s
ize
.
pl: remo
v
e
u16max and
f
riends
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-26
Dan
C
arpente
r
e
x
tra: tweak handling
o
f absolute
m
i
n/max i
n
c
omparisons
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-26
Dan
C
arpen
t
er
m
a
th: igno
r
e fuzzy
m
a
xes tha
t
a
r
e type_
m
in() + 1
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-26
D
an
Carpenter
math: ov
e
rfl
o
w implies
t
ha
t
there is no fuzzy max
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-23
Dan C
a
rp
e
n
ter
m
a
th
:
o
verflows in
h
ard
m
a
x
are u
n
def
i
ned
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-23
Dan
C
ar
p
enter
extra: handle l
o
ops where without a h
a
rd max tha
t
don
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-23
Dan
C
a
rp
e
n
t
er
e
xtra: clear hard max if we are falling back to the
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-23
Dan Carpen
t
e
r
extra
:
get max correc
t
ly
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-23
Dan
C
arpenter
extra: s
e
t
hard max
co
r
rec
t
l
y in loops
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-23
Da
n
Carpenter
ex
t
ra:
if
(unsigned >= unsigned) {: Always true if
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-23
Dan
Carpenter
math:
check for ov
e
rflow
s
when ca
l
culating the m
a
x
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-23
D
an
Car
p
ente
r
conditions: pre
s
e
r
ve
t
he
t
ype
i
n
s
elect a
s
signments
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-23
Dan Carpen
t
e
r
t
y
pe: cleanp get
_
member_symbol()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-23
Dan Ca
r
pent
e
r
extra: type:
ge
t
the mem
b
er type when loading val
u
es
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-23
Dan Carpe
n
te
r
de
b
ug:
add __smatch_de
b
ug_i
m
plied
_
on/off()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-23
Dan Ca
r
pen
t
er
debug:
introdu
c
e loc
a
l_debug
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-23
Dan Carpenter
extra:
r
everse max()/min() test
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-21
D
an Ca
r
penter
sv
a
l: handl
e
canonic
a
l for loo
p
s dif
f
erentl
y
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-21
Dan
C
a
rpenter
sval: convert SHRT
_
MAX
t
o s16m
a
x in the output
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-21
Dan
C
arpenter
function_hooks: c
o
nsider the
r
eturn ty
p
e of
the function
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-21
D
an Carpenter
extra: rem
o
ve
s
ome duplicate c
o
de
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-20
Da
n
Carpenter
math: change how MOD operat
i
ons are handled
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-20
D
a
n C
a
rpenter
math: count some more things as implied
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-20
D
a
n Carpenter
extra: type: move get_
a
r
g
e_type() to smatch
_
type
.
c
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-20
Da
n
C
ar
p
ente
r
extr
a
:
math: move
get_implied_range_list() t
o
sm
a
tch_math
.
c
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-20
Dan Carpenter
sval
:
e
x
tra: get_implied_range
_
lis
t
() return whole
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-20
D
an
C
a
rpenter
scripts: t
r
ace params us
e
4
space
i
ndents
consistently
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-19
D
a
n Carpenter
s
v
al: math: fix get_value
(
) for !foo
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-19
Dan
Carpen
t
e
r
ch
e
ck_s
i
z
eof_point
e
r: compl
a
in abo
u
t s
i
zeof(&foo)
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-19
Dan
Carpente
r
h
o
o
ks
:
add
a
SI
Z
E
O
F_HOOK
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-19
Dan Carpenter
sval: make c
a
s
t
_
r
l() p
r
eserve things better
a
cro
s
s
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-19
Dan
Carpenter
sval:
t
y
p
e: handle ty
p
e_b
i
t
s
() for addresses
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-19
D
a
n Carpenter
s
v
a
l:
t
ype: us
e
type_bits(
)
throu
g
h
o
u
t
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-19
Dan Carpe
n
ter
sval: fixup
c
alls to sval
_
cmp_val()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-19
Dan Carpenter
s
v
a
l: type: hack selec
t
types
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-19
Dan Carpenter
extra:
r
e
m
ove de
b
ugging output
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-19
Dan Carpenter
sval: add sval_i
s
_negative()/
p
ositive
(
)
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-19
Dan Carpenter
sval: t
a
ke the
type into consideratio
n
when doing an
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-19
Dan C
a
rp
e
nter
sval: cast things correct
l
y in
sv
a
l_cmp()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-17
Dan Carpenter
flow: ho
o
ks: fix MACRO_ASSI
G
NM
E
NT_HOOK
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-17
Dan Carpent
e
r
flow: hooks: introduce
G
L
OBAL_ASSIGNME
N
T_HOOK
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-17
Dan C
a
rpenter
sval:
i
n
troduce sval
_
bits_used
(
)
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-15
Dan Carpenter
type: intr
o
duce t
y
pe_bits()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-15
Dan Carpenter
M
e
rge branch 's
v
a
l' into merge
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-15
Dan Carpenter
sval: rang
e
s:
s
et correct m
a
x
i
n cast_rl(
)
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-15
D
a
n
C
arpenter
sval:
db: cas
t
p
a
r
a
meters t
o
th
e
corre
c
t type before
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-15
Dan Ca
r
pe
n
ter
sval: extra: handle assignm
e
nts bet
t
e
r
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-15
Dan Carpenter
s
val
:
c
a
s
t
the return types befo
r
e
e
ntering them
i
nto
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-15
Dan Carpent
e
r
sval: extr
a
: type information was bei
n
g
los
t
i
n ++
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-15
Dan Carp
e
nter
sval: flip
t
he swi
t
ch
a
nd
d
on't use s32mi
n
-s
3
2max ins
t
ead
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-15
Dan
C
arpe
n
ter
sval:
signed: fix validation test and updat
e
format
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-15
Dan Ca
r
penter
validatio
n
:
s
i
g
ned: upda
t
e
va
l
i
d
ation test to reflec
t
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-14
Dan
Carpenter
math: cleanup
s
ome n
a
min
g
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-14
Dan Car
p
e
n
ter
math
:
ad
d
fuzz
y
_max a
n
d fuz
z
y
_
m
i
n to implied_
o
p
p
osi
t
e()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-14
Dan Carpenter
sval: math: fix how negate opera
t
ions are h
a
n
dle
d
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-14
D
a
n Car
p
ente
r
s
v
a
l
:
a
b
so
l
ute:
fix reverse
d
condition
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-13
D
an C
a
rpen
t
er
sval: you're not allo
w
ed to divide LL
O
NG_MIN b
y
-1
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-13
Dan Carpenter
sval:
f
ix pa
r
se_val
u
e_ranges_type()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-13
Dan
C
arpe
n
ter
sval: re-introduce
s
val_is_a_min() s
v
al_is_a_max
(
)
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-11-13
Dan C
a
rp
e
nter
sval: don
'
t inv
e
nt bo
g
u
s
range i
n
alloc_range_helper_s
v
a
l()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
next