Skip to content

Commit d183a88

Browse files
committed
Fixed uninit warning, gave up on err < 0 compiler guidance
In lfs3_mdir_namelookup, when compiling with LFS3_2BLOCK, there was an uninitialized variable warning that just wouldn't go away (temporarily disabled with the x=x hack). So, giving up on the err < 0 compiler guidance since it apparently doesn't work. Instead lfs3_rbyd_namelookup and lfs3_btree_namelookupleaf unconditionally initialize the problematic variables before their main loops. This adds a bit of code, but fighting the compiler just isn't worth the headache: code stack ctx before: 37836 2416 636 after: 37864 (+0.1%) 2416 (+0.0%) 636 (+0.0%)
1 parent ccfc74a commit d183a88

1 file changed

Lines changed: 40 additions & 15 deletions

File tree

lfs3.c

Lines changed: 40 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1395,7 +1395,7 @@ static lfs3_ssize_t lfs3_bd_readtag(lfs3_t *lfs3,
13951395

13961396
int err = lfs3_bd_read(lfs3, block, off, hint,
13971397
tag_buf, tag_dsize);
1398-
if (err < 0) {
1398+
if (err) {
13991399
return err;
14001400
}
14011401

@@ -1577,7 +1577,7 @@ static lfs3_ssize_t lfs3_bd_progtag(lfs3_t *lfs3,
15771577

15781578
int err = lfs3_bd_prog(lfs3, block, off, tag_buf, d,
15791579
cksum, align);
1580-
if (err < 0) {
1580+
if (err) {
15811581
return err;
15821582
}
15831583

@@ -1722,7 +1722,7 @@ static lfs3_ssize_t lfs3_data_read(lfs3_t *lfs3, lfs3_data_t *data,
17221722
lfs3_data_size(*data),
17231723
buffer, d,
17241724
lfs3_data_cksize(*data), lfs3_data_cksum(*data));
1725-
if (err < 0) {
1725+
if (err) {
17261726
return err;
17271727
}
17281728
#endif
@@ -1733,7 +1733,7 @@ static lfs3_ssize_t lfs3_data_read(lfs3_t *lfs3, lfs3_data_t *data,
17331733
// note our hint includes the full data range
17341734
lfs3_data_size(*data),
17351735
buffer, d);
1736-
if (err < 0) {
1736+
if (err) {
17371737
return err;
17381738
}
17391739
}
@@ -1870,7 +1870,7 @@ static lfs3_scmp_t lfs3_data_namecmp(lfs3_t *lfs3, lfs3_data_t data,
18701870
// first compare the did
18711871
lfs3_did_t did_;
18721872
int err = lfs3_data_readleb128(lfs3, &data, &did_);
1873-
if (err < 0) {
1873+
if (err) {
18741874
return err;
18751875
}
18761876

@@ -4569,7 +4569,7 @@ static lfs3_ssize_t lfs3_rbyd_estimate(lfs3_t *lfs3, const lfs3_rbyd_t *rbyd,
45694569
int err = lfs3_rbyd_lookupnext(lfs3, rbyd,
45704570
a_rid, tag+1,
45714571
&rid_, &tag, &weight_, &data);
4572-
if (err < 0) {
4572+
if (err) {
45734573
if (err == LFS3_ERR_NOENT) {
45744574
break;
45754575
}
@@ -4876,6 +4876,17 @@ static lfs3_scmp_t lfs3_rbyd_namelookup(lfs3_t *lfs3, const lfs3_rbyd_t *rbyd,
48764876
return LFS3_ERR_NOENT;
48774877
}
48784878

4879+
// compiler needs this to be happy about initialization in callers
4880+
if (rid_) {
4881+
*rid_ = 0;
4882+
}
4883+
if (tag_) {
4884+
*tag_ = 0;
4885+
}
4886+
if (weight_) {
4887+
*weight_ = 0;
4888+
}
4889+
48794890
// binary search for our name
48804891
lfs3_srid_t lower_rid = 0;
48814892
lfs3_srid_t upper_rid = rbyd->weight;
@@ -4890,7 +4901,7 @@ static lfs3_scmp_t lfs3_rbyd_namelookup(lfs3_t *lfs3, const lfs3_rbyd_t *rbyd,
48904901
// of a weighted rid with this
48914902
lower_rid + (upper_rid-1-lower_rid)/2, 0,
48924903
&rid__, &tag__, &weight__, &data__);
4893-
if (err < 0) {
4904+
if (err) {
48944905
LFS3_ASSERT(err != LFS3_ERR_NOENT);
48954906
return err;
48964907
}
@@ -6122,6 +6133,20 @@ static lfs3_scmp_t lfs3_btree_namelookupleaf(lfs3_t *lfs3,
61226133
return LFS3_ERR_NOENT;
61236134
}
61246135

6136+
// compiler needs this to be happy about initialization in callers
6137+
if (bid_) {
6138+
*bid_ = 0;
6139+
}
6140+
if (rid_) {
6141+
*rid_ = 0;
6142+
}
6143+
if (tag_) {
6144+
*tag_ = 0;
6145+
}
6146+
if (weight_) {
6147+
*weight_ = 0;
6148+
}
6149+
61256150
// descend down the btree looking for our name
61266151
*rbyd_ = *btree;
61276152
lfs3_bid_t bid = 0;
@@ -6146,7 +6171,7 @@ static lfs3_scmp_t lfs3_btree_namelookupleaf(lfs3_t *lfs3,
61466171
int err = lfs3_rbyd_lookup(lfs3, rbyd_, rid__,
61476172
LFS3_TAG_MASK8 | LFS3_TAG_STRUCT,
61486173
&tag__, &data__);
6149-
if (err < 0) {
6174+
if (err) {
61506175
LFS3_ASSERT(err != LFS3_ERR_NOENT);
61516176
return err;
61526177
}
@@ -6160,7 +6185,7 @@ static lfs3_scmp_t lfs3_btree_namelookupleaf(lfs3_t *lfs3,
61606185
// fetch the next branch
61616186
int err = lfs3_data_fetchbranch(lfs3, &data__, weight__,
61626187
rbyd_);
6163-
if (err < 0) {
6188+
if (err) {
61646189
return err;
61656190
}
61666191

@@ -6557,15 +6582,15 @@ static lfs3_ssize_t lfs3_bshrub_estimate(lfs3_t *lfs3,
65576582
lfs3_data_t data;
65586583
int err = lfs3_mdir_lookup(lfs3, &bshrub->o.mdir, LFS3_TAG_BSHRUB,
65596584
&tag, &data);
6560-
if (err < 0 && err != LFS3_ERR_NOENT) {
6585+
if (err && err != LFS3_ERR_NOENT) {
65616586
return err;
65626587
}
65636588

65646589
if (err != LFS3_ERR_NOENT) {
65656590
lfs3_shrub_t shrub;
65666591
err = lfs3_data_readshrub(lfs3, &data, &bshrub->o.mdir,
65676592
&shrub);
6568-
if (err < 0) {
6593+
if (err) {
65696594
return err;
65706595
}
65716596

@@ -8296,7 +8321,7 @@ static lfs3_ssize_t lfs3_mdir_estimate__(lfs3_t *lfs3, const lfs3_mdir_t *mdir,
82968321
int err = lfs3_rbyd_lookupnext(lfs3, &mdir->rbyd,
82978322
a_rid, tag+1,
82988323
&rid_, &tag, NULL, &data);
8299-
if (err < 0) {
8324+
if (err) {
83008325
if (err == LFS3_ERR_NOENT) {
83018326
break;
83028327
}
@@ -8318,7 +8343,7 @@ static lfs3_ssize_t lfs3_mdir_estimate__(lfs3_t *lfs3, const lfs3_mdir_t *mdir,
83188343

83198344
lfs3_shrub_t shrub;
83208345
err = lfs3_data_readshrub(lfs3, &data, mdir, &shrub);
8321-
if (err < 0) {
8346+
if (err) {
83228347
return err;
83238348
}
83248349

@@ -9339,8 +9364,8 @@ static int lfs3_mdir_namelookup(lfs3_t *lfs3, const lfs3_mdir_t *mdir,
93399364
return LFS3_ERR_NOENT;
93409365
}
93419366

9342-
lfs3_srid_t rid = rid; // TODO
9343-
lfs3_tag_t tag = tag; // TODO
9367+
lfs3_srid_t rid;
9368+
lfs3_tag_t tag;
93449369
lfs3_scmp_t cmp = lfs3_rbyd_namelookup(lfs3, &mdir->rbyd,
93459370
did, name, name_len,
93469371
&rid, &tag, NULL, data_);

0 commit comments

Comments
 (0)